在搭建web全栈的过程中,最令我头疼的就是项目的部署与上线,这个过程虽然简单,但是对于全栈菜鸟的我来说真的是个大坑,但是我还是去尝试,终于通过各种文档、请教与实践中完成了线上部署,在此做一下记录与总结
一、购买服务器
- 服务器选择:服务器的品牌有很多,如亚马逊、阿里云、腾讯等等,各大厂商之间的产品、服务各不相同,但请尽量选择靠谱的产品,在这里我选择的是阿里云,因为阿里云的服务真的很及时,而且文档也写的很详细,有时候做活动,产品的价格还是不错的。
- 遇到不懂的问题可是先查看阿里云上的帮助文档
- 在询问了一些前辈之后,购买阿里云上的Linux系统会相对window server安全系数高一些,只是个人是使用window系统,需要去了解一下linux常用的命令语句
二、创建连接(实现本机和阿里服务器连接)
- 将本机与服务器连接的方法有很多,具体请参考连接实例
- windows环境的是无法直接连接linux系统的,需要在电脑上下载软件才可以,一般使用PuTTY与xshell(这个软件是收费的),阿里云上有PuTTY的使用方法,但我个人是使用xShell方法,感觉更加方便与快捷
- 主机: root
- 密码:就是在阿里云上设置的密码
三、格式化数据磁盘
- 官网上对于非I/O优化实例需要格式化磁盘,个人的配置是I/O优化的,所以不需要配置这部分
四、配置秘钥
- 配置秘钥是为了实现实例连接,更方便的操作服务器,通过分配不同权限来使不同的管理者来操作服务器上相应的功能
- 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
五、搭建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对阿里上的服务器进行监管,每次上传文件之后,记得重启
六、设置反向代理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
七、安装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 端口号
八、上传文件
- 对于服务器的基本环境已经配置完成,便可以上传文件了,在这里推荐一个上传文件的工具filezilla,主机是ip地址,用户名为root,端口号为22,然后找到本机的文件与在服务器上的文件目录,便可直接上传。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。