安装Nginx
常见使用版本
Nginx开源版:https://nginx.org
Nginx-plus商业版:https://www.nginx.com
OpenResty:https://openresty.org/cn
Tengine:https://tengine.taobao.org
使用apt命令安装nginx
注:以下命令都是在root用户下使用
安装命令
apt install nginx
查看版本
nginx -v
启动
systemctl start nginx
查看状态
systemctl status nginx
文件位置
- /usr/sbin/nginx:主程序
- /etc/nginx:存放配置文件
- /usr/share/nginx:存放静态文件
- /var/log/nginx:存放日志
卸载
先停止nginx
systemctl stop nginx
通过apt-get命令卸载nginx
apt-get --purge autoremove nginx
使用源码编译安装nginx
下载nginx相关依赖包:
apt-get install gcc
apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g zlib1g-dev
sudo apt-get install openssl
sudo apt-get install libssl-dev
从官网上下载对应的安装包
下载的nginx是tar.gz文件,命令:tar -zvxf nginx-x.x.x.tar.gz
下载的nginx是zip文件,命令:unzip nginx-1.24.0.tar.gz
进入解压后的文件夹
配置
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
说明:
--prefix=/usr/local/nginx:指定安装目录为/usr/local/nginx。在编译和安装完成后,软件将被安装到该目录下.
--with-http_stub_status_module:启用 HTTP Stub Status 模块。该模块是 Nginx 的一个内置模块,用于获取 Nginx 服务器的状态信息。
--with-http_ssl_module:启用 HTTP SSL 模块。该模块使得 Nginx 支持通过 HTTPS 提供安全的加密传输
编译:make
安装:make install
启动或关闭
#切换到nginx的安装目录
cd /usr/local/nginx/sbin
#启动nginx
./nginx
#快速停止
./nginx -s stop
#在退出前完整已经接受的连接请求
./nginx -s quit
#重新加载配置
./nginx -s reload
注册为系统服务
在 /etc/systemd/system/
目录下创建一个新的服务文件,例如 nginx.service
:vi /etc/systemd/system/nginx.service
在打开的文件中,添加以下内容:
[Unit]
Description=Nginx HTTP Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
执行以下命令重新加载 systemd 配置文件:
systemctl daemon-reload
执行以下命令启动 Nginx 服务:
systemctl start nginx
现在,Nginx 将作为系统服务在后台运行
如果你希望 Nginx 在系统启动时自动启动,可以执行以下命令设置开机自启动:
systemctl enable nginx
这样,Nginx 将在系统启动时自动启动
Docker 安装
首先获取镜像:
docker pull nginx
创建一个 .sh
文件,然后把下面内容填写进去
#!/bin/bash
# 检查参数数量
if [ $# -ne 2 ]; then
echo "用法: $0 <挂载目录> <监听端口>"
exit 1
fi
# 定义变量
MOUNT_DIR=$1
HOST_PORT=$2
# 创建挂载目录结构
echo "正在创建挂载目录..."
mkdir -p "${MOUNT_DIR}/conf"
mkdir -p "${MOUNT_DIR}/log"
mkdir -p "${MOUNT_DIR}/html"
# 清理已存在的nginx容器
echo "正在清理已存在的nginx容器..."
docker stop nginx 2>/dev/null || true
docker rm nginx 2>/dev/null || true
# 创建临时容器用于提取配置文件
echo "正在创建临时容器以提取配置文件..."
docker create --name temp-nginx nginx > /dev/null
docker start temp-nginx > /dev/null
# 从临时容器复制配置文件和目录
echo "正在复制配置文件..."
docker cp temp-nginx:/etc/nginx/nginx.conf "${MOUNT_DIR}/conf/nginx.conf"
docker cp temp-nginx:/etc/nginx/conf.d "${MOUNT_DIR}/conf/"
docker cp temp-nginx:/usr/share/nginx/html "${MOUNT_DIR}/"
# 清理临时容器
echo "正在清理临时容器..."
docker stop temp-nginx > /dev/null
docker rm temp-nginx > /dev/null
# 运行最终的nginx容器
echo "正在启动nginx容器..."
docker run -d \
-p "${HOST_PORT}:80" \
--name nginx \
-v "${MOUNT_DIR}/conf/nginx.conf:/etc/nginx/nginx.conf" \
-v "${MOUNT_DIR}/conf/conf.d:/etc/nginx/conf.d" \
-v "${MOUNT_DIR}/log:/var/log/nginx" \
-v "${MOUNT_DIR}/html:/usr/share/nginx/html" \
nginx
echo "✅ Nginx容器已启动"
echo " 宿主机访问端口: ${HOST_PORT}"
echo " 挂载目录: ${MOUNT_DIR}"
最后输入命令:
sh [file].sh [path] [port]
# 例子
sh dev.sh ~/apps/nginx 80