WordPress 建站历史(2)| 建站的中期——服务器环境搭建

Posted by 空谷 on 2016-02-03

#安装 Nginx
安装完 nginx 以后,正常的操作是创建虚拟主机,虚拟主机允许我们在同一台服务器上运行多个网站。正常情况下,我将我的域名解析到我的服务器之后,一般是只能访问 Nginx 初始指定的目录的。
而有了虚拟主机,可以将多个域名同时解析到我们这台服务器上,然后通过 Nginx 为不同的域名绑定不同的目录。访问这个域名的时候,会访问对应目录里面的文件。
首先先进入到 nginx 配置文件目录:

1
cd /etc/nginx/conf.d

复制这个目录里的 default.conf 为一个新文件,我给这个文件起名wordpress.conf,复制文件可以使用 cp 命令,

1
cp default.conf wordpress.conf

再去编辑一下这个复制以后的配置文件,可以使用 vim 命令:

1
vi wordpress.conf`
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
The default server	
server {
listen 8000 default_server;
server_name _;

charset koi8-r;

access_log logs/host.access.log main;

Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
include /etc/nginx/default.d/*.conf;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
……

按一下英文字母i后即可开始修改文件。 server_name 就是主机名,也就是跟这个虚拟主机绑定在一块儿的域名,在这里我要把我的域名 arvinx.com 指向服务器,所以在 server_name 后面写上 arvinx.com 和 www.arvinx.com 这两个。紧接着 server_name 下面可以放 root 属性,用于指定这个虚拟主机的根目录,也就是网站所在的目录,当然放在 location 区块里面也是可以的。比如我们要把 arvinx.com 这个网站的文件放在 /home/www/arvinx.com 下面,那么这个 root 后面就是 /home/www/arvinx.com
如果你前面这么做了,那么就去掉 location / 里面的 root 这行代码。再在 index 后面加上一种索引文件名,也就是默认打开的文件,这里要加上一个 index.php ,这样访问我的域名的时候就可以直接打开 root 目录下面的 index.php 了,wordpress的页面都是 .php 的主页。修改之后的样子是这样的:

1
2
3
4
5
6
7
8
server {
listen 80;
root /home/www/arvinx.com;
server_name www.arvinx.com arvinx.com;

location / {
index index.php index.html index.htm;
}

按ESC退出编辑模式,输入:x,保存并退出。然后重新启动 nginx,重启 nginx 或者重新加载 nginx 可以让配置文件生效。

1
service nginx reload

让 nginx 可以执行 php

接下来我们要修改一下 nginx 的配置文件让他支持使用PHP,将我们的wordpress.conf往下拉,可以看到这段字样的代码:

1
2
3
4
5
6
7
8
9
pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}

这是 nginx 默认给我们的用来执行 php 的配置,从 location 开始取消注释,能让这个配置生效,然后我们再修改一下PHP的程序位置:

1
2
3
4
5
6
7
8
9
pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

注意 root 那一行仍然是被注释掉的,还有 SCRIPT_FILENAME 后面修改了一下,把 /scripts 换成了 $document_root ,保存并退出。然后重新启动 nginx:

1
service nginx restart

测试是否可以执行 php

现在,我们已经安装了 php-fpm,并修改了 nginx 的配置文件让它可以去执行 php,下面,我们得去测试一下。我们虚拟主机根目录下面,创建一个 php 文件,命名为 phpinfo.php,然后在这个文件里输入:

1
<?php phpinfo(); ?>

保存文件并退出。在浏览器里打开刚才创建的这个 php 文件(域名地址/phpinfo.php)。打开以后,你应该能看到像下面这样的界面,如果能,说明 nginx 已经可以执行 php 了。

配置 MySQL

然后我们需要简单配置一下 mysql ,默认安装以后 mysql 的 root 用户是没有密码的,对于生产环境来说,这肯定是不行的,另外还有一些安全相关的设置,可以使用下面这行命令去配置一下,它是一个向导,问你一些问题,你要给出答案,比如是否要设置 root 用户的密码, 密码是什么等等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql secure installation

Enter current password for root (enter for none):
解释:输入当前 root 用户密码,默认为空,直接回车。
Set root password? Y/n  y
解释:要设置 root 密码吗?输入 y 表示愿意。
Remove anonymous users? Y/n  y
解释:要移除掉匿名用户吗?输入 y 表示愿意。
Disallow root login remotely? Y/n  y
解释:不想让 root 远程登陆吗?输入 y 表示愿意。
Remove test database and access to it? Y/n  y
解释:要去掉 test 数据库吗?输入 y 表示愿意。
Reload privilege tables now? Y/n  y
解释:想要重新加载权限吗?输入 y 表示愿意。

安装 php 扩展

现在,我们有了可以提供 web 服务的 nginx ,并且安装了 php-fpm ,配置了 nginx 可以让它去执行 php ,也安装了数据库管理系统。不过在运行真正的网站的时候,我们还需要为 php 安装一些额外的扩展,比如 处理 mysql 数据库的 mysql 扩展,缓存功能的 apc 扩展,处理图像的 gd 扩展等等。安装它们同样可以使用 yum 命令。

1
yum install php-pecl-apc php-mysql php-gd php-mcrypt php-pear php-mbstring php-xmlrpc php-dom

上面安装了一些 php 的扩展,如果你发现在安装网站的时候提示需要安装其它的扩展,同样可以使用 yum 命令去安装。安装完成以后,需要重启一下 php-fpm :

1
service php-fpm restart

目录与文件的权限问题

网站上面有些目录或文件需要有写入权限,这样你得为这些目录和文件分配合适的权限,一般可以把它们的拥有者设置成 php 和 nginx 使用的用户,默认 nginx 的用户就是 nginx ,而 php-fpm 使用的用户默认是 apache。我们可以把它们改成一个统一的用户,可以修改 php-fpm 的用户为 nginx 。你可以使用下面的命令去查看 php-fpm 所使用的用户名:

1
ps aux|grep nginx

修改所使用的用户,可以通过使用 php-fpm 的配置文件,php-fpm 的配置文件是:/etc/php-fpm.conf,还有在/etc/php-fpm.d/* 这个目录里的所有文件都是 php-fpm 的配置文件。默认这个目录里有一个 www.conf ,你可以编辑这个文件来修改 php-fpm 所使用的用户名称。使用 vi 命令:
vi /etc/php-fpm.d/www.conf
打开文件以后你可以搜索下关键词 user 或 apache,输入 :/user:/apache ,会搜索到结果,按 n 可以继续向下查找,按 N 可以向上查找。直到你看到:

1
user = apache

把它修改成:

1
user = nginx

esc 退出,再输入 :x ,重启下 php-fpm,这样我们的 nginx 服务器还有 php-fpm 会使用同一个用户:nginx,你可以把要可以有写入权限的目录与文件的拥有者修改成 nginx 就行了。可以使用 chown 命令:

1
chown -R nginx 目录名/文件名

好了,现在我们就已经拥有一台 LNMP 环境的服务器了。