nginx 编译安装

nginx 的安装

windows版本

直接官方下载地址根据需求下载对应的版本(推荐Stable version(稳定版))下载安装,安装很简单,就直接略过

linux 版本(源码安装)

依赖

安装nginx之前了解我们所需要的

  1. gcc gcc-c++ (因为安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境的话,需要安装gcc)
  2. pcre pcre-devel (Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库)
  3. zlib zlib-devel (zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库)
  4. openssl openssl-devel (OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库)
  5. 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包,上传到目标服务器,然后安装,步骤如下:

  1. 修改yum配置
# 修改yum配置
vim /etc/yum.conf
# cachedir 及yum下载的rpm包缓存地址,原地址中可能已经缓存有东西,所以注释掉原本的cachedir,为此次下载nginx相关rpm单独建立一个文件夹,设置为cachedir
cachedir=/data/nginx/rpms/yum/$basearch/$releasever
# keepcache 是否缓存改为1
keepcache=1
# 保存退出
  1. 下载依赖
    使用yum下载编译环境、依赖以及wget 下载nginx源码,这里不再重复

  2. 根据本文后面的方法在系统上先安装一遍nginx,确定所有依赖和环境可以正常安装

  3. 连接目标服务器,mkdir /user/nginx,将nginx源码放入其中,nginx下再新建rpms文件夹,放下载的rpm文件

  4. 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

posted @ 2020-07-31 15:37  httpc  阅读(1604)  评论(0编辑  收藏  举报