服务器:阿里云服务器(Ubuntu系统),其它的系统没试验
本地:MAC 系统
项目:meteor 项目
概述:为了这个部署整整折磨了两天两夜,什么mup ,mupx, meteorup 或者手动打包上传等等,甚至于想过直接在服务器整个开发环境就当部署,最终都没有成功过,遇到各种各样的问题。现在神器出来了 pm2-meteor ,使得部署终于成功了。
分两部分:
本地操作:
1. 如果原来没有装过nodejs ,进去这里https://nodejs.org/en/ 下载安装你的版本就好了,这个安装完后,就同时拥有了node 和 npm, 利用node -v 和 npm -v,查看是否成功,显示版本号就是成功了。如果没显示,可能因为没刷新,另开一个命令窗口试试node -v 和 npm -v。
2. 安装 pm2-meteor
npm i -g pm2-meteor
3. 新建一个部署目录,进入该目录后运行初始化
mkdir App_deployment
cd App_deployment
pm2-meteor init
这样在目录下就多出一个pm2-meteor.json文件出来,这个文件就是配置部署的,里面内容要正确.
如果里面配置太多,可以拷贝以下这些进去,改成你的信息就可以了
{
"appName": "hi",
"appLocation": {
"local": "/Users/sosocom/Documents/Workspace/meteor/hi"
},
"meteorSettingsLocation": "",
"meteorSettingsInRepo": false,
"prebuildScript": "",
"meteorBuildFlags": "--architecture os.linux.x86_64",
"env": {
"ROOT_URL": "http://app.your.com",
"PORT": 3000,
"MONGO_URL": "mongodb://localhost:27017/hi"
},
"server": {
"host": "47.89.10.251",
"username": "root",
"password": "your password",
"deploymentDir": "/opt/pm2-meteor",
"exec_mode": "cluster_mode",
"instances": 1
}
}
开始部署
pm2-meteor deploy
这回可能会提示你的服务器端没有安装Nodejs, npm, PM2
这三个东西是需要服务器端自己手动配置好的。
下面就是如果在Ubuntu上安装这三个东西
服务器端操作(安装nodejs+pm2+pm2-meteor)
利用ssh 登录你的服务器后,开始以下工作
第一步: 刷新源,这是预备工作
apt-get update
第二步:安装curl (新服务器是没有安装这个的)
apt-get install curl
第三步:获取资源,
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
第四步:安装nodejs
sudo apt-get install -y nodejs
现在新版的nodejs集成了node和npm的了,利用node -v 和 npm -v,查看是否成功,显示版本号就是成功了。
安装PM2
npm i -g pm2
安装pm2-meteor
npm i -g pm2-meteor
另外还要安装mongodb
apt-get install mongodb
服务器端工作完成。
回到本地的命令行窗口中
在项目目录中
pm2-metetor deploy
即可完成。如果中途提示要加一些后缀才能执行,则按提示添加
最后启动项目
$ pm2-meteor start
常用的管理命令
$ pm2-meteor start
$ pm2-meteor stop
$ pm2-meteor status
$ pm2-meteor logs
删除部署
执行这个命令,需要在那个pm2-meteor.json文件中加入这个选项
'allowUndeploy': true
pm2-meteor undeploy
If something goes wrong: revert to previous version
恢复上一个发布的版本
有时候做新版本发布,去部署覆盖了,又想回到上一个的,就用这个命令:
pm2-meteor revert
后续:
如果你要对外公布多个app, 并且都对端口进行处理,不显示端口差异,统一显示80的
那就要在服务器安装nginx,
apt-get install nginx
进入目录修改配置
cd /etc/nginx
修改这个文件
nano nginx.conf
在http的大括号{}内增加以下内容
server {
listen *:80;
server_name app.你的域名.com;
location / {
proxy_pass http://你的服务器IP:3000;
}
}
ctrol+x 退出,输入y 按回车保存
重启nginx
service nginx restart
去浏览器访问以下,不带端口号也可以访问了