nuxt
执行打包命令 npm run build
build
输出的文件夹 .output
的所有内容上传到服务器 /blog/nuxt-home
中npm install pm2 -g
安装pm2并配置 ecosystem.config.js
<details data-line="4" class="md-editor-code">
<summary class="md-editor-code-head">
<div class="md-editor-code-flag"><span></span><span></span><span></span></div>
<div class="md-editor-code-action">
<span class="md-editor-code-lang">javascript</span>
<span class="md-editor-copy-button" data-tips="复制代码">复制代码</span>
<span class="md-editor-collapse-tips"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-chevron-left md-editor-icon"><circle cx="12" cy="12" r="10"/><path d="m14 16-4-4 4-4"/></svg></span>
</div>
</summary>
<pre><code class="language-javascript" language=javascript><span class="md-editor-code-block"> <span class="hljs-comment">// 配置pm2</span>
module.exports = { apps: [ { name: "BlogHomeNuxt", exec_mode: "cluster", instances: "2", script: "output/server/index.mjs", args: "", // 传递给脚本的参数 watch: true, // 开启监听文件变动重启 ignore_watch: ["node_modules", "public", "logs"], // 不用监听的文件 exec_mode: "fork",// 自家主机window cluster_mode 模式下启动失败 instances: "2", // max表示最大的 应用启动实例个数,仅在 cluster 模式有效 默认为 fork autorestart: true, // 默认为 true, 发生异常的情况下自动重启 max_memory_restart: "1G", // error_file: './logs/app-err.log', // 错误日志文件 // out_file: './logs/app-out.log', // 正常日志文件 merge_logs: true, // 设置追加日志而不是新建日志 log_date_format: "YYYY-MM-DD HH:mm:ss", // 指定日志文件的时间格式 min_uptime: "60s", // 应用运行少于时间被认为是异常启动 max_restarts: 30, // 最大异常重启次数 restart_delay: 60, // 异常重启情况下,延时重启时间 env: { // 环境参数,当前指定为开发环境 NODE_ENV: "development", PORT: "5050", }, env_production: { // 环境参数,当前指定为生产环境 NODE_ENV: "production", //使用production模式 pm2 start ecosystem.config.js --env production PORT: "5050", }, env_test: { // 环境参数,当前为测试环境 NODE_ENV: "test", }, }, ], };
</details>
<h3 data-line="45" id="4.编写 start-nuxt.sh 脚本">4.编写 <code>start-nuxt.sh</code> 脚本</h3>
<details data-line="46" class="md-editor-code" open="">
<summary class="md-editor-code-head">
<div class="md-editor-code-flag"><span></span><span></span><span></span></div>
<div class="md-editor-code-action">
<span class="md-editor-code-lang">shelll</span>
<span class="md-editor-copy-button" data-tips="复制代码">复制代码</span>
<span class="md-editor-collapse-tips"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-chevron-left md-editor-icon"><circle cx="12" cy="12" r="10"/><path d="m14 16-4-4 4-4"/></svg></span>
</div>
</summary>
<pre><code class="language-shelll" language=shelll><span class="md-editor-code-block"> <span class="hljs-comment">#!/bin/bash</span>
BUILD_ID=DONTKILLME
echo "pm2 starting"
pm2 start ecosystem.config.js --env production
echo "pm2 started"
</details>
<h3 data-line="59" id="5.在 /blog/nuxt-home下执行 sh start-nuxt.sh 即可 成功使用pm2启动nuxt服务">5.在 <code>/blog/nuxt-home</code>下执行 <code>sh start-nuxt.sh</code> 即可 成功使用<code>pm2</code>启动<code>nuxt</code>服务</h3>
nginx.conf
文件,修改默认访问网站配置 <details data-line="61" class="md-editor-code" open="">
<summary class="md-editor-code-head">
<div class="md-editor-code-flag"><span></span><span></span><span></span></div>
<div class="md-editor-code-action">
<span class="md-editor-code-lang">shelll</span>
<span class="md-editor-copy-button" data-tips="复制代码">复制代码</span>
<span class="md-editor-collapse-tips"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-chevron-left md-editor-icon"><circle cx="12" cy="12" r="10"/><path d="m14 16-4-4 4-4"/></svg></span>
</div>
</summary>
<pre><code class="language-shelll" language=shelll><span class="md-editor-code-block"> <span class="hljs-comment"># 博客前端</span>
location / { # root /blog/home/; # index /index.html; # try_files $uri $uri/ /index.html; proxy_pass http://localhost:5050/; }
</details>
<h3 data-line="71" id="7.设置服务器重启自动启动服务">7.设置服务器重启自动启动服务</h3>
pm2 list
pm2 save
pm2 startup
<details data-line="77" class="md-editor-code" open="">
<summary class="md-editor-code-head">
<div class="md-editor-code-flag"><span></span><span></span><span></span></div>
<div class="md-editor-code-action">
<span class="md-editor-code-lang">shell</span>
<span class="md-editor-copy-button" data-tips="复制代码">复制代码</span>
<span class="md-editor-collapse-tips"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-chevron-left md-editor-icon"><circle cx="12" cy="12" r="10"/><path d="m14 16-4-4 4-4"/></svg></span>
</div>
</summary>
<pre><code class="language-shell" language=shell><span class="md-editor-code-block">// --name 别名
pm2 start main --name zone-server
</details>
<h2 data-line="82" id="二、相关注意事项">二、相关注意事项</h2>
nuxt3
服务器打包会造成内存溢出导致卡死pm2
部署nestjs
服务时,有用到express-session
时不能使用多核部署,防止多核时session
不同步重写,导致首次访问session
不存在问题。pm2
重启blog-server
一直launching
执行pm2 update
重新启动就行