如何使用 Nginx 安装 WordPress 并在 CentOS 8 上加密 SSL
在此页
- 先决条件
- 开始
- 安装 LEMP 服务器
- 配置 WordPress 数据库
- 下载 WordPress
- 为 WordPress 配置 Nginx
- 访问 WordPress 仪表板
- 使用 Lets Encrypt 保护 WordPress
- 设置 Lets Encrypt 自动续订
- 结论
WordPress 是世界上免费、开源且使用最广泛的内容管理系统。它是一个非常强大的博客平台,可用于托管博客、投资组合网站和电子商务平台。 WordPress 使用 Apache/Nginx 作为网络服务器,MariaDB/MySQL 作为数据库和 PHP 处理。 WordPress 提供了大量可用于自定义其功能的主题和插件。
在本教程中,我们将解释如何在 CentOS 8 服务器上安装带有 Nginx 的 WordPress,然后我们使用免费的 Lets Encrypt SSL 证书保护服务器。
先决条件
- 一台运行 CentOS 8 的服务器。
- 在您的服务器上配置了根密码。
- 指向您的服务器 IP 地址的有效域名。
入门
默认情况下,SELinux 在 CentOS 8 服务器中启用。所以你需要先禁用它。
您可以通过编辑 /etc/selinux/config 文件来执行此操作:
nano /etc/selinux/config
进行以下更改:
SELINUX=disabled
保存并关闭文件。然后,重新启动服务器以应用更改。
安装 LEMP 服务器
在开始之前,您需要在您的服务器上安装 Nginx、MariaDB、PHP 和其他所需的包。您可以通过运行以下命令来安装所有这些:
yum install nginx php php-cli php-curl php-zip php-mbstring php-mysqlnd php-fpm curl unzip mariadb-server -y
安装完所有包后,启动 Nginx、PHP-FPM、MariaDB 服务并使它们在系统重启后启动:
systemctl start nginx
systemctl enable nginx
systemctl start mariadb
systemctl enable mariadb
systemctl start php-fpm
systemctl enable php-fpm
您还可以使用以下命令检查 PHP-FPM 服务的状态:
systemctl status php-fpm
您应该得到以下输出:
? php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2019-10-17 05:39:11 EDT; 4min 40s ago
Main PID: 1475 (php-fpm)
Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 6 (limit: 5060)
Memory: 28.5M
CGroup: /system.slice/php-fpm.service
??1475 php-fpm: master process (/etc/php-fpm.conf)
??1478 php-fpm: pool www
??1479 php-fpm: pool www
??1480 php-fpm: pool www
??1481 php-fpm: pool www
??1482 php-fpm: pool www
Oct 17 05:39:10 centos8 systemd[1]: Starting The PHP FastCGI Process Manager...
Oct 17 05:39:11 centos8 systemd[1]: Started The PHP FastCGI Process Manager.
完成后,您可以继续下一步。
配置 WordPress 数据库
默认情况下,MariaDB 服务器是不安全的。所以你需要先保护它。您可以使用以下命令保护它:
mysql_secure_installation
如下图所示回答所有问题:
Enter current password for root (enter for none):
Set root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
一旦安全,您应该得到以下输出:
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
接下来,使用以下命令登录到 MariaDB shell:
mysql -u root -p
在出现提示时提供您的 root 密码,然后使用以下命令为 WordPress 创建数据库和用户:
MariaDB [(none)]> CREATE DATABASE wpdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES on wpdb.* to 'wpuser'@'localhost' identified by 'password';
接下来,使用以下命令刷新权限并退出 MariaDB shell:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
配置数据库后,您可以继续下一步。
下载WordPress
您可以使用以下命令下载最新版本的 WordPress:
cd /var/www/html
wget https://wordpress.org/latest.tar.gz
下载后,使用以下命令解压缩下载的文件:
tar -xvzf latest.tar.gz
接下来,将 wordpress 目录的所有权更改为 nginx:
chown -R nginx: /var/www/html/wordpress/
接下来,将目录更改为 wordpress 并重命名 wordpress 默认配置文件:
cd /var/www/html/wordpress
cp wp-config-sample.php wp-config.php
接下来,在您喜欢的文本编辑器中编辑文件 wp-config.php:
nano wp-config.php
定义您的数据库信息,如下所示:
/** The name of the database for WordPress */
define( 'DB_NAME', 'wpdb' );
/** MySQL database username */
define( 'DB_USER', 'wpuser' );
/** MySQL database password */
define( 'DB_PASSWORD', 'password' );
/** MySQL hostname */
define( 'DB_HOST', 'localhost' );
完成后保存并关闭文件。
为 WordPress 配置 Nginx
接下来,您需要创建一个 Nginx 虚拟主机配置文件来为 WordPress 提供服务。您可以使用以下命令创建它:
nano /etc/nginx/conf.d/wordpress.conf
添加以下行:
server {
listen 80;
server_name example.com;
root /var/www/html/wordpress;
index index.php;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires max;
log_not_found off;
}
}
保存并关闭文件。然后,使用以下命令检查 nginx 是否有任何语法错误:
nginx -t
您应该得到以下输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
最后,重启 Nginx 服务以应用配置更改:
systemctl restart nginx
访问 WordPress 仪表板
WordPress 已安装和配置,现在是时候访问 Web 界面了。
打开 Web 浏览器并输入 URL http://example.com。您将被重定向到以下页面:

提供所有必需的信息,如站点名称、管理员用户名、密码、管理员电子邮件,然后单击安装 WordPress 按钮。安装完成后。您应该会看到以下页面:

单击登录按钮。您将被重定向到 WordPress 登录页面:

提供您的管理员用户名和密码,然后单击“登录”按钮。您应该在以下页面中看到 WordPress 仪表板:

使用 Lets Encrypt 保护 WordPress
为了使用 Lets Encrypt 免费 SSL 保护您的 WordPress 网站,您需要在您的系统中安装 Certbot Lets Encrypt 客户端。默认情况下,Certbot 在 CentOS 8 默认存储库中不可用。所以你需要从 Certbot 官方网站下载它。
您可以使用以下命令下载并安装 Certbot:
wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto
现在,运行以下命令为您的 WordPress 网站获取并安装 SSL 证书。
certbot-auto --apache -d example.com
系统会要求您提供电子邮件地址并同意服务条款。您还需要选择是否将 HTTP 流量重定向到 HTTPS。请选择适当的选项并按回车键。安装成功完成后,您应该得到以下输出:
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2019-08-14. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
设置 Lets Encrypt 自动续订
Lets Encrypt 证书的有效期为 90 天。所以建议在证书过期之前更新证书。您可以设置 Cron 作业以自动更新证书。
为此,请使用以下命令创建 crontab:
crontab -e
添加以下行:
0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew
完成后保存并关闭文件。
结论
在上面的教程中,我们学习了如何在 CentOS 服务器上使用 Nginx 安装和配置 WordPress。我们还学习了如何使用 Lets Encrypt 免费 SSL 保护 WordPress 网站。我希望您现在可以轻松地轻松托管自己的 WordPress 网站。