nginx学习笔记1
nginx在官方网站提供了软件下载,官网地址:http://nginx.org/en/download.html,目前Nginx发布3种类型的版本:
1.Mainline version:开发版本
2.Stable version:稳定版本
3.Legacy versions:早期版本
在Windows系统上通过virtualbox虚拟机安装的centos7作为学习的服务器,使用xshell连接虚拟机。
一.Nginx安装前相关准备工作
1.将下载好的nginx压缩包通过xftp上传到虚拟机的目录中。如下图所示:
2.切换到解压的目录,将压缩包解压
[shell@shell-learn myusr]$ tar -zxvf /mytools/nginx-1.16.0.tar.gz
3.将用户切换到root用户:
[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服务是否能够开机自启动。