前段时间想做个官网来远程接活,这个念头来源于3R教室掘金视频,大家要是感兴趣可以上B站搜3R教室了解下,特别是觉得以后干不了多长时间坐班工作的程序员更应该来到3R教室了解下,会得到不少以后适合程序员出路的灵感。
刚好3R教室代码库里有个工作室的项目,拿来改改正好,一看是react nextjs框架,有点不知道怎么改,本人这最近几年只接触过vue这种的。幸好我旁边有前端大佬,辅助我改了改,改成了我想要的官网。
官网OK了,最后只剩部署了,遇到了问题。之前接触的vue,我看前端同事都是打包成disk文件夹,下面有个index.html文件,nginx直接映射这个index.html文件路径就行了。但是我发现我这个项目打包成的文件夹下面压根就没有html文件,有点蒙了。网上搜了下要想打个静态包需要在next.config.js加上output: 'export'。后来发现虽然多出个out文件夹,但是下面还是没有静态文件。接着网上搜,发现项目里用了很多动态路径所以生成不了静态文件,只能把项目启动起来才行,nginx映射ip端口就行了。
果然执行了npm run dev运行了项目,官网终于能访问了,没想到ssh一关又访问不了了。这让我想起来以前部署java项目的时候好像也是,运行命令得配合nohup去执行,但是还是不行。后来在项目下看到了start.sh文件,里面用了pm2运行了项目,网上一搜pm2是专门管理nextjs应用的。于是乎我照着网上执行了以下命令:
#安装pm2,Node.js进程管理
npm install pm2 -g
#启动应用
pm2 start npm --name "yilingma" -- run dev
#保存进程列表,以便重启后恢复,防止关闭ssh项目进程结束
pm2 save
完美解决,ssh关闭官网正常访问,很nice!虽然走了很多弯路,踩了很多坑,还好解决的问题达到了目标,得到了想要的结果。
最后顺便宣传下我的官网:yilingma.com,欢迎大家进来浏览!