1、下载版本并解压
http://nginx.org/
其中Mainline version为开发版、Stable version为稳定版、Legacy versions为历史版本, 我们选择稳定版复制此链接,下载到我们自己的软件包如/mydata/目录下
# cd /mydata/
# wget http://nginx.org/download/nginx-1.20.2.tar.gz
2、安装依赖
查看系统核心版本:
# cat /etc/redhat-release
CentOS Linux release 8.4.2105
安装依赖
# yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel firewalld autoconf automake
3、创建www用户和www用户组
# 查看当前系统是否已经存在用户www
cat /etc/passwd | grep www
# 查看当前系统是否存在用户组www
cat /etc/group | grep nginx
// 创建www用户和用户组(用户组会自动创建),
# useradd -M -s /sbin/nologin www 创建用户www,并且没有登录权限 -M 不创建家目录
# cat /etc/passwd
# cat /etc/group
4、编辑配置项生成安装文件 Makefile
# cd /mydata
# tar -zxvf nginx-1.20.2.tar.gz //解压nginx
# cd ./nginx-1.20.2/
# ls -al
# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_realip_module --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module
最后出现如图:
编辑完成后:再次 # ls -al ,此时就多了一个 Makefile的文件 (还有一个objs目录,),如果出错,解决错误后将这两个删除再重新执行即可。
5、继续make&&make install 安装nginx
# make
出现如下:
...
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
-e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
-e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
-e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
< man/nginx.8 > objs/nginx.8
make[1]: Leaving directory '/mydata/nginx-1.20.2'
//继续
# make install
出现如下:
...
test -d '/usr/local/nginx/html' \
|| cp -R html '/usr/local/nginx'
test -d '/usr/local/nginx/logs' \
|| mkdir -p '/usr/local/nginx/logs'
make[1]: Leaving directory '/mydata/nginx-1.20.2'
OK 安装成功
验证:
# cd /usr/local/nginx/sbin/
# ./nginx -V
出现版本号信息
nginx version: nginx/1.20.2
和相关安装信息,说明安装成功
也可以使用 -t参加检测相关配置文件是否有语法错误
# ./nginx -t
其中:
/usr/local/nginx/ 为nginx的安装目录
/usr/local/nginx/conf 为nginx的配置文件目录
/usr/local/nginx/conf/nginx.conf 为默认配置文件
/usr/local/nginx/html 为nginx的默认站点目录
/usr/local/nginx/sbin/nginx 为nginx的可执行目录
/usr/local/nginx/logs 为nginx的日志目录
/usr/local/nginx/logs/error.log 为错误日志文件
6、Nginx的启动与停止
nginx安装完成后启动文件为/usr/local/nginx/sbins/nginx ,此为一个二进制文件。在没有设置启动文件之前,只能通过此文件进行启动、停止等
(1)启动nginx
启动nginx
# /usr/local/nginx/sbin/nginx //启动nginx
浏览器访问:http://106.12.2.195/ 出现
OK默认站点可以方法,nginx服务已经启动
(2)查看nginx的运行状态
查看nginx的运行状态
# ps aux | grep nginx //ps aux 列出系统所有的进程
出现如下:
root 3228 0.0 0.0 46088 1136 ? Ss 01:21 0:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 3229 0.0 0.0 48628 1996 ? S 01:21 0:00 nginx: worker process
root 3231 0.0 0.0 112708 980 pts/0 S+ 01:21 0:00 grep --color=auto nginx
说明启动成功
其中第一行为nginx的主进程(master) 进程PID为3228
查看端口占用情况
# netstat -tlnp
出现
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3228/nginx: master
也说明nginx正常工作
(3)停止nginx
# /usr/local/nginx/sbin/nginx -s stop //强制停止 立即停止
# /usr/local/nginx/sbin/nginx -s quit //从容停止,在完成当前任务后再停止
# kill 3228 //杀死进程平滑停止 3228为nginx主进程的PID(可以通过ps aux | grep nginx 命令查看,第一条master对应的是)
或 killall nginx //杀死进程平滑停止
(4)重启nginx
# /usr/local/nginx/sbin/nginx -s reload //平滑重启,必须在nginx已经启动的状态下才能执行。
7、创建service文件
# vim /etc/systemd/system/nginx.service
输入一下内容:
---------start( 注意换成你自己的安装路径)------
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
--------------- end ------------
设置可执行权限
# chmod +x /etc/systemd/system/nginx.service
扩展:
systemd有系统和用户区分;系统(/usr/lib/systemd/system/)、用户(/etc/lib/systemd/user/).一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。
[Unit] Description : 服务的简单描述 Documentation : 服务文档 Before、After:定义启动顺序。Before=xxx.service,代表本服务在xxx.service启动之前启动。After=xxx.service,代表本服务在xxx.service之后启动。 Requires:这个单元启动了,它需要的单元也会被启动;它需要的单元被停止了,这个单元也停止了。 Wants:推荐使用。这个单元启动了,它需要的单元也会被启动;它需要的单元被停止了,对本单元没有影响。 |
[Service] Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。 Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。 Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。 Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。 Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。 Type=idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行idle类型的单元。除此之外,其他行为和Type=simple 类似。 PIDFile:pid文件路径 ExecStart:指定启动单元的命令或者脚本,ExecStartPre和ExecStartPost节指定在ExecStart之前或者之后用户自定义执行的脚本。Type=oneshot允许指定多个希望顺序执行的用户自定义命令。 ExecReload:指定单元停止时执行的命令或者脚本。 ExecStop:指定单元停止时执行的命令或者脚本。 PrivateTmp:True表示给服务分配独立的临时空间 Restart:这个选项如果被允许,服务重启的时候进程会退出,会通过systemctl命令执行清除并重启的操作。 RemainAfterExit:如果设置这个选择为真,服务会被认为是在激活状态,即使所以的进程已经退出,默认的值为假,这个选项只有在Type=oneshot时需要被配置。 |
[Install] Alias:为单元提供一个空间分离的附加名字。 RequiredBy:单元被允许运行需要的一系列依赖单元,RequiredBy列表从Require获得依赖信息。 WantBy:单元被允许运行需要的弱依赖性单元,Wantby从Want列表获得依赖信息。 Also:指出和单元一起安装或者被协助的单元。 DefaultInstance:实例单元的限制,这个选项指定如果单元被允许运行默认的实例。 |
配置 SysV
首先开启nginx服务
# /usr/local/nginx/sbin/nginx
然后执行
# systemctl daemon-reload //重启systemd
# systemctl enable nginx.service //开机自启动
出现 Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /etc/systemd/system/nginx.service.
在/etc/systemd/system/multi-user.target.wants/目录下新建一个/usr/lib/systemd/system/nginx.service 文件的链接。
#启动服务(因为上面已经开启,这里不再开启)
# systemctl start nginx.service
再次# shutdown -r now 服务器重启后,nginx自动开启了。 到此,整个安装完成。
附:nginx常用命令
//原始命令
# /usr/local/nginx/sbin/nginx 启动服务
# /usr/local/nginx/sbin/nginx -s stop 停止服务
# /usr/local/nginx/sbin/nginx -s reload 平滑重启(必须在开启的状态下才可以)
# /usr/local/nginx/sbin/nginx -t 检查语法错误
# /usr/local/nginx/sbin/nginx -v 查看Nginx版本(小v)
# /usr/local/nginx/sbin/nginx -V 查看Nginx版本(大写V)
# /usr/local/nginx/sbin/nginx -V 2>&1 | tr -- - '\n' | grep module # 查看安装了那些模块
// Systemctl 命令
# systemctl start nginx.service (service nginx start)
# systemctl stop nginx.service 停止 (service nginx stop)
# systemctl restart nginx.service 重启 (service nginx restart)
# systemctl reload nginx.service 重载 (service nginx reload )
# systemctl status nginx.service (service nginx status)
#查看日志
$ sudo journalctl -f -u nginx.service
// 快捷方式
# systemctl start nginx #启动
# systemctl stop nginx #停止
# systemctl reload nginx #重启
# systemctl status nginx #查看服务状态
# netstat -tlnp //查看端口,仅显示服务中的
# netstat -antup //查看所有端口
# netstat -antup|grep nginx //查看nginx端口
# ps aux //查看所有进程
# ps aux | grep nginx //查看nginx的进程
# kill 3228 //杀死进程平滑停止 3228为nginx主进程的PID(可以通过ps aux | grep nginx 命令查看,第一条master对应的是)
或 killall nginx //杀死进程平滑停止
卸载:
# 停止服务
# systemctl stop nginx.service
# 删除
# rm -rf /usr/local/nginx/
# rm -rf /etc/systemd/system/multi-user.target.wants/nginx.service
友情推荐:
Nginx配置详情