WordPress:构建强大的网站和博客的完美选择
- [一、WordPress 简介](#一、WordPress 简介)
-
- [1.1 WordPress 介绍](#1.1 WordPress 介绍)
- [1.2 WordPress 优势](#1.2 WordPress 优势)
- 二、部署LNMP环境
-
- [2.1 前提条件](#2.1 前提条件)
- [2.2 关闭防火墙和SELinux](#2.2 关闭防火墙和SELinux)
- [2.3 安装Nginx](#2.3 安装Nginx)
- [2.4 安装MySQL](#2.4 安装MySQL)
- [2.5 安装PHP](#2.5 安装PHP)
- [2.6 配置Nginx](#2.6 配置Nginx)
- [2.7 配置MySQL](#2.7 配置MySQL)
- [2.8 配置PHP](#2.8 配置PHP)
- [2.9 测试访问LNMP平台](#2.9 测试访问LNMP平台)
- 三、搭建WordPress
-
- 3.1前提条件
- [3.2 配置WordPress数据库](#3.2 配置WordPress数据库)
- [3.2 搭建WordPress网站](#3.2 搭建WordPress网站)
- [3.3 修改Nginx配置文件。](#3.3 修改Nginx配置文件。)
- [3.4 安装并登录WordPress网站。](#3.4 安装并登录WordPress网站。)
- [3.5 解析WordPress网站域名](#3.5 解析WordPress网站域名)
- [3.6 常见问题](#3.6 常见问题)
- 四、结论
一、WordPress 简介
1.1 WordPress 介绍
WordPress是当今最受欢迎的内容管理系统(CMS),为建立强大的网站和博客提供了一个完美的平台。无论您是个人博主、中小型企业还是大型机构,WordPress都提供了丰富的功能和灵活性,让您可以轻松创建和管理您的在线存在。
1.2 WordPress 优势
-
简单易用的界面:WordPress以其直观的用户界面而闻名。无需编码知识,您可以通过简单的拖放和点击操作,轻松创建页面、发布文章和管理内容。对于初学者而言,这是一个很好的选择,因为它不需要复杂的技术知识。
-
丰富的主题和插件:WordPress拥有一个庞大的主题和插件生态系统。您可以根据自己的需求选择适合您网站风格和功能的主题,甚至可以定制您的网站外观。此外,丰富的插件库使您能够添加各种功能,如社交媒体分享、搜索引擎优化、安全性增强等,以满足您的特定需求。
-
响应式设计和移动友好性:在移动设备使用率不断增长的今天,确保您的网站在各种屏幕尺寸上都能良好展示非常重要。WordPress提供了许多响应式设计的主题,这意味着您的网站将自动适应不同的设备,并提供出色的用户体验。
-
强大的SEO功能:WordPress具有出色的搜索引擎优化(SEO)功能,使您的网站在搜索引擎结果中获得更好的排名。从友好的URL结构到元标记和关键字优化,WordPress提供了许多工具和插件来优化您的网站,使其更容易被搜索引擎索引和理解。
-
社区支持和资源丰富:作为全球最受欢迎的CMS,WordPress拥有庞大的用户社区和支持网络。您可以轻松找到大量的教程、主题、插件和解决方案,以满足您的需求。如果您遇到问题,可以在社区论坛或WordPress官方支持渠道获得帮助。
二、部署LNMP环境
ECS实例上搭建LNMP环境(CentOS 8),其中LNMP分别代表Linux、Nginx、MySQL和PHP。
2.1 前提条件
- 已创建ECS实例并为实例分配公网IP地址
本文的示例步骤中,使用以下配置的ECS实例。实际操作时,建议您保持操作系统版本一致,避免因操作系统版本问题导致的命令执行报错。
-
实例规格:ecs.c6.large
-
操作系统:公共镜像CentOS 8.1 64位
-
网络类型:专有网络VPC
-
IP地址:公网IP
-
已在实例安全组的入方向添加安全组规则并放行22、80、443端口。(很重要)
基于服务器数据安全考虑,本文仅说明部署与测试LNMP环境所必须放行的端口,您可以根据实际需求,放行其他应用所需的端口号。例如,远程连接MySQL数据库时,需要放行MySQL默认占用的3306端口。
2.2 关闭防火墙和SELinux
-
远程连接需要部署LNMP环境的ECS实例。
-
关闭防火墙。
- 运行以下命令,查看当前防火墙的状态。
bash
systemctl status firewalld
-
如果防火墙的状态参数是
inactive
,则防火墙为关闭状态 -
如果防火墙的状态参数是
active
,则防火墙为开启状态 -
临时关闭防火墙:
bash
sudo systemctl stop firewalld
临时关闭防火墙后,如果Linux实例重启,则防火墙将会自动开启。
- 永久关闭防火墙:
bash
sudo systemctl stop firewalld
实例开机时,禁止启动防火墙服务。
bash
sudo systemctl disable firewalld
- 关闭SELinux。
- 运行以下命令,查看SELinux的当前状态。
bash
getenforce
-
如果SELinux状态参数是
Disabled
,则SELinux为关闭状态。 -
如果SELinux状态参数是
Enforcing
,则SELinux为开启状态。 -
SELinux关闭的方式分为临时关闭和永久关闭
临时关闭
bash
setenforce 0
永久关闭
bash
sudo vi /etc/selinux/config
# 修改此值
SELINUX=enforcing
# 重启
sudo shutdown -r now
强制执行模式SELINUX=enforcing:表示所有违反安全策略的行为都将被禁止。
宽容模式SELINUX=permissive:表示所有违反安全策略的行为不被禁止,但会在日志中做记录。
2.3 安装Nginx
- 运行以下命令安装Nginx。
shell
sudo dnf -y install http://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.16.1-1.el8.ngx.x86_64.rpm
- 运行以下命令查看Nginx版本。
shell
nginx -v
查看版本结果如下所示:
shell
[test@iZbp148k6pnnjmij4rd**** ~]$ nginx -v
nginx version: nginx/1.16.1
2.4 安装MySQL
- 运行以下命令安装MySQL。
shell
sudo dnf -y install @mysql
- 运行以下命令查看MySQL版本。
shell
mysql -V
查看版本结果如下所示:
shell
[test@iZbp148k6pnnjmij4rd**** ~]$ mysql -V
mysql Ver 8.0.26 for Linux on x86_64 (Source distribution)
2.5 安装PHP
-
运行以下命令,添加并更新epel源。
shellsudo dnf -y install epel-release sudo dnf -y update epel-release
-
运行以下命令,删除缓存的无用软件包并更新软件源。
shellsudo dnf clean all sudo dnf makecache
- 启用
php:7.3
模块。
shell
sudo dnf module enable php:7.3
-
运行以下命令,安装PHP相应的模块。
shellsudo dnf -y install php php-curl php-dom php-exif php-fileinfo php-fpm php-gd php-hash php-json php-mbstring php-mysqli php-openssl php-pcre php-xml libsodium
-
运行以下命令查看PHP版本。
shellphp -v
查看版本结果如下所示:
shellPHP 7.3.20 (cli) (built: Jul 7 2020 07:53:49) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.20, Copyright (c) 1998-2018 Zend Technologies
2.6 配置Nginx
-
运行以下命令,查看并记录Nginx配置文件的默认路径。
shellcat /etc/nginx/nginx.conf
-
在
http
大括号内,查看include
配置项。即配置文件的默认路径。 -
在配置文件的默认路径下,备份默认配置文件。
shellcd /etc/nginx/conf.d sudo cp default.conf default.conf.bak
-
修改默认配置文件。
运行以下命令打开默认配置文件。
```shell
sudo vim default.conf
```
按i进入编辑模式。
在location
大括号内,修改以下内容。
php
Explainlocation / {
#将该路径替换为您的网站根目录。
root /usr/share/nginx/html;
#添加默认首页信息index.php。
index index.html index.htm index.php;
}
去掉被注释的location ~ \.php$
大括号内容前的#
,并修改大括号的内容。修改完成如下所示。
shell
Explainlocation ~ \.php$ {
#将该路径替换为您的网站根目录。
root /usr/share/nginx/html;
#Nginx通过unix套接字与PHP-FPM建立联系,该配置与/etc/php-fpm.d/www.conf文件内的listen配置一致。
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
#将/scripts$fastcgi_script_name修改为$document_root$fastcgi_script_name。
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#Nginx调用fastcgi接口处理PHP请求。
include fastcgi_params;
}
Nginx与PHP-FPM进程间通信方式有两种。
TCP Socket:该方式能够通过网络,可用于跨服务器通信的场景。
UNIX Domain Socket:该方式不能通过网络,只能用于同一服务器中通信的场景。
按下Esc键,并输入:wq
保存退出文件。
运行以下命令,启动Nginx服务。
shell
sudo systemctl start nginx
运行以下命令,设置Nginx服务开机自启动。
shell
sudo systemctl enable nginx
2.7 配置MySQL
-
运行以下命令启动MySQL,并设置为开机自启动。
shellsudo systemctl enable --now mysqld
-
运行以下命令,查看MySQL是否已启动。
shellsudo systemctl status mysqld
查看返回结果中
Active: active (running)
表示已启动。 -
运行以下命令,执行MySQL安全性操作并设置密码。
shellsudo mysql_secure_installation
命令运行后,根据命令行提示执行如下操作。
-
输入Y并回车开始相关配置。
-
选择密码验证策略强度,输入2并回车。
策略0表示低,1表示中,2表示高。建议您选择高强度的密码验证策略。
-
设置MySQL的新密码并确认。
本示例设置密码
PASSword123!
。 -
输入Y并回车继续使用提供的密码。
-
输入Y并回车移除匿名用户。
-
设置是否允许远程连接MySQL。
- 不需要远程连接时,输入Y并回车。
- 需要远程连接时,输入N或其他任意非Y的按键,并回车。
-
输入Y并回车删除
test
库以及对test
库的访问权限。 -
输入Y并回车重新加载授权表。
-
2.8 配置PHP
- 修改PHP配置文件。
运行以下命令,打开配置文件。
shell
sudo vim /etc/php-fpm.d/www.conf
按i进入编辑模式。
找到user = apache
和group = apache
,将apache
修改为nginx
。
按下Esc键,并输入:wq
保存退出文件。
- 新建并编辑
phpinfo.php
文件,用于展示PHP信息。
运行以下命令,新建phpinfo.php
文件。
plaintext
sudo vim <网站根目录>/phpinfo.php
*<网站根目录>*是您在nginx.conf
配置文件中location ~ .php$
大括号内,配置的root
参数值,如下图所示。
本文配置的网站根目录为/usr/share/nginx/html
,因此需要运行以下命令新建phpinfo.php
文件:
plaintext
sudo vim /usr/share/nginx/html/phpinfo.php
按i进入编辑模式。
输入下列内容,函数phpinfo()
会展示PHP的所有配置信息。
```plaintext
<?php echo phpinfo(); ?>
```
按Esc键后,输入:wq并回车,保存关闭配置文件。
运行以下命令,启动PHP-FPM
。
shell
sudo systemctl start php-fpm
运行以下命令,设置PHP-FPM
开机自启动。
shell
sudo systemctl enable php-fpm
2.9 测试访问LNMP平台
-
在本地物理机打开浏览器。
-
在地址栏输入
http://<ECS实例公网IP地址>/phpinfo.php
。返回结果如下图所示,表示LNMP环境部署成功。
三、搭建WordPress
3.1前提条件
-
已创建Linux操作系统的ECS实例,并且手动部署LNMP环境,本教程使用的相关资源版本如下。
-
实例规格:ecs.c6.large
-
操作系统:公共镜像CentOS 8.1 64位
-
Nginx版本:1.16.1
-
MySQL版本:8.0.17
-
PHP版本:7.3.5
-
WordPress版本:5.4.2
3.2 配置WordPress数据库
- 远程连接ECS实例。
- 进入MySQL数据库。
使用root
用户登录MySQL,并输入密码。密码为您在搭建环境时为数据库设置的密码。
mysql -uroot -p
d.为WordPress网站创建数据库。本教程中数据库名为wordpress
。
create database wordpress;
e.创建一个新用户管理WordPress库,提高安全性。MySQL在5.7版本后默认安装了密码强度验证插件validate_password。您可以登录MySQL后查看密码强度规则。
show variables like "%password%";
本教程中创建新用户user
,新用户密码为PASSword123.
。
create user 'user'@'localhost' identified by 'PASSword123.';
f.赋予用户对数据库wordpress
的全部权限。
grant all privileges on wordpress.* to 'user'@'localhost';
g.使配置生效。
flush privileges;
h.退出MySQL。
exit;
3.2 搭建WordPress网站
-
下载并解压WordPress,然后移动至网站根目录。
-
进入Nginx网站根目录,下载WordPress中文版本压缩包。
cd /usr/share/nginx/html
wget https://cn.wordpress.org/latest-zh_CN.zip
b.解压WordPress压缩包。
unzip latest-zh_CN.zip
c.将WordPress安装目录下的wp-config-sample.php
文件复制到wp-config.php
文件中,并将wp-config-sample.php
文件作为备份。
cd /usr/share/nginx/html/wordpress
cp wp-config-sample.php wp-config.php
d.编辑wp-config.php
文件。
vim wp-config.php
e.按i键切换至编辑模式,根据已配置的WordPress数据库信息,修改MySQL相关配置信息,修改代码如下所示。WordPress网站的数据信息将通过数据库的user
用户保存在名为wordpress
的数据库中。
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');
/** MySQL数据库用户名 */
define('DB_USER', 'user');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'PASSword123.');
/** MySQL主机 */
define('DB_HOST', 'localhost');
f.修改完成后,按下Esc键后,输入:wq
并回车,保存退出配置文件。
3.3 修改Nginx配置文件。
-
运行以下命令打开Nginx配置文件。
vi /etc/nginx/conf.d/default.conf
b.按i键进入编辑模式。在location /
大括号内,将root
后的内容替换为WordPress根目录。本示例中根目录为/usr/share/nginx/html/wordpress。
在location ~ \.php$
大括号内,将root
后的内容替换为WordPress根目录。
修改完成后按Esc键,输入:wq
保存并退出配置文件。
c.运行以下命令重启Nginx服务。
systemctl restart nginx
3.4 安装并登录WordPress网站。
- 在本地物理机上使用浏览器访问
ECS实例公网IP
,进入WordPress安装页面。 - 填写网站基本信息,然后单击安装WordPress。填写信息参数说明:
- 站点标题:WordPress网站的名称。例如:demowp。
- 用户名:登录WordPress时所需的用户名,请注意安全性。例如:testwp。
- 密码:登录WordPress时所需的密码,建议您设置安全性高的密码。例如:Wp.123456。
- 您的电子邮件:用于接收通知的电子邮件。例如:1234567890@aliyun.com。
- 单击登录。
- 输入在安装WordPress时设置的用户名
testwp
和密码Wp.123456
,然后单击登录。
3.成功进入您个人的WordPress网站。
3.5 解析WordPress网站域名
通过实例公网IP地址直接访问您的WordPress网站会降低服务端的安全性。如果您已有域名或者想为WordPress网站注册一个域名,可以参考以下步骤。本示例注册域名为www.WordPress.EcsQuickStart.com
。
-
注册域名。详情请参见域名注册基本流程。
-
备案。如果您的域名指向的网站托管在阿里云中国内地节点服务器,您需要进行备案。如果您是首次备案,请参见首次备案流程,其他情况请参见ICP备案流程概述。
-
解析域名。将域名指向实例公网IP。域名解析是使用域名访问您的网站的必备环节。具体操作流程,请参见设置域名解析。
-
返回ECS控制台,远程连接已搭建WordPress网站的ECS实例,登录MySQL数据库。
mysql -uroot -p
5.切换至WordPress对应的数据库。
use wordpress;
6.将实例公网IP替换为新域名。
update wp_options set option_value = replace(option_value, 'http://实例公网IP', 'http://www.WordPress.EcsQuickStart.com') where option_name = 'home' OR option_name = 'siteurl';
7.退出MySQL。
exit;
成功为WordPress网站设置新域名。
3.6 常见问题
问题描述1
WordPress中设置固定链接后,跳转页面无法访问。解决方案:网站设置伪静态有利于搜索引擎收录网站。您在对WordPress站点设置固定链接前,需要先在Nginx服务器中设置伪静态规则。操作步骤如下:
-
登录搭建WordPress的ECS实例。
-
运行以下命令打开Nginx配置文件。
vi /etc/nginx/conf.d/default.conf
c.按i键进入编辑模式,在location /
大括号内,添加如下代码。
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
添加完成后按Esc键,并输入:wq
并回车,保存退出文件。
d.运行以下命令重启Nginx服务。
systemctl restart nginx
问题描述2
WordPress中更新版本、上传主题或插件时,提示需要FTP登录凭证或无法创建目录。解决方案:
-
登录搭建WordPress的ECS实例。
-
运行以下命令打开WordPress配置文件。
vim /usr/share/nginx/html/wordpress/wp-config.php
c.按i键进入编辑模式,在最下方,添加如下代码。
define("FS_METHOD","direct");
define("FS_CHMOD_DIR", 0777);
define("FS_CHMOD_FILE", 0777);
添加完成后按Esc键,并输入:wq
并回车,保存退出文件。
d.返回WordPress仪表盘,刷新页面,可解决需要FTP登录凭证的问题。如果仍存在无法创建目录的问题,需再次返回ECS实例,运行以下命令,将网站根目录的权限用户更新为Nginx对应的用户,本示例环境中为nginx
用户。
chown -R nginx /usr/share/nginx/html/wordpress
测试访问LNMP配置信息页面后,建议您运行以下命令将phpinfo.php
文件删除,消除数据泄露风险。
plaintext
sudo rm -rf <网站根目录>/phpinfo.php
其中,*<网站根目录>*需要替换为您在nginx.conf
中配置的网站根目录。
本文配置的网站根目录为/usr/share/nginx/html
,因此需要运行以下命令:
plaintext
sudo rm -rf /usr/share/nginx/html/phpinfo.php
四、结论
WordPress是一个功能强大且灵活的内容管理系统,适用于各种网站和博客的建设。它的简单易用性、丰富的主题和插件、移动友好性、SEO功能以及庞大的社区支持使其成为建立和管理网站的最佳选择。无论您是一个刚刚开始建立在线存在的新手还是一个有经验的专业人士,WordPress都将成为您实现在线目标的有力工具。