以前嫌麻烦,自己写了很多小demo,却从未考虑过上线给其他人使用。后来有一个面试官告诉我,你身为开发,做出来的项目就是要给别人用的。于是后来我买了一个阿里云的学生服务器,也很便宜,一个月9.5。然后为我的博客买了一个域名,开始了学习上线之路。
1.首先记得要把前端项目里面的baseURL加入线上环境的URL
比如我的:
const baseUrl = process.env.NODE_ENV === 'production' ? 'https://www.lixinyi0622.com/v1/' : 'http://localhost:4200/v1/' // 项目运行在开发环境还是生产环境,根据不同环境对应不同webpack配置
2.然后将前端项目用webpack打包成一个dist文件夹
npm run build
这个npm命令的本质就是运行你项目里的build文件夹的build.js
3.然后下载一个SSL连接工具
这里我选择的是putty。
打开putty输入你的服务器IP,然后连接,在控制台里输入你的root账号的密码。
4.然后使用Linux命令安装好各种所需的应用环境,例如node.js和mysql
5.项目的部署可以自行下载ftp传输工具
我选择的是xftp
这样子传输的好处是可以可视化的操作了,当然你也可以使用git来部署。
把你的前端打包后的项目和后端项目都部署进去。
6.如果要使用nginx做代理的话,需要在nginx.conf里的server里配置一下root,就是你存放项目的位置,然后server_name可以设置多个你想要通过它们来访问网站的域名。
7.要让你的后台项目持续运行,需要在服务器上安装一个pm2,这是一个很强大的进程管理工具
npm install -g pm2
安装好之后,进入后台项目目录,然后执行命令
`pm2 start app.js`
这样后台就会一直运行,不用每次都手动开启。
8.然后记得把你的本地数据库转移到服务器的数据库上,我使用的是mysql,本地可视化工具我使用navicat,这个工具支持连接阿里云服务器,所以可以直接在navicat里面对服务器上的数据库进行操作,非常方便。相应的后台项目里面对数据库的配置信息也要记得修改过来。
9.这样子差不多就算上线成功了,如果你的域名成功备案了,那么就可以用域名访问了。
10.偶然发现阿里云里面可以买到免费的SSL证书,于是我买了一个,然后http转到https的过程也摸索了一下。
从阿里云上下载证书,解压得到一个pem和一个key。
然后把这些放到服务器上去。
首先当然是需要更改一下ngin.conf里面的设置,把443的端口配置照着之前80的一样编辑一下。
ssl_certificate
是pem文件的路径,ssl_certificate_key
是key文件的路径。
这样还不算完,还需要修改一下后端项目里面的www启动代码。
先把证书放进项目内。
把原先的var http = require('http');
里面的http
改为https
var fs = require('fs');
var options = {
key:fs.readFileSync("../ssl/xxx.key"),
cert:fs.readFileSync("../ssl/xxx.pem")
};
var server = https.createServer(options,app.callback()).listen(443);
这样后端就改好了。
然后我们还要把前端项目里的baseURL改为https开头的。