跳转至

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

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


1. 使用LAMP建立网站

1.1 建站所需要的东西

我们编程社的网站经历过云服务器,物理机器以及现在这种情况,理论上来讲,我们需要的是一个机器,云服务器(可以去阿里云买)会方便很多,但是由于经济关系我们可能需要在实体机上操作。为此,你还需要外网映射工具,例如SakuraFrp。也不贵(目前),至少比服务器便宜,反正编程社电费不要钱。 为了方便讲解,本攻略主要以试用的云服务器为例子,请自行为你的服务器套上外网映射。 另外,你也可以直接去阿里云的体验站体验一个小时的建站流程。阿里云基于ECS搭建LAMP体验

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

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

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

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界面,对新手友好。这里就直接放官网链接:

选择绿色版会方便很多,因为这玩意不需要什么注册表,只是个工具。 注意:不要下载服务器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 在配置文件中设置域名

参考资料:

不懂没关系,现在还不用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
<VirtualHost *: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
</VirtualHost>

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

NameVirtualHost *:80 
<VirtualHost *:80>
DocumentRoot "/www/example.com"
ServerName www.example.com
<Directory /var/www/example.com>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

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服务器上的证书 在你的电脑上解压好,把他们三改个名,去掉前面的数字加下划线 然后利用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

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

<VirtualHost *:443>
    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
</VirtualHost>

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]

最后的结果就是这样:

<VirtualHost *:80>
DocumentRoot /var/www/cycode.club
ServerAlias www.cycode.club
<Directory /var/www/cycode.club>
AllowOverride All
Require all granted
</Directory>
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
</VirtualHost>

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

<VirtualHost *:443>
    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
</VirtualHost>

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

apachectl restart

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