nginx卸载及安装

背景:

要将nginx1.14.0升级到1.18.0,由于我的场景无需关注nginx相关的服务平滑过渡,且1.14.0和1.18.0差别很大,采取的是先卸载后安装的方法。

1、基于原镜像新建容器

nvidia-docker run -itd –-name newnginx -v 容器外路径:容器内路径 镜像名:latest

2、进入新容器

docker attach newnginx

3、查看当前ngnx版本及配置

nginx -V

复制arguments后面的一大串配置

4、拷贝原配置文件,卸载删除旧的nginx

cp /etc/nginx/nginx.conf 暂存路径

rm -rf /etc/nginx/

rm -rf /usr/sbin/nginx

apt-get remove nginx*

5、下载安装包并解压

nginx: download

下载所需版本的压缩包,并放到服务器指定目录下

tar -zxvf nginx-1.18.0.tar.gz

6、安装依赖

安装nginx需要一堆依赖,下面这些是我的ubuntu环境下需要的,按需安装。

apt-get update

apt-get install libxml2 libxml2-dev libxslt-dev

apt-get install libssl-dev

apt-get install -y libgd-dev

apt-get install libgeoip-dev

7、编译新nginx

A、

cd XXX/nginx-1.18.0

B、

将之前nginx -V获取到的原配置修改一下版本号放在./config 后执行

./config –with-cc-opt XXXXXX 。。。

C、

make

make 时如遇到openssl报错“make[1]: *** [/usr/local/ssl/.openssl/include/openssl/ssl.h] Error 127”,参考这篇文章[/usr/local/openssl//.openssl/include/openssl/ssl.h] Error 127-jiyilee-ChinaUnix博客

        这篇文章指出,报错原因是openssl下的几个文件没找到。./configure XXX 参数包含--with-openssl= /usr/lib/ssl ,而/usr/lib/ssl下没有要求的几个文件。“vim . /auto/lib/openssl/conf” ,按照如下方式修改。实际上openssl version -a 打印出的openssl链接不一定就有指定的这些文件。一个镜像中可能有多处有openssl,用find指令可找到合适的-with-openssl路径:find / -name ssl.h

——————————

找到这么一段代码:
CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
CORE_LIBS="$CORE_LIBS $NGX_LIBDL"

修改成以下代码:
CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"

——————————

D、

make install

E、拷贝编译生成的可执行文件

cp objs/nginx /usr/sbin/nginx

默认是执行/usr/sbin/nginx下的文件

8、验证,查看是否安装成功及当前版本

nginx

nginx -V

9、创建虚拟主机配置文件

参考下文:

增加nginx虚拟主机配置文件(conf.d) - 与f - 博客园

    nginx1.18.0默认的配置文件为/etc/nginx/nginx.conf,当很多服务要从这个镜像派生,那么就需要把服务对应的nginx配置单独管理,放在/etc/nginx/conf.d下,这个路径需要自己创建。此外,要赋予nginx.conf管理conf.d下的.conf文件的能力。

A、mkdir /etc/nginx/conf.d

B、vim /etc/nginx/nginx.conf 在http下新增include /etc/nginx/conf.d/*.conf;

    如果是升级nginx而非首次安装nginx,最好提前拷贝一下nginx.conf文件,步骤B也可改为用原来备份的nginx.conf替代新的nginx.conf文件,第4步在卸载旧版本前就已手动保存旧的nginx.conf。

10、从容器外拷贝.conf文件到conf.d下

    nginx是装在镜像内部,然后派生出容器,容器外是看不到/etc/nginx路径的,所以容器外拷贝到容器内需要用到docker cp命令。

docker cp 容器外.conf路径 容器名: /etc/nginx/conf.d

*.conf文件示例:

  1. server {  
  2.         listen       80;   #监听容器内80端口
  3.         server_name  app1.mydomain.com;  #配置域名,不重要,可以写成localhost
  4.          error_log /home/workspace/error.log   # 服务错误日志
  5.          access_log /home/workspace/access.log   # 接收请求日志
  6.         location / {    # 接收请求,可用正则过滤 
  7.                 include uwsgi_params;  
  8.                 uwsgi_pass 127.0.0.1:9090;  #把所有nginx接收到的请求传给本地9090的uwsgi协议处理
  9.                 uwsgi_param UWSGI_PYHOME /var/www/myenv;  
  10.                 uwsgi_param UWSGI_SCRIPT myapp1;   #也可以是参数server:app或run:app等,似乎指服务类型                  
  11.                 uwsgi_param UWSGI_CHDIR /var/www/myappdir1;  #项目根目录
  12.         }  
  13.     }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值