shell脚本多实例部署nginx的详细教程

下面是关于“shell脚本多实例部署nginx的详细教程”的完整攻略。

准备工作

在开始之前,我们需要先进行一些准备工作。

1. 安装必要的软件

我们需要安装以下软件:

  • nginx
  • supervisor

在 Ubuntu 系统上,可以通过以下命令来安装:

sudo apt-get install nginx supervisor

2. 创建目录及配置文件

etc/nginx/ 目录下创建 sites-availablesites-enabled 两个子目录,并创建一个 nginx.conf 配置文件。

创建 sites-available 目录:

mkdir /etc/nginx/sites-available

创建 sites-enabled 目录:

mkdir /etc/nginx/sites-enabled

创建 nginx.conf 配置文件:

touch /etc/nginx/nginx.conf

然后在 nginx.conf 中加入以下语句:

include /etc/nginx/sites-enabled/*.conf;

3. 配置 supervisor

etc/supervisor/conf.d/ 目录下创建一个 nginx.conf 配置文件。

创建 nginx.conf 配置文件:

touch /etc/supervisor/conf.d/nginx.conf

nginx.conf 中加入以下语句:

[program:nginx]
command=/usr/sbin/nginx
autostart=true
autorestart=true
startretries=3
stderr_logfile=/var/log/nginx/nginx.err.log
stdout_logfile=/var/log/nginx/nginx.out.log
user=root

步骤

接下来,我们开始进行具体的步骤。

1. 编写 shell 脚本

下面是一个示例的 shell 脚本,该脚本根据传入的参数来创建不同的 nginx 实例。

创建 nginx-instance.sh 文件并加入以下代码:

#!/bin/bash

# 定义变量
INSTANCE_NAME=${1:-"nginx"}
INSTANCE_PORT=${2:-"80"}
INSTANCE_ROOT=${3:-"/var/www/html"}
CONFIG_FILE="/etc/nginx/sites-available/${INSTANCE_NAME}.conf"
PID_FILE="/run/nginx-${INSTANCE_NAME}.pid"

# 判断是否已存在该实例
if [[ -f "$CONFIG_FILE" ]]; then
  echo "Error: instance already exists"
  exit 1
fi

# 创建配置文件
cat << EOF > "$CONFIG_FILE"
server {
    listen ${INSTANCE_PORT} default_server;
    listen [::]:${INSTANCE_PORT} default_server;

    root ${INSTANCE_ROOT};
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
}
EOF

# 创建软链接
ln -s "$CONFIG_FILE" "/etc/nginx/sites-enabled/${INSTANCE_NAME}.conf"

# 重启 nginx
supervisorctl restart nginx

# 提示信息
echo "Success: instance has been created!"
echo "Instance name: ${INSTANCE_NAME}"
echo "Instance port: ${INSTANCE_PORT}"
echo "Instance root: ${INSTANCE_ROOT}"

2. 导入配置文件

nginx.conf 中加入以下语句:

include /etc/nginx/sites-enabled/*.conf;

3. 启动 supervisor

启动 supervisor:

sudo systemctl start supervisor

4. 创建 nginx 实例

使用以下命令创建 nginx 实例:

sudo sh nginx-instance.sh instance1 8080 /var/www/html/instance1

这将会创建一个名为 instance1 的 nginx 实例,监听 8080 端口,并把 /var/www/html/instance1 设置为根目录。

5. 测试 nginx 实例

使用以下命令测试 nginx 实例:

curl -I http://localhost:8080/

如果返回类似以下的信息,即表示 nginx 实例已经成功创建并启动了:

HTTP/1.1 200 OK
Server: nginx/1.14.0 (Ubuntu)
Date: Wed, 29 Sep 2021 07:04:16 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 612
Connection: keep-alive
Last-Modified: Mon, 06 Aug 2018 07:05:36 GMT
ETag: "264-57366c26672ce"
Accept-Ranges: bytes

示例1

下面是示例1:

假设我们希望创建一个名为 mysite 的 nginx 实例,并将其监听在 8000 端口,并将默认的根目录设置为 /var/www/mysite,我们可以使用以下命令:

sudo sh nginx-instance.sh mysite 8000 /var/www/mysite

示例2

下面是示例2:

假设我们希望创建一个名为 photosite 的 nginx 实例,并将其监听在 8080 端口,并将默认的根目录设置为 /var/www/photosite,我们可以使用以下命令:

sudo sh nginx-instance.sh photosite 8080 /var/www/photosite

总结

通过以上步骤,我们成功的实现了 shell 脚本多实例部署 nginx 的功能,并且还提供了两个示例供大家参考。希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:shell脚本多实例部署nginx的详细教程 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Nginx进程不产生core文件问题

      最近工作中遇到Nginx进程异常重启却没有产生core文件问题,经过排除发现问题所在,下面是这个问题的两个原因。 开启生成core文件功能   linux系统下默认是不产生core文件的,需要在进程崩溃时产生core文件要确保开启了此功能,使用命令 ulimit -c 查看,如果显示 0 就是没有开启,使用命令 ulimit -c unlimited 开…

    Nginx 2023年4月11日
    00
  • 用Docker实现nginx多端口

    一.安装docker 需要阿里的epel源,需要联网 [root@bogon ~]#yum -y install docker [root@bogon ~]#systemctl start docker [root@bogon ~]#systemctl enable docker   下载httpd镜像 Docker pull http:2.4.27-alp…

    Nginx 2023年4月16日
    00
  • 详解nginx basic auth配置踩坑记

    这里我就为你详细讲解“详解nginx basic auth配置踩坑记”的完整攻略,其中包含两个示例说明。 1. 背景概述 在Nginx部署过程中,我们经常会用到basic auth模块的功能,它可以提供简单的HTTP认证。但是,在使用basic auth功能时,常常会因为配置不当而导致认证失败或者意外泄露用户信息等问题。为了避免这些问题,我们需要详细地了解b…

    Nginx 2023年5月16日
    00
  • Nginx配置参数中文说明详解(负载均衡与反向代理)

    Nginx配置参数中文说明详解(负载均衡与反向代理) 1. 什么是Nginx负载均衡与反向代理 Nginx是一个高性能的Web服务器和反向代理服务器。负载均衡是将客户端请求分发到多个服务器进行处理,从而提高系统的吞吐量和响应速度。反向代理是在服务器端隐藏真正的服务提供者,提供统一接口服务,同时实现负载均衡。 2. Nginx配置参数中文说明 upstream…

    Nginx 2023年5月16日
    00
  • Vue项目上线后刷新报错404问题(apache,nginx,tomcat)

    一、 Vue项目打包发布apache报错: route,配置一个覆盖所有的路由情况 1、需要修改router/index.js中new Router 配置,加一个base: ‘/htcm_front/’, 它指定应用的基路径,该应用是服务于localhost/htcm_front路径下,所以必须加base配置,否则应用会展示404页面 2、需要修改confi…

    Nginx 2023年4月11日
    00
  • 全面了解Nginx中的HTTP协议相关模块配置

    下面我将为你详细讲解如何全面了解Nginx中的HTTP协议相关模块配置。 1. 了解HTTP协议 在配置Nginx的HTTP模块相关配置之前,我们首先要了解HTTP协议的基本原理。HTTP协议是网络世界中应用最广泛的协议之一,它是一种无状态的请求-响应协议,通过它我们可以在客户端和服务器之间传递数据。Nginx是一个支持HTTP协议的Web服务器以及反向代理…

    Nginx 2023年5月16日
    00
  • Docker安装Nginx

    1、确定自己已经安装好了Docker,如果没有安装请前往https://www.cnblogs.com/niuniu0108/p/12372531.html进行安装 2、拉去Nginx镜像包 docker pull nginx 3、查看已经拉去的镜像包 docker images    4、创建Nginx容器 docker run -itd –name m…

    Nginx 2023年4月12日
    00
  • nginx自启动通过注册系统服务实现

    编写nginx.service文件 vim /etc/systemd/system/nginx.service 内容如下: [Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=…

    Nginx 2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部