Centos7 安装Nginx(OpenResty)、Windows安装Nginx

Nginx是一款高性能的代理、转发服务器,目前已经支持4层和7层代理。
OpenResty则是基于Nginx增加Lua的功能,可以方便的实现缓存功能。

1、Nginx不同安装形式分析

安装形式 安装难度 优点 缺点 推荐排名 官网
OpenResty Centos一键安装 自带Https、Lua扩展 不带开机启动 1 OpenResty Download Centos
OpenResty Windows一键安装 开机重启有难度 不带开机启动 2 OpenResty Windows
Nginx Centos yum一键安装 简单,自带https,开机启动 定制麻烦 3 nginx: download Stable
Nginx Centos 手工编译 麻烦,慢;编译时候可以自己把模块如:https编译进去 定制方便 4
Nginx Centos 手工编译(简化版本) 简单,慢;编译时候可以自己把模块如:https编译进去 定制方便 5
Nginx Windows版本 简单,直接解压;开机自动动麻烦 6

2.Nginx各种形式安装

2.0 nginx前置用户创建

我们安装nginx、tomcat等,建议使用自己账号创建,不推荐使用root用户;
尤其是tomcat
  1. 新增tomcat用户
    useradd tomcat
  2. 将tomcat目录owner改为tomcat
    chown -R tomcat:tomcat /usr/local/tomcat9 #把已有的目录变成tomcat的权限

2.1 OpenResty Centos7 yum安装

直接查看官网最新的安装命令。http://openresty.org/cn/linux-packages.html 
搜索Centos

你可以在你的 CentOS 系统中添加 openresty 仓库,这样就可以便于未来安装或更新我们的软件包
(通过 yum check-update 命令)。
运行下面的命令就可以添加我们的仓库(对于 CentOS 8 或以上版本,应将下面的 yum 都替换成 dnf):

2.1.1 add the yum repo

# add the yum repo:
wget https://openresty.org/package/centos/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/

# update the yum index:
sudo yum check-update

2.1.2 yum install

然后就可以像下面这样安装软件包,比如 openresty

sudo yum install -y openresty

如果你想安装命令行工具 resty,那么可以像下面这样安装 openresty-resty 包:

sudo yum install -y openresty-resty

命令行工具 opmopenresty-opm 包里,而 restydoc 工具在 openresty-doc 包里头。

列出所有 openresty 仓库里头的软件包:

2.1.3 查看openresty的软件包

sudo yum --disablerepo="*" --enablerepo="openresty" list available

2.1.4 设置开机自动启动

命令1编辑启动文件 vim /etc/rc.d/rc.local,敲入下面脚本

#编辑开机启动文件,加入对应的命令
nohup bash /usr/local/tomcat9/bin/startup.sh &>/dev//null &  #tomcat开机启动
nohup ntpdate   stdtime.gov.hk #开机自动校准时间,首先自己要在命令行执行一次,试一下。看是否OK
/usr/local/redis-5.0.8/src/redis-server  /usr/local/redis-5.0.8/redis.conf #redis 开机
/usr/local/openresty/nginx/sbin/nginx &>/dev//null &  #启动openresty

必须记得给rc.local权限chmod +x /etc/rc.d/rc.local
查看rc-local
systemctl status rc-local
systemctl restart rc-local

2.1.5 更细命令

 openresty -t #valid 
 openresty -s reload #reload 

2.2 Windows 安装 nginx/OpenResty

下载直接解压就可以使用,也不需要安装其他插件。

主要点:默认不带开机启动,需要自己进行配置开机启动。
参考,亲测可以-推荐 使用windows 任务计划 ui界面操作:Nginx服务器 & windows 设置自动(开机 or 定时)启动
参考,亲测可以执行-有点麻烦:window 怎么样让nginx开机自启动

2.3 Centos7自动使用yum安装

参考:CentOS7中使用yum安装Nginx的方法,直接一键安装nginx.
安装完毕,通过 where nginx 或者 find -name nginx 查看配置conf文件目录、日志目录等

2.4 Centos7自己编译安装

参考:Centos7安装Nginx实战
参考2: CentOS7安装Nginx及配置

2.4.1 下载nginx for linux软件包

到Nginx官网下载最新的nginx包,zip 或者 tar.gz 都可以.

wget --no-check-certificate https://nginx.org/download/nginx-1.23.1.tar.gz
#https://nginx.org/download/nginx-1.20.2.tar.gz
#wget https://nginx.org/download/nginx-1.18.0.tar.gz
#wget https://nginx.org/download/nginx-1.16.1.tar.gz
#wget https://nginx.org/download/nginx-1.14.2.tar.gz  
## 下载要使用:https,不要使用 http
#老版本,之前自己用的最多的,目前不用了;
#目前升级使用用1.16 (环普东r 项目使用);
#最新升级使用1.18 (yulin B环境) 有漏洞
#最新升级使用1.20 (baoj)
#最新升级使用1.22 (jiankang xi an)

然后解压,tar -xvzf nginx-1.23.1.tar.gz 或者 `unzip nginx-1.23.1.zip

2.4.2 前置1 C++编译环境

前置安装1:C++
ububtu平台编译环境可以使用以下指令

apt-get install build-essential
apt-get install libtool


centos平台编译环境使用如下指令

安装make: yum -y install gcc automake autoconf libtool make
安装g++: yum install gcc gcc-c++

2.4.2 前置2 PCRE库

$ cd /usr/local/
 
$ wget --no-check-certificate  http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz
 
$ tar -zxvf pcre-8.33.tar.gz
 
$ cd pcre-8.33
 
$ ./configure
 
$ make && make install
 
#如报错:configure: error: You need a C++ compiler for C++ support
#解决:yum install -y gcc gcc-c++

2.4.3 前置3: openssl

$ cd /usr/local/
 
$ #wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz --no-check-certificate  ### 不验证证书, nginx1.18和之前用的这个版本。
$ wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz --no-check-certificate  ### 不验证证书, nginx.1.20 需要最新的这个班;
 
$ tar -zxvf openssl-1.1.1k.tar.gz
 
$ cd  openssl-1.1.1k
 
$ ./config         【这个一步完成一定看一下是否有报错】
 
$ make && make install   【这一步很慢的,慢慢等】
 
 
#按照完成我们查看一下版本:openssl version   ,如果报错,我们继续下面
#检测命令是否有软连接:dd $(which /usr/local/nginx/sbin/nginx)  
#我们创建软连接:
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1 
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1  
ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1
#执行完,我们再次查看版本
openssl version ## OpenSSL 1.1.1k  25 Mar 2021

2.4.4 前置4 zlib库安装

#安装zlib库存
$ cd /usr/local/
$ wget https://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxvf zlib-1.2.11.tar.gz
$ ./configure
$ make && make install

2.4.5 编译nginx

cd /usr/local/nginx/nginx-1.20.2/进入目录
–prefix: 是编译后nginx放置的根目录,自己选择


./configure \
--user=nobody \
--group=nobody \
--prefix=/usr/local/nginx/ \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_sub_module \
--with-openssl=/usr/local/openssl-1.1.1k \
--with-http_ssl_module \
--with-stream \
--with-mail \
--with-mail_ssl_module
 
###这里编译环境总是找不到openssl,这里手工指定一下位置 
### 后面的参数都是, 可以删除 或者 添加的 
(--with-http-ssl-module 这个不加后面在nginx.conf配置ssl:on后,启动会报,是为了支持https, 
不添加报错:nginx: [emerg] unknown directive "ssl" in /opt/nginx/conf/nginx.conf 异常 )
(--with-stream是为了支持4层基于端口的代理; 平时用都是7层的。可选)
(--with-mail    #该选项用于启用mail模块,该模块默认没有被激活。可选)
(--with-mail_ssl_module \    #为了代理任何一种类型的使用SSL/TLS的mail,激活该模块。可选)
 
【这里是指定编译的时候把相关的模块安装到nginx里面。】  
编译参数说明: Nginx:编译安装/动态添加模块 https://www.cnblogs.com/Dy1an/p/11227796.html
【编译这一步必须不能报错,如果报错,检查完成】
 
make & make install
【这步完成会从新生成一个目录/usr/local/nginx】 make挺慢的,一般make命令最后会卡顿,提示:#这里经常出现这样的提示  make[1]: 离开目录“/usr/local/nginx/nginx-1.20/nginx-1.20.2”  #不用理睬 就可以
 
make install 最后我们再次执行一下这个命令,就OK了
 
--------------------------------
--------------------------------
安装完成, 会重新产生一个目录 /usr/local/nginx,并生成 sbin、conf等目录。
里面就是 nginx可执行文件; 以前的 /usr/local/nginx-1.16.1可以删除了

2.4.6 开机启动配置

手工安装就是麻烦,还得自己设置开机启动配置。

开机启动脚本方式1: centos7.x设置nginx开机自启动
开启启动脚本方式2: CentOS下设置nginx开机自动启动和chkconfig管理
开启启动脚本方式3:同openResty开机自动,rc.local写入启动命令
原来 systemctl status nginx.serviceservice nginx.service status 这两种命令是等价的
在这三种都已经使用过

2.5 Centos7自己编译安装 (简化版本)

liang哥提供

2.5.1 yum 一键安装nginx 所有依赖

yum -y install make gcc gcc-c++ zlib zlib-devel pcre pcre-devel openssl openssl-devel

2.5.2 编译安装nginx

  1. 解压Nginx程序包
    到Nginx官网下载最新的nginx包,zip 或者 tar.gz 都可以.
    放到:/usr/local/nginx/
wget --no-check-certificate   https://nginx.org/download/nginx-1.22.0.tar.gz
#wget --no-check-certificate   https://nginx.org/download/nginx-1.20.2.tar.gz
#wget https://nginx.org/download/nginx-1.18.0.tar.gz
#wget https://nginx.org/download/nginx-1.16.1.tar.gz
#wget https://nginx.org/download/nginx-1.14.2.tar.gz  
## 下载要使用:https,不要使用 http
#老版本,之前自己用的最多的,目前不用了;
#目前升级使用用1.16 (环普东r 项目使用);
#最新升级使用1.18 (yulin B环境)
#最新升级使用1.20 (baoj)

然后解压,tar -xvzf nginx-1.22.0.tar.gz 或者 unzip nginx-1.22.0.tar.gz

  1. 配置
# 默认安装在:/usr/local/nginx
./configure --with-http_ssl_module --with-http_stub_status_module
  1. 编译并安装
make && make install
  1. 将原先的配置文件和应用程序拖动过去

2.6 nginx完全卸载删除

参考:nginx完全卸载删除

3.Nginx进阶认知

3.1 NGINX 启动

#linux常用命令
#1: 启动
./nginx  #适合手工安装;如果不指定-c,nginx在启动时默认加载conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定./configure的参数(--conf-path= 指向配置文件(nginx.conf))
#或者
./nginx -c /usr/local/nginx/conf/nginx.conf  #适合yum安装
#2: 验证配置文件是否正确
nginx -t
#3:  重置加载配置文件
nginx -s load
#4: 查看是否启动成功
ps -ef | grep nginx #有master和worker两个进程证明启动成功

#5: 查看nginx 版本 和 安装的模块 
nginx -v #只查看版本
nginx -V #查看版本,和编辑的模块有哪些

3.2 NGINX linux 停止

  1. 暴利kill(不推荐使用) kill -9 processId
  2. 快速停止 cd /usr/local/nginx/sbin && ./nginx -s stop 此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程
  3. 完整停止(建议使用) cd /usr/local/nginx/sbin && ./nginx -s quit 此方式停止步骤是待nginx进程处理任务完毕进行停止,更简单:pkill -9 nginx

3.2 NGINX windows 停止

1: windows 杀进程
windows杀nginx进程:taskkill /fi "imagename eq nginx.EXE" /f
windowsnginx启动:nginx.exe
windows重新加载配置:nginx.exe -s reload
windows验证配置:nginx.exe -t

2:如何查看日誌
windows: Get-Content -wait "D:\server\tomcat8.5.8081\logs\hiber\hiber_business.log"
linux: tail -f xx.log

3.3 常见报错

  1. ./nginx 启动报错 [emerg] open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)
    需要查看下是不是在/var/run文件夹下不存在nginx文件夹,不存在则新建
  2. nginx在reload时候报错invalid PID number的解决方法
    参考:nginx在reload时候报错invalid PID number的解决方法

3.4 负载均衡策略

Nginx负载均衡权重,ip_hash、
nginx已经安装好了,在安装新的插件 nginx负载均衡fair模块安装和配置

3.5 nginx认知

nginx简介:nginx主要做7层的应用层的反向代理,一般基于url 进行代理。 
4层的反向代理,比如LVS或者haproxy, 当然最新版的nginx也慢慢支持4层基于端口的映射了。
nginx反向代理:平时我们用nginx都是反向代理,反向代理是代理的server端,比如server有多台局域  网   的服务器。

nginx正向代理:正向代理代理的是client端,
 eg1 服务器在内网,需要内网要通过163邮箱服务器进行发    送邮箱;eg2: 科学的上网

3.6 https 证书

参考:Tomcat 或者 Nginx 配置 Https ~ 域名 ssl证书

3.7 nginx 增加 4层代理

参考:nginx 4层代理配置

3.8 nginx.conf 配置文件

配置文件1: [QCURE.nginx.conf ]github、gitee)
配置文件2:[Bgyiot nginx.config ]github、gitee

4 nginx 常见错误代码

  1. 上传文件过大504
  2. 请求响应太慢导致504
  3. 后端代理服务挂掉 处理不过来,导致502

5 nginx增加lua插件/升级版本

针对已经安装的nginx,增加:lua插件

参考:nginx 中添加 lua 模块,支持lua脚本以及遇到的坑

nginx openresty-luajit2 ngx_devel_kit lua-nginx-module
nginx 1.22 openresty/luajit2 v0.3.1 openresty/lua-nginx-module

5.1 下载安装openresty-luajit2

#1、下载luajit2
# Github: https://github.com/openresty/luajit2/archive/refs/tags/v2.1-20220915.tar.gz
# 官网太慢,这里使用:代理地址,根据情况后期换成其他代理地址
cd /usr/local && wget https://download.yzuu.cf/openresty/luajit2/archive/refs/tags/v2.1-20220915.tar.gz -O luajit2-v2.1-20220915.tar.gz

# 2、解压文件,进入文件夹
tar xzvf luajit2*.tar.gz && cd luajit2*

# 3、安装文件 (大概60s),文件按照到了 /usr/local/luajit 目录
make install PREFIX=/usr/local/luajit

#4、添加环境变量!
export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.1

# 需要添加ln,link链接
# 否则在 ./nginx -t的时候报错:error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
## 主要:ln 源文件 目标文链接,源文件必须文件,不能是链接地址
cd /usr/local/luajit/lib/ && ls -l && ln /usr/local/luajit/lib/libluajit-5.1.so.2.1.0  /lib64/libluajit-5.1.so.2

Centos7 安装Nginx(OpenResty)、Windows安装Nginx_第1张图片

5.2 下载解压ngx_devel_kit

# 1、下载文件
# 原始地址:https://github.com/simpl/ngx_devel_kit/archive/v0.3.1.tar.gz
# 原始github,太慢可通过代理地址下载
cd /usr/local/ && wget https://download.yzuu.cf/simpl/ngx_devel_kit/archive/v0.3.1.tar.gz -O ngx_devel_kit-v0.3.1.tar.gz

# 2、解压文件,进入文件夹
tar -xzvf ngx_devel_kit-*.tar.gz && cd ngx_devel_kit-*

5.3 下载解压lua-nginx-module【不要轻易升级版本】

!!!切记,切记,这里暂时不要升级新的版本,会有问题。

# 1、下载解压文件
# 原始Github地址:https://github.com/openresty/lua-nginx-module/archive/refs/tags/v0.10.22.tar.gz
# 原始地址太慢,这里使用代理地址
cd /usr/local/ && wget https://download.yzuu.cf/openresty/lua-nginx-module/archive/refs/tags/v0.10.9rc7.tar.gz -O lua-nginx-module-v0.10.9rc7.tar.gz

# 2、解压文件
tar -xzvf lua-nginx-module-*.tar.gz

5.4 安装lua-devel

yum install lua-devel -y

5.5 对nginx重新进行一次编译安装

#1、对已经安装的nginx,对配置conf文件夹、conf文件夹进行备份
cd /usr/local/nginx/ && cp -rf conf/ conf_bak/ && cp -rf conf/ conf_bak/

#2、进入之前的nginx源文件解压目录 
cd /usr/local && wget https://nginx.org/download/nginx-1.22.0.tar.gz && tar -zxvf nginx-1.22.0.tar.gz && cd /usr/local/nginx-1.22.0

#3、进行源码文件目录进行 configure,之前的安装的插件一定要包含在配置列表中
## 执行完毕,仔细查看有没有报错,有报错必须解决,否则无法进行下一步,如:缺少xxx包
## 执行完毕,会有一个插件汇总Summery
./configure \
--prefix=/usr/local/nginx/ \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_ssl_module \
--with-stream \
--with-pcre \
--add-module=/usr/local/lua-nginx-module-0.10.9rc7 \
--add-module=/usr/local/ngx_devel_kit-0.3.1


#4、进行make
make

#5. 进行make install
# 执行成功,发现多了:/usr/local/nginx/sbin/nginx.old,其他文件并没有丢失
# 并且发现安装了,新版本,老版本照样运行;
make install 

5.6 验证lua是否安装成功

###在server模块里面,随便找个地方添加下面的代码,并保存
location /lua {
            default_type 'text/plain';

            content_by_lua 'ngx.say("hello, lua")';
         }
      
# 必须杀掉nginx进程(这里是在:已有nginx上面升级,必须要先杀掉nginx进程)
cd /usr/local/nginx/sbin && ps -ef | grep nginx && echo 'stop nginx (请观察前后进程变化) ....' && ./nginx -s stop && ps -ef | grep nginx

## 杀死nginx进程,重新启动
cd /usr/local/nginx/sbin/ && ./nginx -c /usr/local/nginx/conf/nginx.conf      
      
#  重新加载配置文件
 cd /usr/local/nginx/sbin/ && ./nginx -t && ./nginx -s reload

# 测试lua脚本,正常会打印:hello,lua
curl http://localhost:80/lua/

你可能感兴趣的:(linux安装部署,nginx,windows,lua)