前言之前做的几个项目都托管在阿里云服务器上,但是最近要过期了。考虑要不要续费,毕竟100/月。背后看阿里云,有一个事件,800/三年。果断买了。环境部署折腾了一天,也遇到了几个坑。内容1.安装环境1.1安装NodeJS环境1.2安装版本控制软件Git1.3安装MongoDB数据库1.4安装Nginx2.导入数据3.安装项目4.部署项目4.1Nginx配置4.2启用HTTPS4.3使用PM2部署项目4.4打开阿里云网络访问5.踩坑记录5.1数据库导入失败5.2PM2部署失败1.安装环境为保证项目运行无问题,请在新服务器上安装与原服务器相同的环境。项目迁移耗时1天,两台服务器的系统都是Ubuntu16.0464位。1.1安装NodeJS环境自带的NodeJS版本是4.2.6,有点低。使用npm的n模块更新到最新版本。安装npmsudoapt-getinstallnpm使用淘宝源阿里云访问npm速度很慢。这里通过设置,让npm从淘宝镜像中更新模块npmsetregistryhttps://registry.npm.taobao.org//SetfromTaobaomirrorUpdatenpmsetdisturlhttps://npm.taobao.org/distnpmcacheclean//清除缓存updateNodeJSnpminstalln//更新NodeJS模块nstable//更新到最新的稳定版本node-v//v8.2.11.2安装版本控制软件Gitsudoapt-getinstallgit1.3安装MongoDB数据库sudoapt-getinstallmongodb//安装MongoDBservicemongodbstart//启动服务mongod//进入交互式控制台,如果可以添加说明启动成功,ctrl+c退出1.4安装Nginxsudoapt-getinstallnginx//安装Nginx2.导入数据,完全迁移之前的数据库从源服务器导出数据库mongodump-hlocalhost--port27017-dtest-odatabase_dump导入MongoDB数据库mongorestore-dtestdatabase_dump/test3.安装工程该工程在Github上开源,直接拉取即可。gitclonehttps://github.com/bergwhite/nchat.git//克隆项目cdnchat//进入目录npminstallinstallmodulenpmrunbuild4.部署项目4.1Nginx配置vim/etc/nginx/nginx.conf//编辑Nginx配置http{server{listen80;server_name主机名;重写^(.*)https://$server_name$1永久;}服务器{听443ssl;server_name主机名;SSL开启;#SSL证书将被插入这里#完整的根目录位置/{root/*/*/*;索引index.html;}#反向代理V2EXAPI到本地,解决跨域问题location/api/{proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_passhttps://www.v2ex.com/api/;}}...4.2启用HTTPSsudoapt-getupdate//更新软件源sudoapt-getinstallsoftware-properties-common//安装sudoadd-apt-repositoryppa:certbot/certbot//添加仓库sudoapt-getupdate//更新软件源sudoapt-getinstallpython-certbot-nginx//安装sudocertbot--nginx//生成证书(自动添加到Nginx)sudocertbot--nginxcertonly//生成证书(手动添加到Nginx)4.3使用PM2部署项目sudoapt-getinstallpm2//安装pm24.4并开启阿里云外网访问。在安全组中添加需要释放的NodeJS项目端口。5、踩坑记录5.1数据库导入失败导入数据库时??,有一个Collection没有导入成功。Assertionfailureamt==(size_t)(size-4)src/mongo/tools/tool.cpp330解决方法将报错的Collection单独导出,然后重新导入Database5.2PM2deploymenttonewserverfails运行下面的代码会失败pm2start-i0--nametest./bin/www解决方法使用fork方式启动pm2start--namenchat3./bin/www参考让NPM从淘宝镜像更新模块MongoDB下Ubuntu下备份还原Nginx配置HTTPS
