在搭建web全栈的过程当中,最令我头疼的就是项目的部署与上线,这个过程虽然简单,可是对于全栈菜鸟的我来讲真的是个大坑,可是我仍是去尝试,终于经过各类文档、请教与实践中完成了线上部署,在此作一下记录与总结
1、购买服务器
- 服务器选择:服务器的品牌有不少,如亚马逊、阿里云、腾讯等等,各大厂商之间的产品、服务各不相同,但请尽可能选择靠谱的产品,在这里我选择的是阿里云,由于阿里云的服务真的很及时,并且文档也写的很详细,有时候作活动,产品的价格仍是不错的。
- 遇到不懂的问题但是先查看阿里云上的帮助文档
- 在询问了一些前辈以后,购买阿里云上的Linux系统会相对window server安全系数高一些,只是我的是使用window系统,须要去了解一下linux经常使用的命令语句
2、建立链接(实现本机和阿里服务器链接)
- 将本机与服务器链接的方法有不少,具体请参考链接实例
- windows环境的是没法直接链接linux系统的,须要在电脑上下载软件才能够,通常使用PuTTY与xshell(这个软件是收费的),阿里云上有PuTTY的使用方法,但我我的是使用xShell方法,感受更加方便与快捷
- 主机: root
- 密码:就是在阿里云上设置的密码
3、格式化数据磁盘
- 官网上对于非I/O优化实例须要格式化磁盘,我的的配置是I/O优化的,因此不须要配置这部分

4、配置秘钥
- 配置秘钥是为了实现实例链接,更方便的操做服务器,经过分配不一样权限来使不一样的管理者来操做服务器上相应的功能
- ssh的配置与github的配置类似。首先须要在服务器上生成".ssh"文件,而后一路回车,通常ssh会建立在/root的目录下
ssh-keygen -t rsa -b 4096 -C "xxx@xxx.com"
- 而后设置ssh代理:其代理 Agent pid 为 12607
eval "$(ssh-agent -s)"
- 建立受权文件: 这份文件只对当前的计算机起做用,编辑.ssh文件中的“authorized_keys”文件,保存后提示不可以读写该文件,就是权限不够,先按回车,进入到编辑页面,再“esc”,再同时按下“shift 加 :”,而后输入“q”退出,再进入就好了,(注:在要操做的当前目录下能够不用sudo与该目录路径)。打印本机的公钥“id_rsa.pub"
- 受权文件并重启实例
chmod 600 authorized_keys
sudo service ssh restart
5、搭建node环境
sudo apt-get update
- 安装相关的模块与包文件:如git、wget等,能够根据项目需求进行安装
sudo apt-get install git vim open ssl build-essential libssl-dev wget curl
- node在服务器上安装能够借助nvm,这个插件依赖于wget模块,执行下列命令。安装完成以后会提示须要再开一个shell窗口,才能够看到nvm版本信息
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
- 使用nvm安装node版本:版本号能够本身选择,建议安装稳定版本会比较方便维护
nvm install v8.9.0
- 全局安装淘宝镜像,可以使npm的下载速度更快,安装完淘宝以后还得告诉系统咱们增长这个文件
# 淘宝镜像
npm --registry=http://registry.npm.taobao.org install -g npm
# 安装文件
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
# 安装cnpm
npm --registry=http://registry.npm.taobao.org install -g cnpm
- 搭建好了nodejs环境以后,能够先尝试本身搭建服务器,检查一下服务器时候能够运行,在搭建服务器的过程当中,我我的遇到了防火墙与安全组问题:ubuntu默认了安装的时候是没有配置防火墙的,须要本身配置防火墙。还有须要配置安全组,在阿里云控制台中进行配置,添加ip和端口,才可以访问到线上服务器。
- 可使用pm2对阿里上的服务器进行监管,每次上传文件以后,记得重启
6、设置反向代理ngnix
sudo apt-get install nginx
- 安装完后,其目录在/ect/nginx,及其目录文件

- 编写nginx的配置文件,当有多个项目对应到多个服务的时候,须要使用nginx使服务实现负载均衡,写的这个.conf配置文件都会被加载到“/nginx.conf”这个文件夹下,在配置server_name的时候直接写ip地址就行。也能够参考这篇文章nginx配置文件详解
upstream shop {
# Nodejs app upstream
server 127.0.0.1:9527;
}
# Server on port 80
server {
listen 80;
server_name 47.52.43.40; //我的IP地址或者域名
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_responses 0;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size 0;
proxy_pass http://47.52.43.40:9527; #设置反向代理较为重要的一个参数,将本地端口9527转向server通用入口80端口
proxy_redirect off;
proxy_read_timeout 240s;
}
}
- 测试配置文件: 当出现ok与success时说明配置的文件配置成功
sudo nginx -t

nginx reload
7、安装mongodb
- mongodb官网上有ubuntu环境下配置mongodb环境的详细步骤
# 导入共有钥匙为包管理系统使用
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
# 为mongodb建立一个列表文件(根据ubuntu版本不一样,配置也不同,在此演示的是Ubuntu14.04版本)
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
#更新数据库
sudo apt-get update
#安装mongdb(这是安装最新版本的)
sudo apt-get install -y mongodb-org
# 启动mongod数据库
sudo service mongod start
- 当链接数据库出现问题时,能够查看在mongdb.log日志
- mongodb的默认端口是27017,若是想要更改mongodb的端口能够在mongod.conf文件中进行更改端口,并且须要修改防火墙iptable中的规则,启动mongodb的时候须要加端口号
mongo --port 端口号
8、上传文件
- 对于服务器的基本环境已经配置完成,即可以上传文件了,在这里推荐一个上传文件的工具filezilla,主机是ip地址,用户名为root,端口号为22,而后找到本机的文件与在服务器上的文件目录,即可直接上传。
