2 Nginx安装 可以登录 Nginx 的官方网站: https://www.nginx.com/ 找到安装方式。
查看如何安装开源的版本: https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/
通过官方的说明,也可以知道安装,我这里简单列几种安装方式。
2.1 Ubuntu使用apt安装 这种方式安装的 nginx 版本一般不是最新的,主要是安装简单。
1 获取最新的软件包列表
2 安装Nginx
3 验证安装 查看nginx版本
4 访问首页 现在通过浏览器访问http://IP
就可以访问了.
2.2 CentOS使用yum安装 这种方式安装的 nginx 版本一般也不是最新的,但是也够用了,主要是安装简单。
1 安装 EPEL 存储库 1 yum install -y epel-release
2 更新存储库
3 安装Nginx
4 验证安装 查看nginx版本
5 访问首页 现在通过浏览器访问 http://IP
就可以访问了。
2.3 源码安装 如果要使用最新版本,可以使用源码进行编译安装。
在从源代码编译之前,需要安装一些依赖项。
1 安装编译环境 用于编译C和C++程序
1 2 3 4 5 6 7 yum update yum install gcc-c++sudo apt updatesudo apt install build-essential
2 安装PCRE PCRE 是为了支持正则表达式,Nginx 的 Core 和 Rewrite 模块需要。
1 2 3 4 5 6 7 8 9 10 11 12 13 yum install -y pcre pcre-develsudo apt install libpcre3 libpcre3-dev wget github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.gz tar -zxf pcre2-10.42.tar.gzcd pcre2-10.42 ./configure makesudo make install
3 安装zlib zlib 用来支持标头压缩,Nginx 的 Gzip 模块需要。
1 2 3 4 5 6 7 8 9 10 11 12 13 yum install -y zlib zlib -devel sudo apt install zlib1g zlib1g-dev wget http://zlib .net/zlib -1.2 .13 .tar.gz tar -zxf zlib -1.2 .13 .tar.gz cd zlib -1.2 .13 ./configure make sudo make install
4 安装OpenSSL OpenSSL 用来支持https
协议, Nginx 的 SSL 模块和其他模块需要。
1 2 3 4 5 6 7 8 9 10 11 12 13 yum install -y openssl openssl-develsudo apt install openssl libssl-dev wget http://www.openssl.org/source/openssl-1.1.1v.tar.gz tar -zxf openssl-1.1.1v.tar.gzcd openssl-1.1.1v ./Configure darwin64-x86_64-cc --prefix=/usr makesudo make install
5 下载源代码 从nginx.org (opens new window) 可以下载最新版或稳定版本,建议使用稳定版本。
版本地址: https://nginx.org/en/download.html?_ga=2.197110824.562665189.1714921677-1619311149.1714730622
下载并解压最新版本的源代码:
1 2 3 wget https://nginx.org/download/nginx-1 .25 .1 .tar.gztar zxf nginx-1 .25 .1 .tar.gzcd nginx-1 .25 .1
下载并解压最新稳定版本的源文件:
1 2 3 wget https://nginx.org/download/nginx-1 .26 .0 .tar.gztar zxf nginx-1 .26 .0 .tar.gzcd nginx-1 .26 .0
6 配置构建选项 构建之前,先创建 Nginx 临时目录,用来存储 Nginx 的临时文件。
1 mkdir -p /var/temp/nginx
在 Nginx 目录下,输入如下命令进行配置,目的是为了创建makefile文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ./configure \ --prefix=/usr/local/nginx \ --pid-path=/usr/local/nginx/nginx.pid \ --lock-path=/var /lock/nginx.lock \ --error-log-path=/var /log/nginx/error.log \ --http-log-path=/var /log/nginx/access.log \ --with -http_ssl_module \ --with -stream \ --with -http_gzip_static_module \ --http-client-body-temp-path=/var /temp/nginx/client \ --http-proxy-temp-path=/var /temp/nginx/proxy \ --http-fastcgi-temp-path=/var /temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var /temp/nginx/uwsgi \ --http-scgi-temp-path=/var /temp/nginx/scgi
上面是一条命令,每行的末尾 \
表示对命令进行换行,\
之后不能有空格。
上面的 --prefix=/usr/local/nginx
就是 Nginx 的安装路径。
--error-log-path
和 --http-log-path
指定的是日志目录。
7 编译 编译和安装:
1 2 3 4 5 # 编译 make # 安装 make install
8 启动 1 2 3 4 5 cd /usr/local/nginx/sbin ./nginx
如果指定的文件没有权限,则使用 sudo
执行
9 验证安装 查看nginx版本
10 访问首页 现在通过浏览器访问http://IP
就可以访问了。
11 设置开机自启 源码的安装方式,需要手动设置开机自启。
创建一个 systemd
服务文件 /etc/systemd/system/nginx.service
1 2 3 4 5 6 7 8 9 10 11 12 13 [Unit] Description =The NGINX HTTP and reverse proxy server After =network.target remote-fs.target nss-lookup.target [Service] Type =forking ExecStart =/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload =/usr/local/nginx/sbin/nginx -s reloadExecStop =/usr/local/nginx/sbin/nginx -s quit PrivateTmp =true [Install] WantedBy =multi-user.target
上面 nginx
的路径和配置文件的路径要对应。
然后运行命令重载一下 systemd 的配置文件:
1 sudo systemctl daemon-reload
然后就可以使用如下命令进行操作了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo systemctl enable nginxsudo systemctl disable nginxsudo systemctl start nginx sudo systemctl stop nginxsudo systemctl relaod nginx
2.4 Docker方式安装 Docker方式安装要比其他的安装方式简单多了。
下面介绍在 Docker 中部署 Nginx,并通过挂载方式将 Nginx 的配置文件和站点目录挂载到宿主机上。
1 下载镜像
默认下载的就是最新的镜像文件。
2 创建挂载目录 在宿主机上创建挂载目录,自己自定义放在哪里。
1 2 3 4 5 6 7 8 9 mkdir -p /home/ nginx/docker_dir/ nginx/conf mkdir -p /home/ nginx/docker_dir/ nginx/html mkdir -p /home/ nginx/docker_dir/ nginx/log chmod -R 777 /home/ nginx/docker_dir/ nginx
3 复制配置文件 如果我们此时使用如下指令直接运行容器会存在一个问题。
1 2 3 4 5 6 docker run -d -p 8080 :80 --name nginx-1 --restart=always \ -v /home/ nginx/docker_dir/ nginx/conf/ nginx.conf: /etc/ nginx/nginx.conf \ -v /home/ nginx/docker_dir/ nginx/conf/ conf.d: /etc/ nginx/conf.d \ -v /home/ nginx/docker_dir/ nginx/log:/ var /log/ nginx \ -v /home/ nginx/docker_dir/ nginx/html:/ usr/share/ nginx/html \ nginx
宿主机不存在不存在 nginx.conf 文件,会把 /home/nginx/docker_dir/nginx/conf/nginx.conf
当成文件夹来处理,那么把宿主机的 /home/nginx/docker_dir/nginx/conf/nginx.conf
文件夹映射到容器的 /etc/nginx/nginx.conf
就会报错。
怎么处理呢?
我们首先通过 nginx 镜像运行一个简单的容器,将简单的容器中的配置文件复制到宿主机中,然后删除简单的容器,重新使用上面的命令运行我们的容器。
运行一个简单的容器
1 2 docker run --name nginx -p 8080 :80 -d nginx
复制配置文件到宿主机
1 2 3 4 5 6 docker cp nginx:/etc/ nginx/nginx.conf / home/nginx/ docker_dir/nginx/ conf/nginx.conf docker cp nginx:/etc/ nginx/conf.d / home/nginx/ docker_dir/nginx/ conf/conf.d docker cp nginx:/usr/ share/nginx/ html /home/ nginx/docker_dir/ nginx
删除简单的容器
4 运行容器 现在有配置文件了,可以运行容器,并进行挂载了:
1 2 3 4 5 6 docker run -d -p 8080 :80 --name nginx --restart=always \ -v /home/ nginx/docker_dir/ nginx/conf/ nginx.conf: /etc/ nginx/nginx.conf \ -v /home/ nginx/docker_dir/ nginx/conf/ conf.d: /etc/ nginx/conf.d \ -v /home/ nginx/docker_dir/ nginx/log:/ var /log/ nginx \ -v /home/ nginx/docker_dir/ nginx/html:/ usr/share/ nginx/html \ nginx
参数说明:
-d:后台运行
-p: 端口映射(宿主机端口:容器端口),nginx配置文件中默认使用的是80端口,所以容器的端口使用的是80,除非修改配置文件。
–name 创建容器的名称
–restart=always 容器停止后自动重启
-v 目录挂载(宿主机目录:容器目录)
最后的nginx表示镜像的名称
5 访问首页 现在通过浏览器访问http://IP
就可以访问了。