准备工作
1. 云服务器
我选用的是阿里云服务器,操作系统是Ubuntu。因此本文搭建过程中涉及到的具体操作都以Ubuntu为例,其他操作系统可类推。
2. 域名及云解析DNS
有了服务器后,第二步便是申请域名及购买云解析DNS,也是在阿里云上购买的。阿里云会根据我们申请的域名个数自动调整云解析DNS的域名个数和费用。
主要步骤
这里给出用WordPress + Nginx + MySQL + PHP搭建个人博客的主要步骤,让大家对整体流程有一个完整的概念。详细步骤及操作方法见后文。文末附有可能遇到的问题及解决方案。
- 下载WordPress
- 安装PHP
- 安装Nginx
- 安装MySQL
- 创建WordPress用户名和数据库
- 复制WordPress文件到网站根目录
- 配置Nginx使用PHP及我们申请好的域名
- 为WordPress设置
wp-config.php文件 - 安装及配置WordPress
详细步骤
一、下载WordPress
- 在WordPress官网下载安装文件到PC。
- 下载并安装WinSCP。通过WinSCP将WordPress安装文件从PC传输到Ubuntu服务器上。
- 解压WordPress安装文件。
1 | sudo apt install unzip |
1 | unzip wordpress-5.2.1.zip |
二、安装PHP
1 | sudo apt install php |
检查PHP的安装路径:
1 | whereis php-fpm |
启动PHP:
1 | service php7.2-fpm start |
三、安装Nginx
1 | sudo apt install nginx |
启动Nginx:
1 | service nginx start |
启动完成后,在浏览器中访问服务器公网IPhttp://xx.xx.xx.xx,应该可以看到如下页面。实际上打开的是/var/www/html/下的index.nginx-debian.html页面。

四、安装MySQL
我们需要为WordPress创建一个数据库,这里选用的是MySQL数据库服务。
安装MySQL:
1 | sudo apt install mysql-server |
安装完后可以通过以下命令来检查安装结果,如果处于LISTEN状态,则安装成功。
1 | sudo netstat -tap | grep mysql |

五、创建WordPress用户名和数据库
1 | # 替换*adminusername*为你的数据库用户名 |
下面是我替换关键内容后的范例:
1 | $ mysql -u root -p |
六、复制WordPress文件到网站根目录
将解压后的WordPress目录下所有内容(无需转移目录本身)转移到网站根目录下。网站根目录默认为/var/www/html/,为了便于管理,我建立了路径/var/www/www.wendicai.net/作为我的网站根目录。
七、配置Nginx使用PHP及我们申请好的域名
修改Nginx的default配置文件,该文件位于/etc/nginx/sites-available/default。需要更改的地方已在下面列出。
1 | server { |
配置修改后需要重启Nginx服务生效:
1 | sudo service nginx restart |
如何配置Nginx绑定多个域名
值得一提的是,这台Ubuntu服务器是我和小伙伴共用的,我们各自申请了不同的域名,因此需要让Nginx同时识别两个域名,且两个域名对应各自的页面内容。
具体的配置方法如下:
- 分别给每个域名创建一个根目录
1 | root@WebServer:/var/www# ls |
并将原路径/var/www/html/下的所有文件拷贝过去。
- 分别给每个域名创建一个配置文件
在/etc/nginx/vhost路径下为每个域名创建一个配置文件,命名为vhost_<域名关键字>.conf。
1 | root@Ubuntu:/etc/nginx/vhost# ls |
将/etc/nginx/sites-available/default文件内容拷贝到新配置文件中,并按前文所述的配置文件修改方法,分别修改两个域名的配置信息。root网站根目录应分别为步骤1中创建的对应目录。
- 将新配置文件路径加入到
nginx.config中
修改/etc/nginx/nginx.conf文件,在http代码块中添加新的配置文件路径:
1 | http { |
- 重启Nginx服务以生效
1 | service nginx restart |
现在,分别访问两个域名www.wendicai.net和www.xia-weiwen.com,实际打开的页面将分别是/var/www/www.wendicai.net和/var/www/www.xia-weiwen.com下的文件。
八、为WordPress设置wp-config.php文件
在浏览器中访问http://<域名>/wp-admin/install.php, 出现以下页面,要求填入数据库信息。
说明:
Database Name是步骤六中创建的数据库名称,我的是blogdb。
User Name和Password分别是是步骤六中创建的数据库用户名和密码。
Database Host与步骤六中设定的hostname一致,通常是localhost。Table Prefix可以不改,但由于我们要在同一个数据库中管理两个域名下的数据,我在默认前缀后又加上了各自的域名。
点击Submit,可能会遇到以下两种情况:
配置文件自动修改成功。此时不要点击Run the Install,进入步骤八继续。
如果WordPress无法查找到wp-config.php文件,则会根据我们填入的信息自动生成配置文件内容,并建议我们手动创建并编辑wp-config.php文件。
如果是第二种情况,我们只需要在WordPress的解压路径中找到wp-config-sample.php文件,将其重命名为wp-config.php,并将上面自动生成的配置文件内容拷贝到wp-config.php中。
九、安装WordPress
- 如果配置文件自动修改成功,此时点击
Run the install安装即可。 - 如果
wp-config.php为手动创建,需要重新访问http://<域名>/wp-admin/install.php,进入安装。
填入以下个人信息和偏好设置后,点击Install WordPress进行安装。这一页填入的信息将来在WordPress后台http://<域名>/wp-admin都是可更改的。
安装成功啦!接下来就可以登录进入后台愉快地玩耍了~
WordPress怎么玩?可以参考WordPress的官方文档。
WordPress官方中文文档:http://codex.wordpress.org.cn/%E9%A6%96%E9%A1%B5
使用WordPress:http://codex.wordpress.org.cn/%E4%BD%BF%E7%94%A8_WordPress
可能遇到的问题
我在搭建过程中遇到了不少问题,在这里将这些问题与其解决方法分享出来,希望可以帮助大家少走弯路。
- “nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)”
Nginx安装完成后,启动Nginx失败并出现以下报错

这是因为80端口被其他服务占用。可以通过以下命令来检查:
1 | lsof -i:80 |
我的情况是云服务器本身预装了apache,从结果中可以看出80端口被apaceh2占用。

将apache2服务停掉后,成功启动Nginx。

- 主题、插件等“安装失败:无法创建目录”

用以下命令添加权限:
1 | chmod -R 777 /var/www/www.wendicai.net # 网站根目录 |
- “在裁剪您的图像时发生了错误”
在WordPress中裁剪图片时,报错“在裁剪您的图像时发生了错误”。
这是由于PHP的GD库未安装。运行以下命令安装:
1 | apt-get install php7.2-gd |
- 设置中英文摘要长度
在外观->主题编辑器中找到functions.php,在末尾加上以下代码。
中文摘要(替换“100”为你想要的长度):
1 | function iesay_filter_chinese_excerpt( $output ) { |
英文摘要(替换“50”为你想要的长度)
1 | function ie_longer_excerpts( $length ) { |
- 设置文章中所有链接在新窗口中打开
在外观->主题编辑器中找到functions.php,在末尾加上以下代码。
1 | function autoblank($text) { |
- 域名变更了怎么办?
有段时间工作很忙疏于维护博客,结果之前申请的域名就到期被收回了,而且紧接着还被人抢注了= =无奈之下只得更换域名。。
这种情况直接用新域名访问肯定是不行的,需要在Nginx和Wordpress相应的配置文件中也更改为新的域名。
需要修改的主要是以下几处:
- Nginx的配置文件,默认路径是
/etc/nginx/sites-available/default
如果你像我一样自己创建了另外的网站根目录,则需要修改对应目录下的配置文件。按照前文所述的配置,我需要修改的是/etc/nginx/vhost/vhost_wendicai.conf。
修改后需重启Nginx服务以生效:service nginx restart。
- Wordpress上的更改可参考这篇博客
我的情况是原域名WordPress管理区域已经无法访问,因此采取了方法2,在/wp-content/themes/your-theme-folder/functions.php文件底部添加以下代码:
1 | update_option( 'siteurl', 'http://www.wendicai.net' ); |
重新访问新URL,确认一切正常后就可以删除这两行代码了。