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日

相关文章

  • 2、Nginx 是如何实现并发的?为什么 Nginx 不使用多线程?Nginx常见的优化手段有哪些?502错误可能原因有哪些?

    异步,非阻塞,使用了epoll 和大量的底层代码优化。 如果一个server采用一个进程负责一个request的方式,那么进程数就是并发数。正常情况下,会有很多进程一直在等待中。 而nginx采用一个master进程,多个woker进程的模式。 master进程主要负责收集、分发请求。每当一个请求过来时,master就拉起一个worker进程负责处理这个请求…

    2023年4月10日
    00
  • Nginx是如何处理一个请求

    首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址,然后在nginx的master进程里面,先初始化好这个监控的socket(创建socket,设置addrreuse等选项,绑定到指定的ip地址端口,再listen),然后再fork(一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程 )出多个子进程出来,然…

    Nginx 2023年4月11日
    00
  • nginx的location与proxy_pass配置超详细讲解及其有无斜杠( / )结尾的区别

    本文所使用的环境信息如下: windows11 (主机系统) virtual-box-7.0环境下的ubuntu-18.04 nginx-1.22.1 (linux) 斜杠结尾之争 实践中,nginx里最常用的指令就是location和proxy_pass了。前者用于为不同请求uri指定不同nginx配置,后者用于匹配的location进行转发(通常是动态内…

    2023年4月10日
    00
  • Nginx实现前端访问后端本地接口

    Nginx配置两个地方就行: 先是配置好自己项目的服务,确保自己的项目能运行: location / { root /web/xiangmu/public; // 本地项目的路径 index index.html index.php; } 再是配置接口请求后端: location /api/ { proxy_pass http://192.168.1.1;(…

    Nginx 2023年4月13日
    00
  • Window下将nginx配置为开机自动启动

    前两天看到公司window服务器上面有个nginx在跑,重启服务器后没有自动启动,需要手动运行nginx,甚是麻烦呀 上网找了一下关于将nginx配置为系统服务并且开机自动启动的解决方案,这里mark一下: 1、下载WinSW(window service wraper)   地址:https://github.com/kohsuke/winsw/relea…

    Nginx 2023年4月13日
    00
  • nginx添加用户验证(访问服务器是的用户名密码)

    设置Web服务器时,通常会限制您希望限制访问的部分网站。 Web应用程序通常提供自己的身份验证和授权方法,但如果Web服务器不足或不可用,Web服务器本身可用于限制访问。  步骤1:创建保存用户名和密码的文件 首先,我们需要创建一个文件来保存我们的用户名和密码组合。您可以通过使用服务器上可能已有的OpenSSL实用程序来完成此操作。或者,您可以使用apach…

    Nginx 2023年4月12日
    00
  • Nginx添加ngx-fancyindex模块的方法

    首先,需要了解什么是ngx-fancyindex模块。ngx-fancyindex是一个用于美化Nginx文件列表页面的第三方模块,它可以给Nginx的文件列表页面加上图标、文件大小、创建时间、修改时间等信息,让整个页面更加美观。下面,详细讲解ngx-fancyindex模块的安装方法。 1. 下载ngx-fancyindex模块源码 使用wget工具下载n…

    Nginx 2023年5月16日
    00
  • linux下Nginx配置文件(nginx.conf)配置设置详解(windows用phpstudy集成)

    linux备份nginx.conf文件举例: cp /usr/local/nginx/nginx.conf /usr/local/nginx/nginx.conf-20171111(日期) 在进程列表里 面找master进程,它的编号就是主进程号。 ps -ef | grep nginx 查看进程 cat /usr/local/nginx/nginx.pid…

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