建站补完计划

事前准备

您需要一台拥有root权限和公网IP地址的服务器。

(本地机器不在此次讨论范围当中。因为家庭所使用的运营商网络一般没有下发公网IP。可能会涉及到内网穿透等问题。)

此教程基于Ubuntu 20.04 LTS Focal系统,运行于阿里云ECS平台。阿里云平台相关配置请参考阿里云官方手册。此处按照阿里云ECS服务器默认配置进行教程。

Step 0 – SSH连接服务器

首先请您使用SSH客户端连接至服务器。

Windows系统推荐使用PuTTY。
macOS系统推荐使用Termius。
Linux系统可以直接使用命令行(笑),或者你喜欢的任意客户端。

地址/Address 填入服务器公网IP地址。
请使用SSH连接服务器,默认端口为「22」。
请使用root用户,密码为配置服务器时设定的密码。
如果您使用的是「非root账户」,请使用命令:

sudo su

接着输入root账户密码切换至管理员账户。

Step 1 – 安装Nginx Web服务

为了给用户提供web页面,我们首先需要部署Nginx服务。因为官方版本的Nginx中,被打包的OpenSSL存在着版本落后的问题,而且许多拓展没有启用,所以我在此推荐使用SB修改版本的Nginx。

使用如下命令安装源(Repository):

curl https://mirror.xtom.com/sb/nginx/public.key | apt-key add -
echo "deb https://mirror.xtom.com/sb/nginx/ focal main" > /etc/apt/sources.list.d/sb-nginx.list

安装完成后,请更新服务器的软件包索引,接着就可以安装Nginx了。

apt update
apt install nginx

请您关注出现的提示,在满意的时候键入Y并按下「ENTER键」以确认您想要安装Nginx。

在安装完成之后Nginx Web服务器将会处于活动状态。

值得关注的是,阿里云服务器默认关闭ufw。

ufw status

服务器显示:

Status: inactive

如果您的服务器的ufw处于打开状态,建议将Nginx全部端口放行,以便于之后我们使用443端口配置HTTPS协议连接。

ufw allow 'Nginx FULL’

并且,请您检查阿里云或其他服务器提供商提供的防火墙服务中,「80」端口和「443」端口是否处于「允许通过」状态。

接下来,您可以通过「其他已经处于因特网联络状态的智慧型电子设备」的浏览器访问【您的服务器公共IP地址】来测试web服务器是否已经启动并且正常运行。

如果您不知道服务器的公共IP地址,则可以向您的服务器提供商查询

运行以下命令并不能找到您的公共IP地址,以下命令只能查询到您的服务器的内网IP地址:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

如果您在网络浏览器中输入您的服务器的公共IP,它将带您到Nginx的默认页面:

您需要在浏览器中输入:

如果看到此页面,则表明您已成功安装Nginx并为Web服务器启用了HTTP通信。

Step 2 – 安装MySQL数据库

恭喜您,您已经跨越了万水千山的一小步,同时也是成功的一大步。

MySQL是一个数据库管理软件,它能够存储和管理站点数据;这也是Wordpress所必需的。

MySQL是在PHP环境中所流行使用的数据库管理系统。(不是我说的,但是确实是的。)

再次地,使用apt包管理器安装此软件:

apt install mysql-server

当出现提示时,您可以通过键入字母Y,然后敲击键盘上的「ENTER」按键确认安装。

安装完成后,建议您运行MySQL随附的安全脚本。该脚本将删除一些不安全的默认设置,并锁定对数据库系统的访问。通过运行以下命令来启动交互式脚本:

mysql_secure_installation

这将询问您是否要配置VALIDATE PASSWORD PLUGIN。

注意:此功能的启用只是一个密码判断的作用。如果启用,与指定条件不匹配的密码将被MySQL拒绝并出现错误。禁用验证仍然是很安全的,但是您应该始终对数据库使用强而独特的密码。

键入Y并敲击「ENTER」按键确认「启用」,输入「其他任何按键」则「不启用」。

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

如果您确认启用「密码强度验证」,则将要求您选择密码强度验证级别。

请注意,如果输入「2」,则将启动最高强度验证级别。在此级别中,您将被要求设定长度大于8位,包含数字、大小写字母和特殊符号的密码,并且不能包含常用单词。更多详细内容请参考提示:

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

不管您是否启用VALIDATE PASSWORD PLUGIN,您的服务器接下来都会要求您设定一个MySQL的root用户的密码。值得注意的是,在此的root用户不同于服务器系统中的root用户。两处的用户的密码可以不同,也可以相同。无论怎样,请您在设定root权限用户的密码时使用高强度密码。

如果您启用了「密码强度验证」,如下的提示将会显示在您的屏幕上,并附带着密码的强度(以100分为满分)。同样地,您可以键入Y并敲击「ENTER」按键确认密码,或者输入「其他任何按键」表示重新设定密码。

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

在您确认密码之后,MySQL会出现一系列的安全提示,以确认您是否需要删除匿名用户和测试数据库、禁止MySQL的root用户远程登录和是否立即加载新规则使得MySQL能够立即遵循您更改的规则。

在此,建议您「删除」匿名用户和测试数据库,其他规则请您自行判断并设定。版本不同或许使得初始设定有所不同。请按照MySQL出现的提示进行设定。

在设定完成后,使用如下命令进入MySQL:

mysql

如果您因为权限原因被禁止进入,请使用如下命令进入MySQL:

mysql -u root -p

然后输入您的MySQL数据库的root用户的密码。

当显示如下内容时代表您已经成功安装MySQL。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1861
Server version: 8.0.22-0ubuntu0.20.04.3 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

接着您可以退出MySQL。

mysql> exit;

值得注意的是,对于MySQL的代码,我们规定使用英文分号「;」结尾。但是此处的「exit」可以不使用分号结尾。(但是我建议使用。)

Step 3 – 安装PHP

接下来我们安装最后一个软件——PHP来处理代码并为Web服务器生成动态内容。

在两个常用的网页服务器中,Apache在每个请求中都嵌入了PHP。但是对于Nginx来说,它需要一个外部程序来处理PHP,并且使用这个外部程序来充当PHP解释器本身和Web服务器之间的桥梁。

对于Nginx和Apache这两个服务器的区别在这里并不过多赘述。介于Nginx的轻量化和低资源、低消耗、高性能的抗并发性能,对于个人建站大多数人使用的共享型低性能虚拟主机这种情况,我更推荐使用Nginx。

注意,截止2021年1月,Wordpress尚未完全适配PHP 8.0版本。目前Wordpress最新版本为5.6。此版本只是Wordpress转向PHP 8.0的过渡版本,许多功能都尚未测试。并且,Wordpress的插件对于PHP 8.0的兼容性尚未可知,所以不建议您使用PHP 8.0版本。(此处PHP指代php-fpm,您可以在服务器上安装多个不同版本的PHP和php-fpm及其拓展。您只需在Nginx配置文件中正确配置,即可使用指定版本的php-fpm。)

Step 3.0 – 添加源ondrej/php PPA

使用如下命令添加源地址:

add-apt-repository ppa:ondrej/php
apt update
Step 3.1 – 安装本地PHP

您可以使用如下命令安装PHP 7.4版本:

apt install php7.4 php7.4-common php7.4-cli
Step 3.2 – 安装php-fpm

您需要安装php-fpm。php-fpm是“ PHP fastCGI process manager”。他能处理并传递Nginx的PHP请求。另外,您将需要一个叫做php-mysql的PHP模块。该模块允许PHP与基于MySQL的数据库进行通信。核心PHP软件包将自动安装为依赖项。如下命令还添加了许多您可能会用到的各种模块:

apt install php7.4-{bcmath,bz2,curl,fpm,gd,imagick,intl,mbstring,mysql,readline,soap,xml,xmlrpc,zip}
Step 3.3 – 使用PHP使可能会使用到的命令
# 启动php-fpm。
service php7.4-fpm start

# 重启php-fpm。
service php7.4-fpm restart

# 重载php-fpm。
service php7.4-fpm reload

# 停止运行php-fpm。
service php7.4-fpm stop

# 查看系统内已安装的php及其拓展。
dpkg -l | grep php

# 查看系统使用的本地php (cli)版本。
php -v

# 查看系统内已加载的php拓展。
php -m

# 完全卸载php(清除配置)。
apt purge ‘^php7.4.*'

Step 4 – 配置Nginx以使用PHP

在配置Nginx之前,您必须先熟悉如下文件目录。

在默认设置下,Nginx 主程序位于 /etc/nginx 文件夹下。

您可以输入 ls /etc/nginx 以显示此目录下的所有文件。

在此文件夹中,nginx.conf 是Nginx主程序的配置文件。

sites-available 用于存放可以使用的网站配置文件。

sites-enable 用于存放正在使用的网站配置文件。

值得注意的是,我们使用网站配置文件的正常步骤应该是在 sites-available 文件夹中创建并且配置文件,然后使用软链接将配置文件链接到 sites-enable 文件夹中。下文将详细讲述如何配置文件。

在默认情况下,网站的文件将存放于 /var/www/html 文件夹下。当然,您也可以在nginx网站配置文件中更改此路径。

一般地,我们将建立的网站存放于 /var/www 的子文件夹中。例如,如果我们建立Wordpress网站,我们可以新建 /var/www/wordpress 文件夹,并将网站内容存放于此。下文将详细讲述如何建立网站。

在这一章,我们暂且只配置Nginx与PHP连接,并建立一个临时首页地址

注意,如下的代码中的 wordpress,都可以替换成您所需要建立的网站的名字。在此处我们皆以建立Wordpress网站为例说明。

首先,您需要建立一个临时首页。

您可以使用如下代码为您的网站建立一个独立的存放文件夹:

mkdir /var/www/wordpress

您必须为您刚建立的文件夹建立权限:

chown -R $USER:$USER /var/www/wordpress

然后, 您可以使用如下代码创建一个html网页:

nano /var/www/wordpress/index.html

以下代码是您需要输入到 .html 文件当中的html代码:

<html>
  <head>
    <title>your_domain website</title>
  </head>
  <body>
    <h1>Hello World!</h1>

    <p>This is the landing page of <strong>your_domain</strong>.</p>
  </body>
</html>

现在,您可以开始设置nginx当中的网站的配置文件了。

使用如下代码开始创建并编辑您的网站的配置文件:

nano /etc/nginx/sites-available/wordpress

以下代码是您需要输入到设置文件当中的代码:

server {
    listen 80; #设置nginx监听80端口
    server_name localhost; #此处设置您的网站域名,请不要在域名解析之前更改此处选项,默认设置为localhost
    root /var/www/wordpress; #设置您的网站的根目录地址

    index index.php index.html; #设置您的网站的首页文件

    #设置php-fpm
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_intercept_errors on;

        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }

    #禁止.htaccess文件访问,防止用户访问到根目录地址。具体原理作用不在此拓展。
    location ~ /\.ht {
    deny all;
    }
}

我会在后文介绍关于网站设置文件的更进一步的设置。

使用如下代码将网站设置文件软链接至 sites-available 文件夹:

ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/

使用如下代码取消初始的的网站设置文件的软链接:

unlink /etc/nginx/sites-enabled/default

同样地,如果您想要恢复初始的网站设置文件,您可以使用如下代码:

ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

使用如下代码测试nginx设置文件的正确性:

nginx -t

使用如下代码重启nginx:

nginx -s reload

接下来,您可以试着访问您的网站,但出现如下界面时,代表您的设置正确,nginx状态正常。

接下来,我们测试PHP服务是否正确设置:

首先我们需要创建一个PHP测试页面:

nano /var/www/your_domain/info.php

以下代码是您需要输入到 .php 文件当中的php代码:

<?php
phpinfo();

当正确输入并保存后,请在您的「其他已经处于因特网联络状态的智慧型电子设备」的浏览器访问「如下地址」来测试php服务是否已经成功设置并且正常运行。

但出现以下界面时,代表您已经成功设置php服务。

由于安全性原因,您需要删除此PHP测试页面。

sudo rm /var/www/your_domain/info.php

到此,您已经成功搭建LEMP网站服务框架,下一章节我们将搭建并初步设置Wordpress网站。


在这一章节,我们将会搭建并且初步设置Wordpress网站。

Step 1 – 为Wordpress创建MySQL数据库和数据库用户

首先您需要登陆MySQL数据库。

mysql -u root -p

然后输入「MySQL」的root用户密码以进入MySQL。

登陆后,输入以下代码创建一个以 wordpress 为名字的数据库。数据库的名字您可以随意修改,但在文章中我们以此为例。

希望您没有忘记的是,在MySQL中我们以英文半角符号分号「;」结束一行代码。

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

然后,因为安全原因,我们为Wordpress创建一个名为wordpressuser的定向权限用户,以使得Wordpress只能操作Wordpress的数据库。同样地,您可以将此用户名更改为任意其他用户名。

您需要将以下代码中的「password」更改为Wordpress的用户的密码。

CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';

如果您更改了上述Wordpress数据库的名字,您需要将以下代码中的「wordpress」更改为您设置的名字。

GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost';

现在您可以退出MySQL。

EXIT;

Step 2 – 再次配置Nginx

nano /etc/nginx/sites-available/wordpress

首先您需要在server模块中添加一些对于location的设置。通常,我们会关闭针对一些请求的日志记录;并且,我们会使用正则表达式来匹配一些静态文件的请求,并将他们标记为高度可缓存的,以此来节省服务器资源。您可以调整此静态文件列表以包含您的站点可能使用的任何其他文件的扩展名:

nano /etc/nginx/sites-available/wordpress
server {
    . . .

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt { log_not_found off; access_log off; allow all; }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }
    . . .
}

接下来,您需要使用#号注释掉原来的404错误返回选项。并使用如下命令替代:

server {
    . . .
    location / {
        #try_files $uri $uri/ =404;
        try_files $uri $uri/ /index.php$is_args$args;
    }
    . . .
}

在保存文件后,使用如下命令检查nginx配置文件是否正确:

# 测试nginx配置文件
nginx -t

如果没有输出错误报告,请重启nginx。

# 重启nginx
nginx -s reload

接下来,从下一节开始下载并配置Wordpress。

Step 3 – 下载Wordpress

首先您可以切换到系统临时文件夹,然后使用下一条命令下载最新版本的Wordpress:

cd /tmp
curl -LO https://wordpress.org/latest.tar.gz

等待下载完成后,解压文件至当前文件夹:

tar xzvf latest.tar.gz

复制Wordpress的示例配置文件,以便于我们在下一节配置:

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

然后复制Wordpress文件至服务器网站的根目录下,然后配置正确的文件所有权。权限用户组和用户皆为Nginx默认使用的www-data。

sudo cp -a /tmp/wordpress/. /var/www/wordpress
sudo chown -R www-data:www-data /var/www/wordpress

Step 4 – 配置Wordpress

在运行Wordpress网站之前,我们仍需要对Wordpress进行一些配置。

首先您需要使用Wordpress提供的密钥生成器生成密钥,然后放入Wordpress配置文件中以便于使用。使用如下命令获取密钥:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

然后您会得到类似于以下的输出,请不要复制我这里提供的示例内容,这很重要。随机的唯一密钥值有助于您的网站安全性的提升:

Output
define('AUTH_KEY',         '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H');
define('SECURE_AUTH_KEY',  'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3');
define('LOGGED_IN_KEY',    'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88');
define('NONCE_KEY',        'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g');
define('AUTH_SALT',        'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES  07VC*Lj*lD&?3w!BT#-');
define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY');
define('LOGGED_IN_SALT',   'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|');
define('NONCE_SALT',       'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%’);

复制您获取到的密钥值,然后打开Wordpress的配置文件:

sudo nano /var/www/wordpress/wp-config.php

找到如下示例内容,然后按照提示粘贴您获取到的密钥:

. . .

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

. . .

接下来,我们需要修改一些用于连接数据库的配置。按照本章节第一步中设置好的MySQL中的配置,您需要找到如下示例内容,并替换您设置好的MySQL中Wordpress用户的用户名和密码等其他内容。

define( 'DB_NAME', 'wordpress' );

/** MySQL database username */
define( 'DB_USER', 'wordpressuser' );

/** MySQL database password */
define( 'DB_PASSWORD', 'password' );

. . .

最后在同样的文件中的末尾,添加如下命令授予Wordpress权限,以便于Wordpress以直接路径显示或获取文件。否则Wordpress可能会在您执行某些操作时提示您输入FTP凭据。

# 在文件中添加如下代码
define( 'FS_METHOD', 'direct' );

在您修改完成之后保存并关闭文件。

接下来,请您删除之前我们用来测试的index.html文件。

rm /var/www/wordpress/index.html

最后,请您检查nginx配置文件中的首页(index)设置。

nano /etc/nginx/sites-available/wordpress

找到如下一行:

index index.php index.html;

请确保 index.php 位于最前列,或者您可以只留下 index.php, 删去其他:

index index.php;

接下来您可以访问您的网站首页进行更进一步的设置。

Step 5 – 在Wordpress web界面中完成安装

最后,您可以访问您的服务器的公共IP地址,然后根据Wordpress的提示完成设置。


到此,您已经成功搭建好您的Wordpress网站。但是您需要更进一步的配置以使得您的网站变得更加迅速、安全。如果您想要使用https协议保护您的网站连接,您需要进行SSL安全配置。如果您的服务器位处于中国大陆地区,并且您想要购买域名并解析至您的服务器。您需要将您的域名转入中国大陆地区运营商(例如:万网),然后在中华人民共和国工业和信息化部进行ICP备案才能正常将您的域名解析至您的服务器。依据 《计算机信息网络国际联网安全保护管理办法》相关规定,各网站在工信部备案成功后,需在网站开通之日起30日内登录全国互联网安全管理服务平台提交公安联网备案申请。公安联网备案审核通过后,您需在30日内登录全国互联网安全管理服务平台,在您的已备案网站详情中,复制网站公安机关备案号和备案编号HTML代码,下载备案编号图标,并编辑您的网页源代码将公安联网备案信息放置在网页底部。

在下一章节,我会简要提示您如何做好相关工作。


1、关于网站插件的推荐

  1. 首先,如果您的服务器位于中国大陆地区。我强烈推荐您访问 https://wp-china.org/ 获取 WP-China-Yes 这个插件。因为某些原因,在中国大陆地区访问Wordpress的各项服务有网络阻碍和延迟。所以在安装和更新Wordpress主程序、插件和主题时往往出现网络错误。Wordpress内置的各种API(例如Gravatar头像、谷歌字体、谷歌服务等)都存在网络访问的问题。此插件可以帮您解决包括但不仅限于以上列出的问题。另,此插件中的「本土应用市场」功能目前还处于试验阶段,可能会出现一些问题。
  2. 以下列出我所使用的插件,具体作用您可以在Wordpress应用市场自行查询。
Beaver Builder Plugin一个拖拽式前端 WordPress 页面构建器插件。
Highlighting Code Block添加带有语法高亮显示的代码块。
Mimi Captcha简洁的中文验证码插件。在WordPress登陆、注册或评论表单中加入验证码功能,支持字母、数字、中文和算术验证码。
Really Simple SSL用于完善网站SSL (https)连接。(如果您的网站没有启用https,请不要使用此插件。)
WP Mail SMTPWordPress 邮件管理器。
WP-China-Yes位于中国大陆地区服务器必备插件。
WPFront Scroll Top允许访问者轻松滚动到页面顶部。
健康检查与故障排除检查您的 WordPress 安装的健康状况。
WordPress Shortcodes Plugin (终极简码)在 WordPress 中添加小组件
Reading progressbar用于在网页上显示用户阅读进度条

2、关于中国大陆地区服务器备案的简要说明

如果您确实需要备案,您可以参照阿里云提供的手册进行备案:

实测阿里云ICP备案预审核在您提交的工作日当天就能完成,然后提交至管局审核。管局核验手机短信在下一个工作日就会送达。在校验完成手机短信验证码之后的五个工作日之内就下发了ICP备案号。整个备案流程预计所需时长约1~22个工作日左右,具体时长以实际操作时间为准。每个省份都有不同的要求,管局审核速度也不尽相同,请自行查阅相关资料做好备案。

另,我在阿里云备案三次,体验都很好,流程提示都很到位。阿里云人工审核会指出您所提交的材料有哪些不合规的地方,然后帮助您改正。

关于全国公安机关互联网站安全服务平台备案操作,阿里云备案平台也给出了详细操作步骤。同时我在网络上找到了一份北京光环新网科技股份有限公司写的一份备案指南,图文并茂。粗略了浏览了一下没有明显错误,在此也分享给大家。

注意,备案网站请仔细查看要求。作为个人网站,请选择「非前置备案」、「非经营类」、「非交互式」等选项。大多数地区禁止「个人博客」等字眼,因为此类属于「交互式」网站,需要前置性审批许可。(但是某些个别管局除外,个人网站只能选择为个人博客)。

等到ICP备案完成并且域名解析IP地址之后,请修改位于/etc/nginx/sites-enabled/中的Nginx设置文件中的主页域名,例如:

server {
···
    # 注销下面的语句
    # server_name localhost;

    # 修改为如下语句(示例网站)
    server_name www.drymx.com;
···
}

3、建站后设置上传文件大小

在默认情况下,Nginx和PHP都限制了上传文件大小(2M)。我们需要修改php.ini和nginx.conf文件使得用户可以上传大文件。

首先我们配置Nginx。

编辑Wordpress的Nginx配置文件。

nano /etc/nginx/sites-enabled/wordpress

在server段中添加如下代码(以521M上限为例):

server {
···
    client_max_body_size 512M;
···
}

接下来您需要修改php.ini文件。

nano /etc/php/7.4/fpm/php.ini
upload_max_filesize = 512m ;允许上传最大文件大小为512M
post_max_size = 768m ;此值必须比 upload_max_filesize 大. 通过表单POST传递给服务器PHP的最大值 (包括表单里的所有值).
;下面为进阶设置
max_execution_time = 600 ;这设置了PHP脚本被解析器中止之前允许的最大执行时间 (单位秒) 这有助于防止写得不好的脚本占尽服务器资源.
max_input_time = 600 ;脚本解析输入数据 (类似 POST 和 GET) 允许的最大时间 (单位是秒). -1: 意味着使用 max_execution_time 的值做为默认值. 0: 为不限制.
memory_limit = 896m ;此值必须比 post_max_size 大. 这设置了一个脚本允许分配的最大内存量 (以字节bytes为单位). 这有助于防止写得不好的脚本吃掉服务器上所有可用的内存. -1: 为不限制.

到此您的Wordpress所允许上传的最大文件大小已经被修改为512M。

4、服务器SSL连接加密设置(https)

建站完成之后,您可以通过使用certbot获取免费的SSL证书(甚至是通配符证书)。然后使用https协议加密您的网站的连接通讯。

因为设置过程有些繁琐,为了避免此教程过于冗长,我打算另行撰写一篇文章专门讲述如何设置https,并且获取A+级别的高强度安全评级。敬请期待。


Redo:||

这一章节主要讲述如何做好服务器备份及如何恢复站点建设。

关于Wordpress服务器备份,现在网络上各大站长大都推荐使用Wordpress中的UpdraftPlus备份插件。但是这个插件很多功能都需付费使用,而且价格不菲。此插件会备份您的Wordpress网站中的数据库、插件、主题等内容,对于服务器的LEMP运行环境需要重新构建。对于个人建站的这种情况来说并不十分适用。但是如果您需要更换服务器提供商,这种备份方法却十分合适。

对于需要暂时停站的站长来说,可以直接使用服务器运营商提供的「快照」服务,然后通过快照新建「镜像」。这样在下次需要重新开站时,只需要通过「镜像」就能创建ECS服务器,直接开站。

对于此种方法来说,不需要重新配置服务器,即开即用。

但是严重的问题在于重新开站时,因为此前Wordpress可能已经解析到了域名地址(见下图),而此时服务器因为还未备案,所以只能使用服务器公网IP访问。

如果此时访问服务器网站,则会自动跳转到域名地址(因为尚未备案所以域名不能解析),从而造成不能访问。

网站自动跳转到域名地址,是因为位于/etc/nginx/sites-enabled/中的设置文件中设置了主页域名,例如:

server {
···
    server_name www.drymx.com;
···
}

如果将其设置为localhost,例如:

server {
···
    server_name localhost;
···
}

则nginx在收到请求时会自动解析到本地的公网IP地址,而不会自动跳转到www.drymx.com。

当您设置完成后,清除本机浏览器缓存后重新访问网站,因为在Wordpress中已经设置了WordPress地址站点地址为域名地址,Wordpress会显示出现严重错误,并且不能进入站点重新设置。

【假装有图】

所以此时我们需要修改Wordpress中的设置选项,使其使用本机公网IP地址作为站点地址。但是由于不能进入Wordpress网站进行修改,所以这就形成了一个死循环。

这时我们需要进入服务器后台,直接修改MySQL中的数据库数据,使其使用服务器公网IP作为站点地址。

使用如下命令,然后输入MySQL的root用户的密码进入MySQL数据库:

mysql -u root -p

在进入数据库后,切换到Wordpress的数据表:

USE wordpress;

然后使用如下命令查看您的Wordpress的设置中的主页地址:

select * from wp_options limit 1;

如图:

然后您可以使用如下命令替换位于 option_value 中的值。
请替换语句中的“your_wordpress_url“,请注意http和https的区别

UPDATE wp_options SET option_value="your_wordpress_url" WHERE option_name="siteurl";

Reference

此文章的前两章参考了如下两个网址中的两个英文教程。本人在翻译的基础上做了些许的修改。本着学习、非盈利的性质进行参考、转载和修改。谨在此进行版权说明。

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-20-04

https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-lemp-on-ubuntu-20-04

关于后文的章节,本人也广泛参考了包括但不仅限于软件或服务提供商给出的参考教程或手册,因教程本身的特殊性质,就不在此一一列出参考来源,望谅解。

发表评论