CentOS7使用LNMP+Wordpress搭建个人博客




本站博客已经改用hexo,改用原因在这边文章已经说的很清楚了:从wordpress到hexo:我的博客早该如此
如果想用hexo,可以参考这篇文章:使用更轻量的hexo搭建个人博客

自己的服务器上面搭建了一个SSR,几个小伙伴一起用的很欢乐,但是看着服务器里面整整40G的空间才用了3G多,这是赤裸裸的浪费啊.

1
2
3
4
5
6
7
8
[[email protected] Sat Jan 27 15:21:36 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 3.4G 34G 10% /
devtmpfs 487M 0 487M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 432K 496M 1% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/0

秉着浪(zhe)费(teng)可(bu)耻(xi)的精神,继续折腾! 其实云服务器除了可以搭建梯子之外,用处还是蛮多的,比如搭建网站,做个自己的博客之类的,或者离线下载服务器,这样下载慢速资源的时候就不用一直开着自家电脑浪费电力了,或者搭建自己的邮件服务器,邮箱类似于[email protected],还有就是搭建个人网盘,或者同步服务器。

今天就先讲一下如何搭建个人博客。

本站服务器供应商为vultr。
如果需要服务器,可以考虑用我下面的推荐链接注册vultr:每个月$3.5就能有512M RAM,20G,1核的CN2线路服务器了,支持支付宝和微信付款,这样我能得到$10,也是对我付出努力的支持。

安装LNMP

这次准备的是LNMP+WordPress 方式搭建个人博客,LNMP=Linux(操作系统)+Nginx(网页服务器)+MariaDB(数据库管理系统)+Php(脚本语言),搭建网站除了LNMP之外,还有LAMP,即Linux+**Apache**+MariaDB+Php,区别在于网页服务器,一个使用Apache,即httpd,一个是用Nginx,Apache对动态页面响应更快,Nginx对动态页面相应慢,但是对静态页面的响应速度快于Apache,而且Nginx更省资源,对于用最低配的服务器搭建个人博客来说,还是Nginx更适合。

wordpress的运行需要安装NginxPhp-fpmMariadb三个组件,分别启动,进行相关设置并设置开机自启。

MySQL

首先需要配置源,进入MariaDB官网定制MariaDB的官方源,选择合适MariaDB版本。如CentOS 7选择:CentOS > CentOS 7 (x86_64) > 10.3 [Stable],配置源的方法在官网页面选择源之后,页面下方会显示出来。

选择版本

之后将官网的配置复制下来,添加为源:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 编辑源
vim /etc/yum.repos.d/MariaDB.repo

# 将复制来的配置填入
# MariaDB 10.2 CentOS repository list - created 2018-01-27 07:39 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

# 安装MariaDB
yum install MariaDB-server -y

# 启动服务并设置开机启动
systemctl start mariadb
systemctl enable mariadb

之后是设置MariaDB
此步,主要是MariaDB的安全设置,第一次安装mysql需要运行此命令

1
mysql_secure_installation

因为是初次设置MariaDB,root密码是空的,所以在要求输入密码时直接回车:

1
2
3
4
5
6
7
8
9
10
11
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

# 是否设置root密码,建议设置密码以提高安全性,输入y并回车
Set root password? [Y/n] y

# 设置密码
New password:

# 再次输入密码
Re-enter new password:

接下来是数据库相关设置,可以全都输入y,以下是截取的部分输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
...
Remove anonymous users? [Y/n] y # 删除匿名用户
...

Disallow root login remotely? [Y/n] y # 禁止root远程登录
...

Remove test database and access to it? [Y/n] y # 删除test数据库
...

Reload privilege tables now? [Y/n] y # 刷新权限
...
Thanks for using MariaDB!

Php-fpm

安装php用webtatic源,更新较快,且其命名有自己的特色方式,可以避免与其他源的某些冲突

1
2
3
4
5
6
7
8
9
10
11
# 配置PHP源
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

# 安装PHP以及PHP扩展
yum install php72w-fpm -y
yum install php72w-gd php72w-mysqlnd php72w-pdo php72w-mcrypt php72w-mbstring php72w-xmlrpc -y

# 启动服务并设置开机启动
systemctl start php-fpm
systemctl enable php-fpm

安装好后进行配置

1
2
3
4
5
6
7
# 编辑配置文件
vim /etc/php.ini

# 找到
;cgi.fix_pathinfo=1
# 去掉注释,并将1改成0
cgi.fix_pathinfo=0

Nginx

官方nginx有两个版本,mainline和stable,即开发版和稳定版,区别是前者引入新特性但可能有新bug,后者足够稳定。事实上,两者均比较稳定,nginx的网站总是运行在mainline版上,不过还是推荐新手选择稳定版。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 编辑repo文件
vim /etc/yum.repos.d/nginx.repo

# 写入如下内容
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

# 安装nginx
yum install nginx -y

# 启动服务并设置开机启动
systemctl start nginx
systemctl enable nginx

这时lnmp环境就安装成功了。

安装Nginx之后存在一个默认配置,只要前面配置没有错误,那么nginx启动之后就可打开默认网页。

直接用浏览器打开主机IP地址或者域名,就可以看到nginx的欢迎页面,说明nginx已经在工作了。

假设IP地址为1.2.3.4,域名为www.wenjinyu.me ,能用域名打开的前提是已经设置了解析,不知道怎么设置解析可以移步设置域名解析:给域名设置一些实用有趣的二级域名

nginx安装成功后的欢迎界面

wordpress的运行涉及php脚本,所以需要配置nginx以支持PHP

1
vim /etc/nginx/conf.d/default.conf

修改后配置是这样的,需要修改的部分已经做了标注,假设wordpress将会放在/var/www/wordpress目录下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server {
listen 80;
server_name www.wenjinyu.me;

location / {
root /var/www/wordpress; # 改为存放wordpress的目录
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/wordpress; # 改为存放wordpress的目录
}


# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ { # 此大括号的内容全部取消注释
root /var/www/wordpress; # 改为存放wordpress的目录
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

对上面有提到的地方改动即可,其他地方保持默认配置,不建议新手刚开始接触时就进行更改,不然往后出现问题很难找到解决办法。

问题解决

  1. 启动php时报错:Failed to start The PHP FastCGI Process Manager.
  1. 重启nginx报错:nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)
  1. 运行mysql时报错:ERROR 1558 (HY000): Column count of mysql.user is wrong. Expected 43, found 39.....
  1. 启动nginx时报错:Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

测试

安装后一般需要测试Php-fpm能否正常运行,可以通过添加php相关信息这种简单的方法测试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 新建wordpress存储文件夹
mkdir /var/www/wordpress/

# 添加phpinfo.php文件并编辑
vim /var/www/wordpress/phpinfo.php

# 写入如下代码,并保存
<?php
phpinfo();
?>

# 重启nginx和PHP
systemctl restart nginx
systemctl restart php-fpm

再次访问你的主机地址或域名: http://1.2.3.4/phpinfo.php 或者 http://www.wenjinyu.me/phpinfo.php 可见到php相关信息,说明PHP和nginx已经配合工作了。 此时LNMP网络服务环境就已初步搭建了。

配置

wordpress是一个已经开发成熟的博客,其实就是各种网页和配置文件的存档,需要做的就是下载下来,配置好,然后就可以直接用了。

MySQL

wordpress的使用除了需要php-fpm来运行php脚本外,还需要数据库来管理用户数据和文章数据,这里用的数据库是mariadb。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 登录MariaDB,密码是之前设置的
mysql -u root -p

# 建立名为“wordpress”的数据库
CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)

# 建立名为“root”的用户,并设置密码为“passwd”
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'wppw';
Query OK, 0 rows affected (0.00 sec)

# 修复权限
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
Query OK, 0 rows affected (0.00 sec)

# 退出
exit

Nginx

上面所讲的php设置只是一个测试,下面才是Php-fpm需要对wordpress做的设置

1
2
# 配置站点文件的路径,并启用unix socket通信
vim /etc/nginx/conf.d/default.conf

做如下修改,后面有注释的地方都需要修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
server {
listen 80;
server_name localhost;

location / {
root /var/www/wordpress; # 修改为wordpress存放目录
index index.php index.html index.htm; # 添加index.php
try_files $uri $uri/ /index.php$is_args$args; # 添加本行
}

error_page 404 /404.html;

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/wordpress;
}


location ~ \.php$ {
root /var/www/wordpress; # 修改为wordpress存放目录
fastcgi_split_path_info ^(.+\.php)(/.+)$; # 添加本行
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; # 修改本行
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

Php-fpm

配置Php-fpm,开启unix socket通信以适应上面所做的修改,并修改用户名和用户组

1
2
3
4
5
6
vim /etc/php-fpm.d/www.conf

# 修改unix socket通信,第22行找到
listen = 127.0.0.1:9000
# 并修改为
listen = /var/run/php-fpm/php-fpm.sock

找到如下字段,去掉注释,并将nobody改为nginx,否则unix socket通信功能无效,nginx将无法与PHP连接。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 第8、10行
user = apache
group = apache
# 修改为
user = nginx
group = nginx

# 第33、34行
;listen.owner = nobody
;listen.group = nobody
# 改为
listen.owner = nginx
listen.group = nginx

重启nginx、php-fpm

1
2
systemctl restart nginx
systemctl restart php-fpm

安装WordPress

下载并配置

1
2
3
4
5
6
# 进入/tmp文件夹,下载并解压wordpress,/tmp文件夹里的文件会在重启的时候清空,所以最适合作为临时存放目录
cd /tmp && wget wordpress.org/latest.tar.gz
tar xvzf latest.tar.gz && cp -rf wordpress/* /var/www/wordpress/

# 复制配置文件
cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php

接下来将WordPress连接至已经建好的数据库,找到数据库的配置字段,并按刚才建立wordpress的数据库时所设置的数据库、用户名、密码进行修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 打开配置文件
vim /var/www/wordpress/wp-config.php

# 修改
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress'); # 此处改为刚才建立数据库时使用的名字,即wordpress

/** MySQL database username */
define('DB_USER', 'root'); # 改为数据库用户名,刚才设置的用户名是root

/** MySQL database password */
define('DB_PASSWORD', 'passwd'); # 改为数据库密码,passwd只是个示例

# 修复网站所在文件夹的权限
cd /var/www/
chown nginx:nginx * -R
usermod -a -G nginx nginx

此时已搭建完成,用浏览器访问如下地址 (假设站点IP为1.2.3.4,域名为www.wenjinyu.me) 并启动安装WordPress。

1
1.2.3.4/wp-admin/install.php

1
www.wenjinyu.me/wp-admin/install.php

这样就安装成功了,然后在进入这个网址的时候就能看到经典的wordpress安装界面(由于当时安装成功的时候太激动,以至于忘记截图,只能网上偷一张过来):

wordpress安装界面

后期维护

查看nginx系统日志

1
journalctl -u nginx




评论