CentOS容器中安装Nginx

Posted LiuJun2Son

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS容器中安装Nginx相关的知识,希望对你有一定的参考价值。

1.加载本地 centos8.tar 镜像

docker load --input centos8.tar

[root@VM_0_6_centos images-bak]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@VM_0_6_centos images-bak]# ls
centos8.tar
[root@VM_0_6_centos images-bak]# docker load --input centos8.tar
Loaded image: centos:latest
[root@VM_0_6_centos images-bak]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0d120b6ccaa8        10 days ago         215MB
[root@VM_0_6_centos images-bak]# 

2.启动centos容器

docker run -itd --name centos-test centos:latest

[root@VM_0_6_centos images-bak]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0d120b6ccaa8        10 days ago         215MB
[root@VM_0_6_centos images-bak]# docker run -itd --name centos-test centos:latest
57e5009437df2fbef3f234e1ce7c09c4311656bd9e4acf8a164f43a509cfbfc1
[root@VM_0_6_centos images-bak]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
57e5009437df        centos:latest       "/bin/bash"         3 seconds ago       Up 2 seconds                            centos-test
[root@VM_0_6_centos images-bak]# 

docker rm -f centos:latest 删除以前已停止,残留的容器

3.进入centos容器bash

docker exec -i -t centos-test /bin/bash

[root@VM_0_6_centos images-bak]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
57e5009437df        centos:latest       "/bin/bash"         3 seconds ago       Up 2 seconds                            centos-test
[root@VM_0_6_centos images-bak]# docker exec -i -t centos-test /bin/bash
[root@57e5009437df /]# 

4.在centos容器里安装nginx

1.安装编译软件

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

[root@57e5009437df /]# gcc -v
bash: gcc: command not found
[root@57e5009437df /]# yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
Failed to set locale, defaulting to C.UTF-8
CentOS-8 - AppStream                                                                                                          907 kB/s | 5.8 MB     00:06    
CentOS-8 - Base                                                                                                               1.8 MB/s | 2.2 MB     00:01    
CentOS-8 - Extras                                                                                                             1.4 kB/s | 7.3 kB     00:05    
Package zlib-1.2.11-13.el8.x86_64 is already installed.
Package pcre-8.42-4.el8.x86_64 is already installed.

2.下载Nginx软件

yum -y install wget
wget http://nginx.org/download/nginx-1.18.0.tar.gz

[root@57e5009437df src]# pwd
/usr/local/src
[root@57e5009437df src]# wget http://nginx.org/download/nginx-1.18.0.tar.gz
--2020-08-21 09:39:15--  http://nginx.org/download/nginx-1.18.0.tar.gz
Resolving nginx.org (nginx.org)... 52.58.199.22, 3.125.197.172, 2a05:d014:edb:5704::6, ...
Connecting to nginx.org (nginx.org)|52.58.199.22|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1039530 (1015K) [application/octet-stream]
Saving to: 'nginx-1.18.0.tar.gz'

3.解压nginx-1.18.0.tar.gz和安装

在 nginx-1.18.0.tar.gz 当前目录下 执行解压

tar -zxvf nginx-1.18.0.tar.gz

解压缩后,可以看到 nginx-1.18.0 目录,然后进入这个目录

cd nginx-1.18.0

nginx-1.18.0目录下执行 配置 和 make 命令

# 1.配置
[root@xxx nginx-1.18.0]#  ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-pcre --with-http_gzip_static_module --with-http_ssl_module 

# 1.make 和 安装
[root@xxx nginx-1.18.0]#  make && make install

注意:

--prefix=PATH : 指定 nginx 的安装目录。默认 /usr/local/nginx,我的是 /usr/local/webserver/nginx

--with-http_stub_status_module : 用来监控 Nginx 的当前状态

--with-pcre: 让nginx支持正则表达式, 需要安装 pcre 与 pcre-devel

--with-http_gzip_static_module : 允许nginx发送以“.gz”作为文件扩展名的预压缩文件,以替代发送普通文件

--with-http_ssl_module : 使用https协议模块。默认情况下,该模块没有被构建。前提是opensslopenssl-devel已安装

4.启动Nginx和检查是否启动

/usr/local/webserver/nginx/sbin/mginx

curl localhost

5.修改nginx.conf配置

将 nginx 切换为 守护进程(daemon)

##Nginx worker进程个数:其数量直接影响性能。
#每个worker进程都是单线程的进程,他们会调用各个模块以实现多种多样的功能。如果这些模块不会出现阻塞式的调用,那么,有多少CPU内核就应该配置多少个进程,反之,有可能出现阻塞式调用,那么,需要配置稍多一些的worker进程。
worker_processes  1;
 
##守护进程(daemon)。是脱离终端在后台允许的进程。它脱离终端是为了避免进程执行过程中的信息在任何终端上显示。这样一来,进程也不会被任何终端所产生的信息所打断。##
##关闭守护进程的模式,之所以提供这种模式,是为了放便跟踪调试nginx,毕竟用gdb调试进程时最繁琐的就是如何继续跟进fork出的子进程了。##
##如果用off关闭了master_proccess方式,就不会fork出worker子进程来处理请求,而是用master进程自身来处理请求
daemon off;

修改完之后推出即可

6.centos中的nginx自启动

可以编写:Dockerfile

7.centos-test容器生成镜像

docker commit -a “liujun” -m “centos-test容器生成镜像nginx18:v1” a404c6c174a2 nginx18:v1

[root@VM_0_6_centos images-bak]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
2a4e66f4ffd4        centos:latest       "/bin/bash"         23 minutes ago      Up 4 minutes        0.0.0.0:80->80/tcp   centos-test
[root@VM_0_6_centos images-bak]# docker commit -a "liujun" -m "centos-test容器生成镜像nginx18:v1" 2a4e  nginx18:v1
sha256:828b659f7a7760a4807407e33d0d9b7b524de5ceee55580e0827ddb794c53c68
[root@VM_0_6_centos images-bak]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
2a4e66f4ffd4        centos:latest       "/bin/bash"         24 minutes ago      Up 5 minutes        0.0.0.0:80->80/tcp   centos-test
[root@VM_0_6_centos images-bak]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx18             v1                  828b659f7a77        12 seconds ago      487MB
centos              latest              0d120b6ccaa8        10 days ago         215MB
[root@VM_0_6_centos images-bak]# 

8.运行nginx18镜像

[root@VM_0_6_centos images-bak]# docker run -itd -p 8080:80 --name nginx-test nginx18:v1
32ea0a0d794045faada609ba777ce5449499c80d6a6266de3da0ea9ae58db85d
[root@VM_0_6_centos images-bak]# 

运行nginx18镜像时 nginx18 服务器并没有自动启动, 需要手动启动
第一步:docker exec -i -t nginx-test /bin/bash // 进入容器
第二步:/usr/local/webserver/nginx/sbin/nginx // 启动nginx服务器

如何实现在 启动容器的时候自动启动容器中的 Nginx 服务器?

以上是关于CentOS容器中安装Nginx的主要内容,如果未能解决你的问题,请参考以下文章

在win10 docker启动的centos容器中安装nginx

在CentOS中安装Docker

在 CentOS 7.9 中安装最新的 Redis

在CentOS 7中安装nginx服务器

在CentOS中安装和使用nginx

centos中安装配置nginx完成之后主机无法访问