#安装 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 | The default server |
按一下英文字母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 | server { |
按ESC退出编辑模式,输入:x
,保存并退出。然后重新启动 nginx,重启 nginx 或者重新加载 nginx 可以让配置文件生效。
1 | service nginx reload |
让 nginx 可以执行 php
接下来我们要修改一下 nginx 的配置文件让他支持使用PHP,将我们的wordpress.conf往下拉,可以看到这段字样的代码:
1 | pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 |
这是 nginx 默认给我们的用来执行 php 的配置,从 location 开始取消注释,能让这个配置生效,然后我们再修改一下PHP的程序位置:
1 | pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 |
注意 root 那一行仍然是被注释掉的,还有 SCRIPT_FILENAME
后面修改了一下,把 /scripts
换成了 $document_root
,保存并退出。然后重新启动 nginx:
1 | service nginx restart |
测试是否可以执行 php
现在,我们已经安装了 php-fpm,并修改了 nginx 的配置文件让它可以去执行 php,下面,我们得去测试一下。我们虚拟主机根目录下面,创建一个 php 文件,命名为 phpinfo.php,然后在这个文件里输入:
1 | phpinfo(); |
保存文件并退出。在浏览器里打开刚才创建的这个 php 文件(域名地址/phpinfo.php)。打开以后,你应该能看到像下面这样的界面,如果能,说明 nginx 已经可以执行 php 了。
配置 MySQL
然后我们需要简单配置一下 mysql ,默认安装以后 mysql 的 root 用户是没有密码的,对于生产环境来说,这肯定是不行的,另外还有一些安全相关的设置,可以使用下面这行命令去配置一下,它是一个向导,问你一些问题,你要给出答案,比如是否要设置 root 用户的密码, 密码是什么等等。
1 | mysql secure installation |
安装 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 环境的服务器了。