# 1、nginx 代理

推荐教程:Nginx 极简教程 (opens new window)

  若绑定的域名为要所以https协议,还需要添加 SSL 配置。

server{
  listen 80 ssl;

  # 添加SSL证书文件
  ssl_certificate <文件地址>
  ssl_certificate_key <文件地址>

  # 服务器地址(本机)或绑定域名
  server_name localhost;
}

# 多项目

  • /conf/nginx.conf
user root

http{
  # 项目一
  server {
    listen 80;
    server_name  localhost;

    location / {
      root  /www/wwwroot/one;
      try_files $uri $uri/ /index.html;
      index  index.html index.htm;
    }

    location /prod-api/ {
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header REMOTE-HOST $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_pass http://localhost:5151/;
    }
  }

  # 项目二
  server {
    listen 90;
    server_name  localhost;

    location / {
      root   /www/wwwroot/two;
      try_files $uri $uri/ /index.html;
      index  index.html index.htm;
    }

    location /prod-api/ {
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header REMOTE-HOST $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_pass http://localhost:2424/;
    }
  }
}

# 多集群

  • /conf/nginx.conf
user root

http{

  # 小集群(weight表示权重)
  upstream ruoyi {
    server 192.168.31.101:8080 weight=5
    server 192.168.31.102:8080 weight=5
  }

  # 项目
  server {
    listen 80;
    server_name  localhost;

    location / {
      root  html;
      try_files $uri $uri/ /index.html;
      index  index.html index.htm;
    }

    location /prod-api/ {
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header REMOTE-HOST $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_pass http://ruoyi/;
    }
  }
}

# 2、pm2 管理

PM2 (opens new window) 是一个 Node.js 进程管理器,用于在 Node.js 应用程序的生产环境中管理进程

# 安装使用

回顾:使用 nodemon
# 安装
npm install nodemon -g

# 使用
npm install
nodemon ./src/main.js


提示

  更多的,我们还可以采用编写 pm2 支持的 ecosystem.config.js,代替启动命令

ecosystem.config.js

生成文件:

pm2 init simple

编写文件:

module.exports = {
  apps: [
    {
      name: 'app1',
      script: './app.js',
      instances: 5, // 进程数
      exec_mode: 'cluster', // 集群模式 --> 负载均衡
      env: {
        PORT: 3000
      }
    }
  ]
}
# 安装
npm install pm2 -g
pm2 -version

# 使用
npm install
pm2 start ./src/main.js --name projectName [-i 4]
# 【不使用 nodemon ./src/main.js】

# 其他
pm2 stop [projectName | 项目id]
pm2 delete [projectName | 项目id]
pm2 restart  [projectName | 项目id]

# 查看信息、状态

# 查看已启动项目
pm2 list

# 实时监控
pm2 logs # 日志
pm2 monit # 进程状态和性能数据

# 某项目详细信息
pm2 show [projectName | 项目id | all]

# 开机自启动

# 1、步骤一
pm2 save # 保存当前PM2进程列表
pm2 startup # 生成PM2启动脚本

# 2、步骤二
pm2 save # 保存当前PM2进程列表
pm2 unstartup systemd # 删除初始化脚本

# 3、tomcat 容器

文档推荐 (opens new window)

# 多项目

cd /usr/local/tomcat/apache-tomcat-8.5.83/

mkdir webapps1
mkdir webapps2

cd conf/
vim server.xml
  • /conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">

  <!-- 项目一 -->
  <Service name="Catalina1👀">
    <Connector port="81👀" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Engine name="Catalina1👀" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps1👀"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>

    <!-- 项目二 -->
  <Service name="Catalina2">
    <Connector port="82" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Engine name="Catalina2" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps2"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>
更新于 : 8/7/2024, 2:16:31 PM