0


Nginx网站服务

一、Nginx基础

    Nginx专为性能优化而开发,最知名的优点为:稳定、资源消耗低和对HTTP并发连接的高处理能力。

1.1 Nginx安装及运行控制

1.1.1 Nginx安装

    以Nginx1.12版本为例,使用源代码包(可从官方网站http://www.nginx.org下载的形式下载。

安装过程中的pcre-devel和zlib-devel分别是提供基于perl语言的正则表达式和压缩作用。

1.1.2 Nginx的运行控制

    因为前面创建了一个连接,所以可以在任何环境中使用nginx,直接使用就是启动nginx。结合“-t”选项是对主配置文件验证,”-c“选项则可以指定其他配置文件的路径进行验证。 

    若要终止nginx的运行,可以使用pkill命令终止nginx。也可以编写Nginx服务脚本,这样就能够使用chkconfig和systemctl工具管理了。通过在”/etc/init.d/“中创建名为nginx的脚本,写入以下内容:

①指定解释器

②第一项指定nginx进程的运行级别(即选择运行在单用户模式、多用户模式、图形化模式等),全部为"-",多个级别之间没有间隔。第二项指定开机自启的优先级,越大优先级越高,普通进程最高99。第三项指定关闭优先级,越小关闭的时间靠后。

③写描述,此项可以自定义。

④通过控制语句,如if、case,判断输入的参数(参数一般为start、reload、restart、stop),并进行响应的处理,这些处理需要使用nginx命令和pkill命令(用于终止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 {}"内。

log_format main项可以设置访问日志的格式

listen指定不同站点各自监听的端口

root指定网页文件所在目录

charset可以设置默认字符集

keepalive_timeout设置连接保持时间

server {}设置虚拟主机,也叫站点、网站

location ~.php {} 可以设置php解析相关配置

1.3 访问状态统计

    Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的Web访问情况。需要在配置时添加该模块,还需要修改nginx.conf配置文件,指定访问位置并添加stub_status配置代码。例如:![](https://img-blog.csdnimg.cn/direct/df11b64a005d4160883eb06a12a5fc18.png)

可以在浏览器中进行验证,使用IP地址进行访问并在后面指定"/status" 。

二、Nginx访问控制

    与Apache一样,有基于用户授权文件、IP的访问控制。

2.1 基于授权的访问控制

    当客户端要访问网页时,需要输入账号和密码才能继续访问,主要为以下几个步骤:
  • 生成用户密码认证文件。 > > - 使用命令htpasswd生成用户认证文件(该命令可安装httpd-tools获取)。> - htpasswd -c nginx安装路径/文件名.db 用户名 #新建授权文件并添加用户 > - htpasswd nginx安装路径/文件名.db 用户名 #在已有授权文件中添加用户> - 建议修改文件权限为400,且属主改为nginx。
  • 修改主配置文件相对应记录,添加认证配置项。 > > - 在对应的站点的location中添加以下字段 - auth_basic ”secret“;#指定验证方法为密码- auth_basic_user_file 用户授权文件位置;
  • 重启服务,访问测试。

2.2 基于IP的访问控制

    nginx基于客户端的访问控制规则如下:
  • deny IP/IP段:拒绝某个IP或网段的客户端访问。

  • allow IP/IP段:允许某个IP或网段的客户端访问。

  • 规则从上到下执行,如匹配则停止。

     只需在站点的location中添加上述格式的规则语句,重启服务后即可生效。
    

三、Nginx虚拟主机

    Nginx和Apache一样,都可以在一台主机中托管多个站点。这些站点可以基于IP、域名、端口进行区分。

3.1 基于域名的虚拟主机

    只需在主配置文件的对应域名站点中的location中指定网页文件所在的位置,并且确保nginx能够找到这个位置。  ![](https://img-blog.csdnimg.cn/direct/b92c16f1559d4dac8ae80a8942daee69.png)

注意开始是没有fkk这个目录的,需要自己创建,并在里面添加网页文件,不同的站点不能使用相同的目录。可以根据自己需求创建多个"server {}"站点。

3.2 基于IP的虚拟主机

    这种方式的站点数量会受主机拥有的IP地址数量的限制,因为一个IP对应一个站点。只需在站点中的listen项中添加IP地址即可,端口号可以保留或删除。

3.3 基于端口的虚拟主机

在实验环境中访问时,也使用”IP:端口“方式。

四、LNMP架构部署及应用

4.1 安装MySQL服务

      一般建议以源码包安装,本次用MySQL的5.6.36版本。先解压源码包并进入已解压后的目录中,使用cmake工具进行配置,以上步骤成功之后进行安装。

    在配置过程中,将默认使用的字符集设置为utf8,并添加其他字符集的支持(需要先安装cmake,可使用yum安装)。![](https://img-blog.csdnimg.cn/direct/10416cf9bf77420593fde46b512b586c.png)

    上述的配置命令中,各选项的含义如下:
  • -DCMAKE_INSTALL_PREFIX:指定将mysql数据库程序安装到某目录下。

  • -DSYSCONFDIR:指定初始化参数文件目录

  • -DEFAULT_CHARSET:指定默认使用的字符集编码。

  • -DEFAULT-COLLATION:指定默认使用的字符集校对规则,utf8_general_ci是适用于UTF-8字符集的通用规则。

  • -DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码。

    为了加强数据库服务的权限控制,需要使用专门的运行用户。此用户不需要登录,不需要家目录:

useradd -M -s /sbin/nologin mysql -g mysql

#使用此用户对数据库进行初始化

mysql的安装路径/scripts/mysql_install_db --basedir=mysql的安装路径 datadir=mysql的安装路径/data --user=mysql

以上所有步骤都完成之后就可以启动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文件中找到以下字符:
    
  • pid:此字符用于确认pid文件的位置,去掉注释
  • user:运行用户
  • group:运行组
  • pm.max_children:
  • pm.start_servers
  • pm.min_spare_servers:最少空闲进程数
  • pm.max_spare_servers:最多空闲进程数
    建议在nginx的服务脚本中添加与nginx相同结构的php-fpm的控制语句(php-fpm也可以直接执行php-fpm指令启动),以便在启动/停止Nginx服务器时将php-fpm进程也自动停止。

    无论是将PHP页面交给LAMP服务去解析,还是调用本机的php-fpm进程进行解析,都需要在“"server{}"配置段中添加location设置,以便指定当访问.php页面时采取何种操作。

    调用本机的php-fpm进程进行解析,使用的配置语句如下所示:![](https://img-blog.csdnimg.cn/direct/5e30225e616b43d89f114324e94f2e83.png)

之后重启nginx服务即可生效。最后可以创建一个测试页面,位置在基于上面图片中的root项,用来测试PHP语句能否正常解析,以及能否连接数据库。

<?php $link=mysqli_connect('127.0.0.1','root','数据库密码'); if($link) echo "OK"; #如果数据库连接成功则显示OK mysqli_close($link); #关闭数据库连接。 ?>
标签: nginx 运维

本文转载自: https://blog.csdn.net/m0_64000472/article/details/139743390
版权归原作者 永远的1M2 所有, 如有侵权,请联系我们删除。

“Nginx网站服务”的评论:

还没有评论