最近在搞一个微信小项目,开发代码已经弄好,也顺利部署到阿里云服务器上,其中遇到了一些坑,特此记录下部署的流程和遇到的坑。
我购买阿里云时服务器的操作系统选的是ubuntu,纯命令行输入感觉还是很6的,感觉自己充满了黑客气质!
环境介绍
本地操作系统windows 7 ,使用putty进行远程ssh连接
阿里云服务器ECS操作系统 ubuntu 14.04
服务器配置
使用putty连接到远程服务器时起始只有root用户,管理员权限,使用root登录。
新建普通用户 :adduser iyoyo
代理权限 : gpasswd -a iyoyo sudo
打开sudo配置文件 sudo visudo 添加 iyoyo ALL(ALL:ALL)ALL
修改sshd_config文件(vi /etc/ssh/sshd_config)配置项不让root登录 permitrootlogin 设置为 no
重启ssh sudo service ssh restart
安装程序
Sudo apt-get update
Sudo apt-get install vim openssl build-essential libssl-dev wget curl git
安装nvm:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
使用nvm安装node:
nvm install v6.9.5
nvm use v6.9.5
nvm alias default v6.9.5
安装npm使用国内淘宝源:
npm --registry=https://registry.npm.taobao.org install -g npm
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
使用npm安装pm2 webpack等:
npm i pm2 webpack gulp grunt-cli -g
安装nginx
sudo apt-get install nginx
进入到/etc/nginx/conf.d文件夹添加conf文件:
sudo vi (your).conf 在文件中添加配置项
重新载入nginx配置sudo nginx -s reload
安装mongodb
官网上步骤比较明晰 https://docs.mongodb.com/v3.0/tutorial/install-mongodb-on-ubuntu/
代码部署配置
代码部署的方式主要是本地代码提交到码云私有仓库,服务器用git从码云私有仓库获取。前提是本地和服务器都要生成ssh公私钥,并将公钥添加到码云ssh密钥认证列表里。服务器代码的获取与项目启动都是使用pm2进行自动化操作。
首先本地修改完代码执行本地操作 :
git add .
git commit -m "description"
git push orgin master
代码提交到私有仓库后使用本地pm2根据项目根目录ecosystem.json文件远程控制服务器pm2自动执行:
pm2 deploy ecosystem.json production setup
pm2 deploy ecosystem.json production
遇到的坑
我电脑上执行pm2 deploy ecosystem.json production时总是失败,提示cant open .git/FETCH_HEAD文件,刚开始一直觉得是服务端用户权限问题,但是查看iyoyo用户对.git文件夹的权限是-rwxrwxrwx是有权限的,一直找不到原因,网上搜了很长时间也搜不出答案,纠结花费了半天时间。可能是我刚开始使用root用户进行的pm2执行操作后来又变成iyoyo导致权限混乱,最后我把服务端的项目文件夹下的文件全部删除。重新进行 pm2 deploy ecosystem.json production setup,pm2 deploy ecosystem.json production这两步操作,最终可以了。
因为我的是windows电脑,直接使用cmd打开的命令行执行pm2命令时一直执行不了,后来看官网常见问题介绍找到解决办法,使用git bash命令行工具运行pm2相关命令就ok了
参考文章:
aliyun部署: https://zhuanlan.zhihu.com/p/20940096,
pm2官网: http://pm2.keymetrics.io/docs/usage/deployment/