目录
前言
随着计算机与Internet技术的蓬勃发展,各种Web站点成为直接面向用户的中坚力量,在各种网站服务器软件中,除了Apache外,还有一款轻量级的HTTP服务器软件——Nginx,其稳定性、高效的特性逐渐被越来越多的用户认可。本篇博客将搭建Nginx网站服务器,并配置基于域名的虚拟Web主机。
一、关于Nginx
1、概述
Nginx是由俄罗斯的Igor Sysoev专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力(单台物理服务器可支持30 000~50 000个并发请求)。正因为如此,大量提供社交网络、新闻资讯、电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供Web服务。
2、优点
- 稳定性高
- 系统资源消耗低
- 对HTTP并发连接的处理能力高
- 单台物理服务器可支持30000~50000个并发请求
3、Nginx和Apache的对比
- Nginx是一个基于事件的Web服务器,Apache是一个基于流程的服务器
- Nginx所有请求都由一个线程处理,Apache单个线程处理单个请求
- Nginx避免子进程的概念,Apache是基于子进程的
- Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方面一般
- Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件
- Nginx支持热部署,Apache不支持热部署
- Nginx对于静态文件处理具有更高效率,Apache相对一般
- Nginx在反向代理场景具有明显优势,Apache相对一般
二、安装Nginx服务
1、解压源码包到/opt下,并查看
[root@localhost ~]# cd /mnt ##切换到挂载点目录
[root@localhost mnt]# ls
apr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt
apr-util-1.6.0.tar.gz error.png mysql-5.6.26.tar.gz
awstats-7.6.tar.gz httpd-2.4.29.tar.bz2 nginx-1.12.0.tar.gz
cronolog-1.6.2-14.el7.x86_64.rpm kali.jpg php-5.6.11.tar.bz2
[root@localhost mnt]# tar zxvf nginx-1.12.0.tar.gz -C /opt ##解压Nginx源码包到/opt下
[root@localhost mnt]# cd /opt/ ##切换到解压的目录下
[root@localhost opt]# ls
nginx-1.12.0 rh
2、安装编译须要的环境组件包
[root@localhost opt]# yum -y install \
gcc \ //c语言
gcc-c++ \ //c++语言
pcre-devel \ //pcre语言工具
zlib-devel //数据压缩用的函式库
3、 建立程序用户nginx并编译Nginx
[root@localhost opt]# useradd -M -s /sbin/nologin nginx ##建立程序用户,安全不可登录状态
[root@localhost opt]# id nginx
uid=1001(nginx) gid=1001(nginx) 组=1001(nginx)
[root@localhost opt]# cd nginx-1.12.0/ ##切换到nginx目录下
[root@localhost nginx-1.12.0]# ./configure \ ##配置nginx
> --prefix=/usr/local/nginx \ ##安装路径
> --user=nginx \ ##用户名
> --group=nginx \ ##用户组
> --with-http_stub_status_module ##状态统计模块
4、编译和安装
make -j3 && make install
5、优化nginx启动脚本,以便于系统识别
[root@localhost nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ##建立软链接让系统识别nginx启动脚本
[root@localhost nginx]# nginx -t ##检查配置文件的语法问题
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost nginx]# nginx ##开启ngnix
[root@localhost nginx]# systemctl stop firewalld.service ##关闭防火墙
[root@localhost nginx]# setenforce 0
6、启动、重新配置、停止Nginx
[root@localhost nginx-1.15.9]# nginx ## 启动 Nginx
[root@localhost nginx-1.15.9]# netstat -anpt |grep nginx ## 过滤Nginx的进程
[root@localhost ~]# yum -y install psmisc ###最小安装没有killall令需要安装
[root@localhost ~]# killall -s HUP nginx ## 重载Nginx配置文件(相当于刷新)
[root@localhost ~]# killall -s QUIT nginx ## 退出 Nginx
7、Nginx服务控制文件使用systemctl工具
[root@localhost ~]# vi /lib/systemd/system/nginx.service
[Unit]
Description=nginx ###描述
After=network.target ####描述服务类别
[Service]
Type=forking ###后台运行形式
PIDFile=/usr/local/nginx/logs/nginx.pid ###PID文件位置
ExecStart=/usr/local/nginx/sbin/nginx ###启动服务
ExecReload=/usr/bin/kill -s HUP $MAINPID ###根据PID重载配置
ExecStop=/usr/bin/kill -s QUIT $MAINPID ###根据PID终止进程
PrivateTmp=true
[Install]
WantedBy=multi-user.target
==>> wq 保存
[root@localhost ~]# chmod 754 /lib/systemd/system/nginx.service
[root@localhost ~]# systemctl enabl