一、Nginx基础
Nginx专为性能优化而开发,最知名的优点为:稳定、资源消耗低和对HTTP并发连接的高处理能力。
1.1 Nginx安装及运行控制
1.1.1 Nginx安装
以Nginx1.12版本为例,使用源代码包(可从官方网站http://www.nginx.org下载的形式下载。
1.1.2 Nginx的运行控制
因为前面创建了一个连接,所以可以在任何环境中使用nginx,直接使用就是启动nginx。结合“-t”选项是对主配置文件验证,”-c“选项则可以指定其他配置文件的路径进行验证。
若要终止nginx的运行,可以使用pkill命令终止nginx。也可以编写Nginx服务脚本,这样就能够使用chkconfig和systemctl工具管理了。通过在”/etc/init.d/“中创建名为nginx的脚本,写入以下内容:
在脚本编辑成功之后,加上运行权限,使用”chkconfig --add nginx“将nginx添加为系统服务,就可以使用chkconfig和systemctl进行管理了。
1.2 Nginx的主配置文件
主配置文件位于其安装目录的conf目录中,名为”nginx.conf“,包括全局配置、I/O事件配置和HTTP配置这三大块内容,配置语句的格式为:”关键字 值;“。
1.2.1 全局配置
由各种配置语句组成,不使用特定的界定标记。可以设置Nginx服务的运行用户、工作进程数、错误日志、PID存放位置等。
1.2.2 I/O事件配置
使用”events {}“界定标记,可以设置Nginx进程的I/O响应模型、每个进程的连接数等设置。进程的连接数与工作进程数有关联,关系为:工作进程数×进程的连接数=nginx提供服务的连接数。
1.2.3 HTTP设置
使用”http {}“界定标记,可以设置访问日志、HTTP端口、网页目录、默认字符集、连接保持、虚拟主机、PHP解析等,其中大部分配置语句都包含在子定界标记"server {}"内。
1.3 访问状态统计
Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的Web访问情况。需要在配置时添加该模块,还需要修改nginx.conf配置文件,指定访问位置并添加stub_status配置代码。例如:
可以在浏览器中进行验证,使用IP地址进行访问并在后面指定"/status" 。
二、Nginx访问控制
与Apache一样,有基于用户授权文件、IP的访问控制。
2.1 基于授权的访问控制
当客户端要访问网页时,需要输入账号和密码才能继续访问,主要为以下几个步骤:
- 生成用户密码认证文件。
- 修改主配置文件相对应记录,添加认证配置项。
- 重启服务,访问测试。
2.2 基于IP的访问控制
nginx基于客户端的访问控制规则如下:
- deny IP/IP段:拒绝某个IP或网段的客户端访问。
- allow IP/IP段:允许某个IP或网段的客户端访问。
- 规则从上到下执行,如匹配则停止。
只需在站点的location中添加上述格式的规则语句,重启服务后即可生效。
三、Nginx虚拟主机
Nginx和Apache一样,都可以在一台主机中托管多个站点。这些站点可以基于IP、域名、端口进行区分。
3.1 基于域名的虚拟主机
只需在主配置文件的对应域名站点中的location中指定网页文件所在的位置,并且确保nginx能够找到这个位置。
注意开始是没有fkk这个目录的,需要自己创建,并在里面添加网页文件,不同的站点不能使用相同的目录。可以根据自己需求创建多个"server {}"站点。
3.2 基于IP的虚拟主机
这种方式的站点数量会受主机拥有的IP地址数量的限制,因为一个IP对应一个站点。只需在站点中的listen项中添加IP地址即可,端口号可以保留或删除。
3.3 基于端口的虚拟主机
在实验环境中访问时,也使用”IP:端口“方式。
四、LNMP架构部署及应用
4.1 安装MySQL服务
一般建议以源码包安装,本次用MySQL的5.6.36版本。先解压源码包并进入已解压后的目录中,使用cmake工具进行配置,以上步骤成功之后进行安装。
在配置过程中,将默认使用的字符集设置为utf8,并添加其他字符集的支持(需要先安装cmake,可使用yum安装)。
上述的配置命令中,各选项的含义如下:
- -DCMAKE_INSTALL_PREFIX:指定将mysql数据库程序安装到某目录下。
- -DSYSCONFDIR:指定初始化参数文件目录
- -DEFAULT_CHARSET:指定默认使用的字符集编码。
- -DEFAULT-COLLATION:指定默认使用的字符集校对规则,utf8_general_ci是适用于UTF-8字符集的通用规则。
- -DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码。
为了加强数据库服务的权限控制,需要使用专门的运行用户。此用户不需要登录,不需要家目录:
以上所有步骤都完成之后就可以启动mysql了,此时的mysql没有root密码,建议进行设置。
4.2 安装PHP解析环境
若要让Nginx能够解析PHP网页,有两种方法:
- 将访问PHP页面的WEB请求交给其他服务器(LAMP)去处理。
- 使用PHP的FPM模块调用本机的PHP环境。
此次以FPM模块进行处理。大致步骤为:编辑php-fpm.conf文件,修改其中的PID文件、运行用户/组(需要创建一个php用户,不能登录)、服务数(进程数量)等相关设置,之后启动php-fpm程序即可。
在php的安装路径/etc/php-fpm.conf文件中找到以下字符:
建议在nginx的服务脚本中添加与nginx相同结构的php-fpm的控制语句(php-fpm也可以直接执行php-fpm指令启动),以便在启动/停止Nginx服务器时将php-fpm进程也自动停止。
无论是将PHP页面交给LAMP服务去解析,还是调用本机的php-fpm进程进行解析,都需要在“"server{}"配置段中添加location设置,以便指定当访问.php页面时采取何种操作。
调用本机的php-fpm进程进行解析,使用的配置语句如下所示:
之后重启nginx服务即可生效。最后可以创建一个测试页面,位置在基于上面图片中的root项,用来测试PHP语句能否正常解析,以及能否连接数据库。