Open jackieli123723 opened 6 years ago
[root@instance-7aqka2xd sbin]# whereis nginx
nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz /usr/share/man/man3/nginx.3pm.gz
[root@instance-7aqka2xd sbin]# pwd
/usr/sbin
[root@instance-7aqka2xd sbin]# ./nginx -s reload 重启
[root@instance-7aqka2xd sbin]#
upstream nodenuxt {
server 127.0.0.1:7001; # nuxt 项目监听端口
keepalive 64;
}
server {
#ip代理方式
listen 82;
server_name 180.76.154.80;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Nginx-Proxy true;
proxy_cache_bypass $http_upgrade;
proxy_pass http://nodenuxt; # 反向代理
}
}
[root@instance-7aqka2xd nuxt-ssr]# netstat -an | grep 7001
[root@instance-7aqka2xd nuxt-ssr]#
并没有监听到
pm2 start npm --name "nuxtport7001-ssr-demo" -- run build --watch (502错误有时候出现)
这个当前环境
[root@instance-7aqka2xd sbin]# node -v
v10.0.0
[root@instance-7aqka2xd sbin]# npm -v
5.6.0
[root@instance-7aqka2xd sbin]#
[root@instance-7aqka2xd nuxt-ssr]# netstat -an | grep 7001
[root@instance-7aqka2xd nuxt-ssr]# pm2 start npm --name "nuxtport7001-ssr-demo" -- run build
[PM2] Starting /usr/local/bin/npm in fork_mode (1 instance)
[PM2] Done.
┌───────────────────────┬────┬──────┬────────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├───────────────────────┼────┼──────┼────────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ app │ 0 │ fork │ 104888 │ online │ 43 │ 2h │ 0% │ 10.9 MB │ root │ disabled │
│ nuxtport7001-ssr-demo │ 4 │ fork │ 109046 │ online │ 0 │ 0s │ 55% │ 18.0 MB │ root │ disabled │
└───────────────────────┴────┴──────┴────────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
[root@instance-7aqka2xd nuxt-ssr]# netstat -an | grep 7001
[root@instance-7aqka2xd nuxt-ssr]# netstat -an | grep 7001
[root@instance-7aqka2xd nuxt-ssr]# netstat -an | grep 7001
pm2 任务有了 但是没有启动成功
[root@instance-7aqka2xd nuxt-ssr]# pm2 start npm --name "nuxtport7001-ssr-demo" -- run build
[PM2] Starting /usr/local/bin/npm in fork_mode (1 instance)
[PM2] Done.
┌───────────────────────┬────┬──────┬────────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├───────────────────────┼────┼──────┼────────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ app │ 0 │ fork │ 104888 │ online │ 43 │ 2h │ 0% │ 8.4 MB │ root │ disabled │
│ nuxtport7001-ssr-demo │ 4 │ fork │ 109046 │ online │ 0 │ 89s │ 0% │ 8.2 MB │ root │ disabled │
│ nuxtport7001-ssr-demo │ 5 │ fork │ 109106 │ online │ 0 │ 6s │ 3% │ 17.3 MB │ root │ disabled │
└───────────────────────┴────┴──────┴────────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
[root@instance-7aqka2xd nuxt-ssr]# netstat -an | grep 7001
tcp 0 0 127.0.0.1:7001 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:37698 127.0.0.1:7001 ESTABLISHED
tcp 0 0 127.0.0.1:7001 127.0.0.1:37714 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:37710 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:37708 ESTABLISHED
tcp 0 0 127.0.0.1:7001 127.0.0.1:37700 TIME_WAIT
tcp 0 0 127.0.0.1:37708 127.0.0.1:7001 ESTABLISHED
tcp 0 0 127.0.0.1:7001 127.0.0.1:37704 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:37698 ESTABLISHED
端口也监听了7001 但是没有内容 502 Bad Gateway
用npm run build 是ok的
[root@instance-7aqka2xd nuxt-ssr]# npm run build
> nuxt-ssr-demo@1.0.0 build /home/nuxt-ssr
> nuxt build && npm start
nuxt:build Building... +0ms
… debug nuxt › proxy › [HPM] Proxy created: /api -> https://banner-storage-ms.juejin.im
… debug nuxt › proxy › [HPM] Proxy rewrite rule created: "^/api" ~> ""
… debug nuxt › proxy › [HPM] Proxy created: /japi -> https://gold-tag-ms.juejin.im
… debug nuxt › proxy › [HPM] Proxy rewrite rule created: "^/japi" ~> ""
… debug nuxt › proxy › [HPM] Proxy created: /rapi -> https://recommender-api-ms.juejin.im
… debug nuxt › proxy › [HPM] Proxy rewrite rule created: "^/rapi" ~> ""
… debug nuxt › proxy › [HPM] Proxy created: /tapi -> https://timeline-merger-ms.juejin.im
… debug nuxt › proxy › [HPM] Proxy rewrite rule created: "^/tapi" ~> ""
… debug nuxt › proxy › [HPM] Proxy created: /xapi -> https://xiaoce-timeline-api-ms.juejin.im
… debug nuxt › proxy › [HPM] Proxy rewrite rule created: "^/xapi" ~> ""
… debug nuxt › axios › baseURL: http://localhost:3000/
… debug nuxt › axios › browserBaseURL: /
nuxt:build App root: /home/nuxt-ssr +0ms
nuxt:build Generating /home/nuxt-ssr/.nuxt files... +0ms
nuxt:build Generating files... +78ms
nuxt:build Generating routes... +9ms
nuxt:build Building files... +39ms
████████████████████ 100%
Build completed in 63.451s
WARNING Compiled with 1 warnings 16:47:24
warning
asset size limit: The following asset(s) exceed the recommended size limit (300 kB).
This can impact web performance.
Assets:
img/ionicons.76feedd.svg (336 kB)
vendor.e14d0989efae60ac15fa.js (850 kB)
Hash: fe9e2f17d838403344e3
Version: webpack 3.11.0
Time: 63442ms
Asset Size Chunks Chunk Names
pages/index/index.bca870321d8fd142f22b.js 11.2 kB 1 [emitted] pages/index/index
img/ionicons.76feedd.svg 336 kB [emitted] [big]
fonts/ionicons.dd4781d.ttf 189 kB [emitted]
img/write.ca0cfea.svg 2.42 kB [emitted]
fonts/ionicons.19e65b8.eot 121 kB [emitted]
fonts/ionicons.2c159d0.woff 67.9 kB [emitted]
img/search.526a0c9.svg 1.26 kB [emitted]
img/active-search.c211c8f.svg 1.27 kB [emitted]
pages/index/_welcome/_category.609551d21b95ddd9bec2.js 17.7 kB 0 [emitted] pages/index/_welcome/_category
img/juejin.551f1de.svg 6.25 kB [emitted]
pages/index.df9ecfedca6fbc169b59.js 13.3 kB 2 [emitted] pages/index
pages/books.76431419069959334c65.js 9.31 kB 3 [emitted] pages/books
layouts/default.4adda06f91b72349d819.js 8.38 kB 4 [emitted] layouts/default
pages/repos.57a823037aee915da117.js 983 bytes 5 [emitted] pages/repos
pages/events/all.11ba2cef70a8b7c80433.js 995 bytes 6 [emitted] pages/events/all
vendor.e14d0989efae60ac15fa.js 850 kB 7 [emitted] [big] vendor
app.6356a70fddb8444fae16.js 98 kB 8 [emitted] app
manifest.fe9e2f17d838403344e3.js 1.7 kB 9 [emitted] manifest
LICENSES 1.46 kB [emitted]
+ 3 hidden assets
WARNING in asset size limit: The following asset(s) exceed the recommended size limit (300 kB).
This can impact web performance.
Assets:
img/ionicons.76feedd.svg (336 kB)
vendor.e14d0989efae60ac15fa.js (850 kB)
Hash: b5f953177af1e653efb8
Version: webpack 3.11.0
Time: 4391ms
Asset Size Chunks Chunk Names
server-bundle.json 365 kB [emitted]
nuxt:build Building done +1m
> nuxt-ssr-demo@1.0.0 start /home/nuxt-ssr
> PORT=7001 nuxt start
… debug nuxt › proxy › [HPM] Proxy created: /api -> https://banner-storage-ms.juejin.im
… debug nuxt › proxy › [HPM] Proxy rewrite rule created: "^/api" ~> ""
… debug nuxt › proxy › [HPM] Proxy created: /japi -> https://gold-tag-ms.juejin.im
… debug nuxt › proxy › [HPM] Proxy rewrite rule created: "^/japi" ~> ""
… debug nuxt › proxy › [HPM] Proxy created: /rapi -> https://recommender-api-ms.juejin.im
… debug nuxt › proxy › [HPM] Proxy rewrite rule created: "^/rapi" ~> ""
… debug nuxt › proxy › [HPM] Proxy created: /tapi -> https://timeline-merger-ms.juejin.im
… debug nuxt › proxy › [HPM] Proxy rewrite rule created: "^/tapi" ~> ""
… debug nuxt › proxy › [HPM] Proxy created: /xapi -> https://xiaoce-timeline-api-ms.juejin.im
… debug nuxt › proxy › [HPM] Proxy rewrite rule created: "^/xapi" ~> ""
… debug nuxt › axios › baseURL: http://localhost:7001/
… debug nuxt › axios › browserBaseURL: /
OPEN http://localhost:7001
## 初步分析原因是 nuxt build 时间过长导致了还没编译完成就启动了 nuxt start 虽然pm2 任务成功了 但是没有内容所以报错502
现在的
"scripts": {
"dev": "nuxt",
"build": "nuxt build && npm start",
"start": "PORT=7001 nuxt start",
"generate": "nuxt generate",
"deploy": "gh-pages -d dist",
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
"precommit": "npm run lint"
},
改为或者另外一个版本
{
"name": "my-app",
"dependencies": {
"next": "latest"
},
"scripts": {
"dev": "nuxt",
"start": "nuxt start -p $PORT",
"build": "nuxt build && PORT=8205 npm start"
}
}
注: 为方便与pm2守护进行结合, 使用更加方便nuxt.js服务端渲染应用部署这样就完成了
官方先后执行 npm run build 、npm start 即可完成部署。
而我这边只要执行 npm run build ,其实我只是把两个合并成一个,并设置了端口以便区别其他应用,避免端口占用!
pm2 start npm --name "jsyfShopNuxt" -- run start
[root@instance-7aqka2xd nuxt-ssr]# pm2 start npm --name "jsyfShopNuxt" -- run start
[PM2] Starting /usr/local/bin/npm in fork_mode (1 instance)
[PM2] Done.
┌──────────────┬────┬──────┬────────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────────┼────┼──────┼────────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ app │ 0 │ fork │ 104888 │ online │ 43 │ 3h │ 0% │ 5.8 MB │ root │ disabled │
│ jsyfShopNuxt │ 6 │ fork │ 109397 │ online │ 0 │ 0s │ 52% │ 20.1 MB │ root │ disabled │
└──────────────┴────┴──────┴────────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
[root@instance-7aqka2xd nuxt-ssr]# netstat -an | grep 7001
tcp 0 0 127.0.0.1:7001 0.0.0.0:* LISTEN
[root@instance-7aqka2xd nuxt-ssr]# pm2 monit 6
jsyfShopNuxt > 2018-05-08T09:09:23.494Z nuxt:render Rendering url /?imageView2/1/w/160/h/103 x
x[ 6] jsyfShopNuxt Mem: 30 MB CPU: 0 % online xx jsyfShopNuxt > get request url /rapi/v1/get_recommended_entry x
x xx jsyfShopNuxt > 2018-05-08T09:09:23.550Z nuxt:render Rendering url /null?imageView2/1/w/160/h/103 x
x xx jsyfShopNuxt > get request url /tapi/v1/get_entry_by_rank x
x xx jsyfShopNuxt > 2018-05-08T09:09:27.285Z nuxt:render Rendering url /null?imageView2/1/w/160/h/103 x
x xx jsyfShopNuxt > get request url /tapi/v1/get_entry_by_rank x
x xx jsyfShopNuxt > 2018-05-08T09:09:27.345Z nuxt:render Rendering url /?imageView2/1/w/160/h/103 x
x xx jsyfShopNuxt > get request url /rapi/v1/get_recommended_entry x
x xx x
x xx x
x xx x
x xx
能拿到日志
这种部署没问题、、
build": "nuxt build && npm start",
"build1": "nuxt build && PORT=7001 nuxt start",
"start": "PORT=7001 nuxt start",
改种
pm2 start npm --watch --name nuxt -- run build 这种方式有bug (pm启动了但是没内容502错误)
pm2 start npm --watch --name nuxt -- run build1 这个可以用 (最好采用该方式)
哈哈 导致上面的错误 可以用pm2 monit 来监控日志看看
[root@instance-7aqka2xd nuxt-ssr]# pm2 start npm --watch --name nuxt -- run build1
[PM2] Starting /usr/local/bin/npm in fork_mode (1 instance)
[PM2] Done.
┌──────────┬────┬──────┬────────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────┼────┼──────┼────────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ app │ 0 │ fork │ 104888 │ online │ 43 │ 3h │ 0% │ 6.3 MB │ root │ disabled │
│ nuxt │ 7 │ fork │ 109601 │ online │ 0 │ 0s │ 47% │ 18.4 MB │ root │ enabled │
└──────────┴────┴──────┴────────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
[root@instance-7aqka2xd nuxt-ssr]# netstat -an | grep 7001
tcp 0 0 127.0.0.1:7001 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:7001 127.0.0.1:38242 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38234 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38248 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38262 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38264 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38228 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38224 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38232 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38272 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38222 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38252 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38256 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38240 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38274 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38254 TIME_WAIT
tcp 0 0 127.0.0.1:7001 127.0.0.1:38268 TIME_WAIT
nuxt 部署的大坑
导致上面的问题是因为centos的默认配置的虚拟内存不够导致的
解决办法
下面是本实例的代码