关于管理编程社网站的知识与技巧(自用,必看)


关于管理编程社网站的知识与技巧(自用,必看)

最近呢,咱们编程社的网站终于是又修好了。趁着这个机会,笔者决定是要写一篇攻略,专门用于了解与锻炼建立网站的能力。所以,如果现在是你在管理编程社的网站,这些东西一定要看,以备不时之需。

索引:

目录
  • 关于管理编程社网站的知识与技巧(自用,必看)
    • 1. 使用LAMP建立网站
      • 1.1 建站所需要的东西
      • 1.2 关于LAMP的总览和攻略推荐
      • 1.3 开始安装LAMP
        • 1.3.1 使用CentOS7作为Linux系统
        • 1.3.2 连接到你的服务器
        • 1.3.3 安装PHP
        • 1.3.4 安装Apache
        • 1.3.5 安装MariaDB
    • 2. 添加wordpress
      • 2.1 介绍wordpress
      • 2.2 下载wordpress
      • 2.3 导入wordpress
        • 2.3.1 上传wordpress文件
          • 2.3.1.1 下载FileZilla
          • 2.3.1.2 使用FileZilla
        • 2.3.2 解压wordpress压缩包
          • 2.3.2.1 解压.zip压缩包
          • 2.3.2.2 解压.tar.gz压缩包
        • 2.3.3 装载wordpress
        • 2.3.4 给文件夹授权
      • 2.4 安装wordpress
    • 3. LAMP的进阶操作
      • 3.1 为80端口配置虚拟主机
        • 3.1.1 为网站加上域名
        • 3.1.2 在配置文件中设置域名
      • 3.2 为网站配置ssl证书
        • 3.2.1 申请免费证书
          • 3.2.1.1 使用letsencrypt证书
          • 3.2.1.2 使用阿里云免费ssl证书
        • 3.2.2 安装证书
          • 3.2.2.1 安装ssl模块
          • 3.2.2.2 为443端口添加虚拟主机
          • SakuraFrp。也不贵(目前),至少比服务器便宜,反正编程社电费不要钱。
            为了方便讲解,本攻略主要以试用的云服务器为例子,请自行为你的服务器套上外网映射。
            另外,你也可以直接去阿里云的体验站体验一个小时的建站流程。阿里云基于ECS搭建LAMP体验

            基于ECS搭建云上博客(体验时间更长些)

            1.2 关于LAMP的总览和攻略推荐

            如果你很不幸,把网站搞砸了,或者是你想自己练习一下从头建站,那么请从这里开始看起。
            LAMP全称“Linux, Apache, Mysql, PHP”,是建站必须要的。有关于LAMP搭建过程我不会过多描述,这里推荐一些攻略结合我的补充去看:

            • 编程社原生LNMP攻略(方笛)
            • 手把手教你搭建LAMP(CSDN)

            1.3 开始安装LAMP

            1.3.1 使用CentOS7作为Linux系统

            你既然再看这篇文章,应该不至于不知道Linux和CentOS是什么东西吧。不知道的赶紧回去恶补。
            作为操作系统,笔者首选的就是CentOS。去年笔者使用了CentOS8作为操作系统,可惜因为不熟悉以及CentOS8退出了历史舞台,笔者走了很多弯路,以至于现在才修好网站。而CentOS7就会稳定很多,所以你现在需要准备一个CentOS7的镜像并把它装到电脑里,或者在购买云服务器的时候选择CentOS7。为了方便,你可以选择安装带GUI的服务器。
            这里是推荐下载的镜像站,建议使用迅雷下载(至少快10倍,不需要会员)。
            阿里云镜像站CentOS7(点击下载)

            1.3.2 连接到你的服务器

            你要在服务器上安装网站,你首先就要连接到你的服务器。我们用的是ssh连接法,方便极了。
            关于ssh如何连接我不想多说什么,但是还是有几点需要注意:

            1. 记得给你的服务器开放22端口,不然根本连接不进来。
            2. 如果你用的是实体机,记得外网映射你的22端口,然后记住映射出的远程端口。
            3. ssh连接命令是
            ssh root@ssh.cycode.club #使用云服务器并且绑定好了ssh的域名解析
            ssh -p xxxxx root@ssh.cycode.club #使用实体机并用域名绑定好了映射ip,xxxxx是远程端口
            
            1. 我经常使用的ssh软件是git bash,非常好用,要资源的我这里直接放迅雷下载。
              git下载(提取码8wcm)

            1.3.3 安装PHP

            在安装之前,我们先要注意一下,CentOS7的yum源直接下载php最新版本是很难的,所以我们要换一下源。
            参考资料:linux服务器将php5.6升到7.4
            我们连接到服务器上,然后开始安装php
            先进行换源:

            yum -y install epel-release
            yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
            yum -y install yum-utils
            yum-config-manager --enable remi-php74
            

            注意最后那个php74可以改成目前最新版本,如php73,反正目前就只有74。但是其实php已经出到8了,但不用管,够用了。
            然后就是安装php

            yum install php php-opcache php-xml php-mcrypt php-gd php-devel php-mysql php-intl php-mbstring php-common php-cli php-gd php-curl -y
            

            然后你就可以验证一下php了

            [root@iZuf6d7qoheo08v6guxb7uZ ~]# php -v
            PHP 5.4.16 (cli) (built: Apr  1 2020 04:07:17) 
            Copyright (c) 1997-2013 The PHP Group
            Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
                with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies
            

            php安装完成!!!

            1.3.4 安装Apache

            安装apache会稍微简单一些,使用yum安装。

            yum -y install httpd
            

            然后你就可以检查安装版本了:

            [root@iZuf6hfqz99p7jcm2vgx2yZ ~]# httpd -v
            Server version: Apache/2.4.6 (CentOS)
            Server built:   Mar 24 2022 14:57:57
            

            完成之后我们就要给它安装系统服务,让他能开机自启:

            systemctl enable httpd && systemctl start httpd
            

            然后apache应该就启动成功了

            好的,apache能启动,我们就先把它放一边了。

            • 注意:Apache的默认站点位于“/var /www/html”

            1.3.5 安装MariaDB

            对于数据库,我们一般用的是mysql,但是现在它已经变了,我们有了一个不错的新选择,那就是MariaDB。它的语法和文件存储位置和mysql几乎一样,所以不用担心学了MariaDB而不会mysql了。
            执行命令:

            yum -y install mariadb-server
            

            安装完成,设置开机自启

            systemctl enable mariadb && systemctl start mariadb
            

            然后我们就可以初始化数据库

            mysql_secure_installation
            
            • 这一段我不想再赘述太多,你们自己进入这个网页去看,把MariaDB装好来。手把手教你搭建LAMP(CSDN)
            • 一定要测试一下你能不能连接到数据库,这很重要,随后记住账户密码(账户一般是root,也可以跟随网上教程创立新的账户,这些要在后面建立wordpress博客站的时候用到

            2. 添加wordpress

            2.1 介绍wordpress

            wordpress是一个建立博客网站的好帮手,有了它,不用学会php或者JavaScript也可以建立如同本站一样的网站。wordpress本质上是一个文件夹,你要把他放进 /var/www/html中就可以使用了。

            2.2 下载wordpress

            为了方便,我们可以在windows上先给他下载好在传进服务器里面。这里有一些下载渠道
            官网下载:中文版wordpress
            迅雷网盘:迅雷网盘(提取码nega)
            由于我的网盘目前是最新版,但是不可能去给网盘继续更新内容,所以我的建议还是去官网下载,中文版方便一些,但是下载速度实在是感人,所以用迅雷下载官网文件是我最推荐的,几秒就下载好了。

            2.3 导入wordpress

            2.3.1 上传wordpress文件

            2.3.1.1 下载FileZilla

            如果没有问题,你现在下载下来的应该就是一个压缩包,请注意这个文件的后缀名,可能是.tar.gz,也可能是.zip。先不要管是什么,咱们要先想办法把它丢进垃圾桶里面。好吧,咱们要上传它。
            我在这里推荐一个工具,叫做FileZilla,是使用ssh协议传输文件的,采用GUI界面,对新手友好。这里就直接放官网链接:

            • FileZilla官网
            • 32位绿色版下载地址(点击下载)

            选择绿色版会方便很多,因为这玩意不需要什么注册表,只是个工具。
            注意:不要下载服务器Server版本,那是给服务器用的,你下载客户端Client版本就可以了

            2.3.1.2 使用FileZilla

            把FileZilla放在一个容易记的位置,然后就可以打开它。稍微摸索一下,你就在那里连接上服务器,应该不会有人不会这些操作吧
            然后你就可以开始上传了,使用界面大致如下图所示:

            然后你就可以看一下如何了

            [root@server ~]# pwd
            /root
            [root@server ~]# ls downloads/
            wordpress-5.9.3-zh_cn.zip
            

            上传完成!

            2.3.2 解压wordpress压缩包

            你可以看见,这是一个压缩包,但是我们要把它解压开来。正如之前所说的,他可能是两个格式,我这里只讲如何解压.zip格式的压缩包。那还不是因为大家都选择官网上面最大的那个按钮

            2.3.2.1 解压.zip压缩包

            众所周知,linux本身是不支持.zip格式的文件的,那是给windows用的。但是软件这个东西谁也说不好,这不,就有一个unzip的软件,我们直接来用。

            yum -y install unzip
            

            然后进入你上传的目录,直接解压

            cd /root/downloads #这个是我放压缩包的目录,你自己注意一下
            unzip wordpress-5.9.3-zh_cn.zip -d . #解压到当前目录
            ls #看一下是不是多了一个文件夹
            
            • 由于文件名很长,在解压的时候记得使用tab补全
            2.3.2.2 解压.tar.gz压缩包

            我不多说,你自己去看教程,大同小异

            2.3.3 装载wordpress

            我们知道,apache网站的文件目录是在/var/www/html下面,我们以后当然可以改,而且尽量要改,但是现在先这样。直接把wordpress文件夹复制到那里:

            cd /root/downloads #是自己处在压缩包的位置
            cp -r wordpress/* -t /var/www/html/ #将里面的文件全部复制到网站根目录
            

            然后我们重启服务器看一下:

            apachectl restart #重启apache
            

            然后你再次访问网站,就可以看见wordpress的安装界面了

            2.3.4 给文件夹授权

            在安装前,我们要先做一件事,就是把/var/www/html这个文件夹归为apache所有,这样能省很多事,要不然这个权限不够,那个无法写入,真的很烦人。
            直接上命令

            cd /var/www/
            ls -a #显示详细信息,一般我们可以直接用ll作为命令
            #不用看了,肯定左半边两大列的root
            chown -R apache:apache . #将整个文件夹全归apache所有
            ls -a #用ll再看一次,是不是全是apache了?
            

            2.4 安装wordpress

            终于来到最重要的安装环节了,我们直接访问网站

            设置好一切,点击确定,然后你就会惊喜地发现——失败了。
            其实是这样的,第一行的数据库名是要填写一个存在的空数据库,他不会帮我们建立,那我们就自己来。
            直接连接到数据库:mysql -u root -p
            然后就直接建立数据库:

            CREATE DATABASE wordpress;
            

            然后就可以了,点击确定重新安装wordpress
            但是问题是,他又弹出来无法写入,这就很麻烦。你需要把它复制进里面。

            cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
            vim /var/www/html/wp-config.php
            

            注意vim的用法
            然后你就可以修改里面的东西,应该不难

            最后点击继续,可以看到,我们的wordpress已经安装完成,准备就绪了。

            3. LAMP的进阶操作

            关于LAMP,我们只能说是 “装好了”,但是它属实不太好用,我们多半还是要配置的。举个例子:有的服务器它不止运行一个网站,有好几个网站,但是总不可能所有的文件全部都往/var/www/html里面丢吧,所以,我们就有了很多事情要做。

            3.1 为80端口配置虚拟主机

            众所周知,http传输协议使用的是80端口,如果你的防火墙不开放80端口,那么你压根就无法访问。现在,我们需要在apache中创建一个虚拟主机,这是一个单独的文件夹,比如说/var/www/cycode.club,而不是默认路径,这样的话管理区来就方便。我们可以让它监听80端口。

            3.1.1 为网站加上域名

            在此之前,我们需要准备一个域名,比如你现在应该就掌管着cycode.club的域名。那么,你现在就去域名管理页(咱们是阿里云)去把它解析到我们的服务器。


            然后你在cmd里面ping一下,不用我教吧

            [root@VM-12-17-centos ~]# ping www.cycode.club
            PING www.cycode.club (43.138.157.164) 56(84) bytes of data.
            64 bytes from 43.138.157.164 (43.138.157.164): icmp_seq=1 ttl=63 time=0.380 ms
            64 bytes from 43.138.157.164 (43.138.157.164): icmp_seq=2 ttl=63 time=0.188 ms
            ^C
            --- www.cycode.club ping statistics ---
            2 packets transmitted, 2 received, 0% packet loss, time 1001ms
            rtt min/avg/max/mdev = 0.188/0.284/0.380/0.096 ms
            

            如果可以,你还可以这么干:

            如此一来,你在进入网站的时候就不用输入www了
            不过你现在暂时还不行,没看到记录值用的是https的网址吗。这个以后再讲,你现在就老老实实的去输入www或者暂时把https改成http

            3.1.2 在配置文件中设置域名

            参考资料:

            • 在apache服务器上安装ssl证书(阿里云)
            • apache虚拟主机的学习和应用(阿里云)

            不懂没关系,现在还不用ssl,但是他能给笔者一些启发。
            首先我们先要到httpd.conf中要求apache认可我们的配置文件--httpd-vhosts.conf

            vim /etc/httpd/conf/httpd.conf
            

            然后去掉Include conf/extra/httpd-vhosts.conf前的#
            等等,这句话在哪???
            事实上,我也找不到。一看,人家那是apache2。我不懂,但我大受震撼。既然如此, 我们就把配置直接写在httpd.conf就好了

            vim /etc/httpd/conf/httpd.conf
            

            找一个恰当的位置,写入下列的配置,位置大概在DocumentRoot "/var/www/html"的附近就好。

            NameVirtualHost *:80
            
            ServerAdmin webmaster@dummy-host.example.com
            DocumentRoot "@@ServerRoot@@/docs/dummy-host.example.com"
            ServerName dummy-host.example.com
            ServerAlias www.dummy-host.example.com
            Errorlog "logs/dummy-host.example.com-error_log"
            CustomLog "logs/dummy-host.example.com-access_log" common
            
            

            woc,太多了,我看不懂,咋办?
            没事,可以选择简单一点

            NameVirtualHost *:80 
            
            DocumentRoot "/www/example.com"
            ServerName www.example.com
            
            AllowOverride All
            Require all granted
            
            
            

            ServerAdmin管理员邮箱。
            DocumentRoot网站目录(注意:如果网站目录中的路径有空格,请在路径两端加上双引号)。
            ServerName要绑定的域名(必填)。
            ServerAlias要绑定的虚拟主机的别名。(可选,如果多个域名,中间以空格分隔,如果没有,则去掉该行)。支持,?两种通配符,比如.abc.com,表示任意一个abc.com的二级域名都可访问。
            CustomLog用户日志文件(可选,如果不需要,则去掉该行)。
            ErrorLog 错误日志(可选,如果不需要,则去掉该行)。
            Directory 设置一下网站文件夹的属性

            是不是感觉没变少?是我又加了Directory的属性,以后有用,现在先复制进去

            然后,我们就可以创建文件夹了

            cd /var/www/
            mkdir cycode.club
            cp -rf ./html -t ./cycode.club
            ls cycode.club
            

            看一看,是不是已经复制成功了?
            然后,直接重启网站服务器,输入域名,然后直接开始。

            apachectl restart
            curl http://www.cycode.club
            

            当然你第二行也可以不输,直接在你自己的电脑上的浏览器里面,像平常访问其他网址一样访问咱们的网站。

            3.2 为网站配置ssl证书

            如果你细心,你会发现,当你输入自己的网站的时候,上方就有一个“不安全”的字样,看起来非常难受。虽然说咱们这个网站也没有什么太贵重的东西,但你在网上上传下载的东西都被别人看到的感觉很不好,所以你需要准备ssl证书,才可以使用https访问。

            3.2.1 申请免费证书

            要证书,咱们一般使用免费的,这里有两个方案,我一开始用的是第一种,后来则选用了第二种,更方便。

            3.2.1.1 使用letsencrypt证书

            letsencrypt官网
            说实话,我不太想讲,虽然这些都是英文的,但是这有点小复杂,我甚至因此把网站搞砸了。它是使用自动化的方式安装证书,不太好手动操控。这种东西手动操控可以了解到证书的使用方式。

            3.2.1.2 使用阿里云免费ssl证书

            前排提醒:本章比较复杂,有什么不懂的直接看参考资料或者在评论区@我

            其实你用腾讯云也没有问题,都有免费证书,大同小异,我这里以阿里云为例。

            • 阿里云免费证书申请页
            • 参考资料:阿里云免费证书操作指南

            进入这里,记得点击“DV单域名证书(免费试用)”,相信你也不会点错,太贵了
            跟着流程走,申请完毕,你就可以去操作它。
            我的建议是,直接下载下来

            • 参考资料:在Apache上安装SSL证书


            注意选择的是apache服务器上的证书
            在你的电脑上解压好,把他们三改个名,去掉前面的数字加下划线

            然后利用FileZilla把它传进服务器里面,我传入/root/downloads/cert(建议你也这么传,以后有用,记得自己新建文件夹)

            3.2.2 安装证书

            你现在应该已经将文件上传到了服务器里,现在,我们把这些文件放在apache的安装目录/etc/httpd/下。

            cd /root/downloads
            cp -rf cert -t /etc/httpd/
            

            好了,现在复制完成,我们要写一些配置文件,注意看好,有什么不懂的建议去看参考资料。

            3.2.2.1 安装ssl模块

            apache默认没有安装ssl模块,这坑了我好几天。

            yum -y install mod_ssl
            vim /etc/httpd/conf/httpd.conf
            

            打开了vim,我们在之前添加虚拟主机的位置下面加上两行:

            LoadModule ssl_module modules/mod_ssl.so
            LoadModule rewrite_module modules/mod_rewrite.so
            

            第二行暂时跟现在没关系,但以后有用,这次顺带写上。
            这两行的作用就是加载apache的模块,方便使用ssl证书。

            3.2.2.2 为443端口添加虚拟主机

            和之前一样,上次是80端口,这次是443端口给https用。

            vim /etc/httpd/conf/httpd.conf
            

            然后在刚才添加加载模块的两行下面加上这么一块东西:

            
                ServerName www.cycode.club
                DocumentRoot  /var/www/cycode.club
                SSLEngine on
                SSLProtocol all -SSLv2 -SSLv3
                SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
                SSLHonorCipherOrder on
                SSLCertificateFile cert/www.cycode.club_public.crt
                SSLCertificateKeyFile cert/www.cycode.club.key
                SSLCertificateChainFile cert/www.cycode.club_chain.crt
            
            

            ServerName #修改为申请证书时绑定的域名
            DocumentRoot /var/www/example.com
            SSLEngine on
            SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。
            SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。
            SSLHonorCipherOrder on
            SSLCertificateFile cert/domain name1_public.crt # 将domain name1_public.crt替换成您证书文件名。
            SSLCertificateKeyFile cert/domain name1.key # 将domain name1.key替换成您证书的密钥文件名。
            SSLCertificateChainFile cert/domain name1_chain.crt # 将domain name1_chain.crt替换成您证书的密钥文件名;证书链开头如果有#字符,请删除。

            然后在重启服务器,在网址栏里输入https://www.cycode.club

            apachectl restart
            curl https://www.cycode.club
            

            理论上应该是成功的,不行的话看看防火墙或是云服务器安全组设置。

            3.2.2.3 设置强制https

            这玩意就是说让你不管怎么输入网址都会让你用https登陆,好处就是方便,坏处就是网站崩了不太好修。当然我建议是加上强制跳转。
            在之前80端口虚拟主机的位置/Directory后,/VirtualHost前的位置上加上几行

            RewriteEngine on
            RewriteCond %{SERVER_PORT} !^443$
            RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
            

            最后的结果就是这样:

            
            DocumentRoot /var/www/cycode.club
            ServerAlias www.cycode.club
            
            AllowOverride All
            Require all granted
            
            RewriteEngine on
            RewriteCond %{SERVER_PORT} !^443$
            RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
            
            
            LoadModule ssl_module modules/mod_ssl.so
            LoadModule rewrite_module modules/mod_rewrite.so
            
            
                ServerName www.cycode.club
                DocumentRoot  /var/www/cycode.club
                SSLEngine on
                SSLProtocol all -SSLv2 -SSLv3
                SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
                SSLHonorCipherOrder on
                SSLCertificateFile cert/www.cycode.club_public.crt
                SSLCertificateKeyFile cert/www.cycode.club.key
                SSLCertificateChainFile cert/www.cycode.club_chain.crt
            
            

            这样就基本完工,记得重启服务器

            apachectl restart
            

            本文章暂时保持更新,可以经常来这里看看哦