nginx在官方网站提供了软件下载,官网地址:http://nginx.org/en/download.html,目前Nginx发布3种类型的版本:html
1.Mainline version:开发版本nginx
2.Stable version:稳定版本c++
3.Legacy versions:早期版本正则表达式
在Windows系统上经过virtualbox虚拟机安装的centos7做为学习的服务器,使用xshell链接虚拟机。算法
一.Nginx安装前相关准备工做shell
1.将下载好的nginx压缩包经过xftp上传到虚拟机的目录中。以下图所示:windows
2.切换到解压的目录,将压缩包解压centos
[shell@shell-learn myusr]$ tar -zxvf /mytools/nginx-1.16.0.tar.gz 浏览器
3.将用户切换到root用户:bash
[shell@shell-learn nginx-1.16.0]$ su root
4.nginx目录结构介绍
src目录:存放Nginx的源代码
man目录:存放Nginx的帮助文档
html目录:存放默认网站文件
contrib目录:存放其余机构或组织贡献的文档资料
conf目录:存放Nginx服务器的配置文件
auto目录:存放大量的脚本文件,和configure脚本程序相关
configure文件:Nginx自动安装脚本,用于检查环境,生成编译代码须要的makefile文件
CHANGES、CHANGES.ru、LICENSE、README都是Nginx服务器的相关文档资料
5.Nginx相关依赖包
pcre-devel:为Nginx模块(如rewrite)提供正则表达式库
zlib-devel:为Nginx模块(如gzip)提供数据压缩用的函数库
openssl-devel:为Nginx模块(如ssl)提供密码算法、证书以及SSL协议等功能
安装命令:
yum -y install pcre-devel openssl-devel
因为openssl-devel依赖于zlib-devel,在经过安装openssl-devel时会自动解决依赖,所以不须要安装zlib-devel
二.Nginx编译安装
1.切换到解压目录
[root@shell-learn myusr]$ cd nginx-1.16.0/
2.配置Nginx的编译选项,指定安装目录
[root@shell-learn nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module
其余模块暂时用不到,当用到的时候从新编译Nginx,并使用--with-选项添加须要的模块便可。
编译时候,出现错误:./configure: error: C compiler cc is not found ,须要安装编译插件:
[root@shell-learn nginx-1.16.0]#yum -y install gcc-c++
3.经过make命令编译和安装Nginx
[root@shell-learn nginx-1.16.0]# sudo make && make install
三.Nginx的启动和中止
1.启动Nginx
[root@shell-learn nginx-1.16.0]# cd /usr/local/nginx/sbin
[root@shell-learn sbin]# ./nginx
2.查看Nginx运行状态
[root@shell-learn sbin]# ps aux|grep nginx
root 6324 0.0 0.1 45952 1128 ? Ss 09:08 0:00 nginx: master process ./nginx
nobody 6325 0.0 0.1 46412 1904 ? S 09:08 0:00 nginx: worker process
root 6328 0.0 0.0 112708 984 pts/0 R+ 09:09 0:00 grep --color=auto nginx
前两行分别是Nginx主进程和工做进程,第三行是grep Nginx命令。主进程以root用户运行,而工做进程以nobody用户运行,进程ID分别是6324 和 6325。
3.中止Nginx服务
当即中止服务:
[root@shell-learn sbin]# ./nginx -s stop
从容中止服务:
[root@shell-learn sbin]# ./nginx -s quit
经过kill或者killall命令杀死进程:
kill Nginx的主进程的PID
killall nginx
4.查看端口号占用
netstat -tlnp
四.访问测试
1.安装iptables防火墙
在CentOS 7中防火墙由firewalld来管理,咱们这里使用iptables管理方式。
中止firewalld服务:
systemctl stop firewalld
systemctl mask firewalld
安装iptables-services:
yum install iptables-services
启动iptables服务
systemctl start iptables
设置开机启动:
systemctl enable iptables
2.配置iptables防火墙,实现开放80端口的访问
[root@shell-learn ·]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
参数说明:
-I INPUT:表示在INPUT(外部访问规则)中插入一条规则
-p tcp:指定数据包匹配的协议(tcp、udp、icmp等),这里指定tcp协议
--dport 80:用于指定数据包匹配的目标端口号,这里指定80端口
-j ACCEPT:指定对数据包的处理操做(ACCEPT、DROP、REJECT、REDIRECT等),这里指定ACCEPT操做
3.查看防火墙状态
[root@shell-learn ·]# service iptables status
4.须要将临时生效的配置保存
[root@shell-learn ·]# service iptables save
5.重启iptables 防火墙
[root@shell-learn ·]# service iptables restart
6.访问Nginx主页
在windows系统中经过浏览器进行访问:http://nginx服务器的ip地址
五.添加到环境变量
1.查看环境变量
[root@shell-learn ·]# echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/shell/.local/bin:/home/shell/bin
其中/bin和/sbin放置经常使用程序;sbin表示须要管理员权限;/usr/bin和/usr/sbin放置一些工具软件的可执行程序;/usr/local/bin和/usr/local/sbin放置用户自行安装的可执行程序。
2.经过软连接将nginx程序连接到/usr/local/sbin目录中
[root@shell-learn ·]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx
建立软连接后,就能够在任意目录下直接使用nginx命令来控制nginx服务。
六.添加到系统服务
在centos系统中,service命令其实是调用了/etc/init.d目录下的shell脚本,所以将nginx添加到系统服务中时,须要在/etc/init.d目录中编写一个文件名称为nginx的shell脚本。
#! /bin/bash
#Startup script for the nginx Web Server
DAEMON=/usr/local/nginx/sbin/nginx
case "$1" in
start)
echo "Starting Nginx daemon..."
$DAEMON && echo "SUCESS"
;;
stop)
echo "Stopping Nginx daemon..."
$DAEMON -s quit && echo "SUCESS"
;;
reload)
echo "Reloading Nginx daemon..."
$DAEMON -s reload && echo "SUCESS"
;;
restart)
echo "Restart Nginx daemon..."
$DAEMON -s quit
$DAEMON && echo "SUCESS"
;;
*)
echo "Usage: service nginx {start|restart|reload|stop|test|show}"
;;
esac
保存脚本,并为nginx脚本添加可执行权限
[root@shell-learn ·]# chmod +x /etc/init.d/nginx
七.设置开机自启动
若nginx服务实现开机启动,就须要在/etc/init.d/nginx脚本文件中添加对chkconfig的支持,打开脚本文件,在第二行的位置新增以下内容:
#chkconfig: 35 85 15
其中35表示nginx服务容许的启动级别是3和5,若暂时不开启任何启动级别,可使用“-”代替。85和15用于设置nginx服务的启动(S)顺序和关闭(K)顺序。数值小的先执行,数值大的后执行。该值是用户自定义取值范围在0-99之间。
使用chkconfig命令执行添加nginx服务自启动操做,具体命令以下:
[root@shell-learn ·]# chkconfig --add nginx
经过chkconfig --list查看添加后的效果。
从新启动Linux系统,测试nginx服务是否可以开机自启动。