nginx 编译安装
nginx 的安装
windows版本
直接官方下载地址根据需求下载对应的版本(推荐Stable version(稳定版))下载安装,安装很简单,就直接略过
linux 版本(源码安装)
依赖
安装nginx之前了解我们所需要的
- gcc gcc-c++ (因为安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境的话,需要安装gcc)
- pcre pcre-devel (Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库)
- zlib zlib-devel (zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库)
- openssl openssl-devel (OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库)
- nginx 源码到官网下载,参考windows版下载的介绍
yum 安装依赖
# 安装依赖
yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
# 下载nginx源码到/user/local/src下, 这里下载的是1.18版,可以根据需要到官方找适合的版本
wget -P /user/local/src http://nginx.org/download/nginx-1.18.0.tar.gz
离线安装
由于服务器是内网的无法通过yum下载依赖的,可以通过先在具备外网环境的系统(尽量与目标服务器版本保存一致)下载rpm包,上传到目标服务器,然后安装,步骤如下:
- 修改yum配置
# 修改yum配置
vim /etc/yum.conf
# cachedir 及yum下载的rpm包缓存地址,原地址中可能已经缓存有东西,所以注释掉原本的cachedir,为此次下载nginx相关rpm单独建立一个文件夹,设置为cachedir
cachedir=/data/nginx/rpms/yum/$basearch/$releasever
# keepcache 是否缓存改为1
keepcache=1
# 保存退出
-
下载依赖
使用yum下载编译环境、依赖以及wget 下载nginx源码,这里不再重复 -
根据本文后面的方法在系统上先安装一遍nginx,确定所有依赖和环境可以正常安装
-
连接目标服务器,mkdir /user/nginx,将nginx源码放入其中,nginx下再新建rpms文件夹,放下载的rpm文件
-
rpm 安装
# 进入/data/nginx/rpms,执行rpm命令将所有的rpm包进行安装
rpm -Uvh *.rpm --nodeps --force
编译安装nginx
# 解压缩
cd /user/nginx
tar -zxvf nginx-1.18.0.tar.gz
# 执行命令编译
cd nginx-1.18.0
./configure && make && make install
# 结果最后几行显示有:make[1]:Leaving directory '/root/nginx...'即编译安装成功
# 查看nginx位置(一般是在/user/local/nginx)
whereis nginx
# 启动
/user/local/nginx/sbin/nginx -c /user/local/nginx/conf/nginx.conf
至此我们的nginx即安装成功了,但是我们还需要将其加入服务中,方便后面管理
创建服务
方法一
vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: 2345 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG -t &> /dev/null
if [ $? -eq 0 ] ; then
$PROG
echo "Nginx service start success."
else
$PROG -t
fi
;;
stop)
kill -s QUIT $(cat $PIDF)
echo "Nginx service stop success."
;;
restart)
$0 stop
$0 start
;;
reload)
$PROG -t &> /dev/null
if [ $? -eq 0 ] ; then
kill -s HUP $(cat $PIDF)
echo "reload Nginx config success."
else
$PROG -t
fi
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
添加执行权限
chmod +x /etc/init.d/nginx
添加到服务管理列表,并让其开机自动启动:
chkconfig --add nginx
chkconfig nginx on
chkconfig --list nginx 查看添加情况
启动服务脚本
service nginx start
方法二(推荐)
vim /user/lib/systemd/system/nginx.service
将脚本内容复制进去(注意编译安装的路径如果不一致记得修改)
[Unit]
Description=nginx
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPost=/bin/sleep 0.1
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=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
使用
systemctl start|stop|reload|restart|status nginx.service
开机自启:
systemctl enable nginx.service
关闭开机自启:
systemctl disable nginx.service
可能用到的其它命令
查看端口占用: lsof -i:端口号
查看防火墙状态:systemctl status firewalld
永久开放端口:firewall-cmd --add-port=端口号/tcp --permanent
查看指定端口: firewall-cmd --query-port=端口号/tcp
已开放的端口:netstat -anp(需要安装netstat)
修改防火墙后需要重载配置: firewall-cmd --reload
参考:
https://blog.csdn.net/yuanfangPOET/article/details/90045001
https://www.jianshu.com/p/9f2c162ac77c
https://www.cnblogs.com/happyyangyanghappy/p/10860747.html
https://www.cnblogs.com/ysocean/p/9384877.html#_label2_2
https://www.cnblogs.com/lh438369/p/8985682.html