1
在搭建web全栈的过程中,最令我头疼的就是项目的部署与上线,这个过程虽然简单,但是对于全栈菜鸟的我来说真的是个大坑,但是我还是去尝试,终于通过各种文档、请教与实践中完成了线上部署,在此做一下记录与总结

一、购买服务器

  • 服务器选择:服务器的品牌有很多,如亚马逊、阿里云、腾讯等等,各大厂商之间的产品、服务各不相同,但请尽量选择靠谱的产品,在这里我选择的是阿里云,因为阿里云的服务真的很及时,而且文档也写的很详细,有时候做活动,产品的价格还是不错的。
  • 遇到不懂的问题可是先查看阿里云上的帮助文档
  • 在询问了一些前辈之后,购买阿里云上的Linux系统会相对window server安全系数高一些,只是个人是使用window系统,需要去了解一下linux常用的命令语句

二、创建连接(实现本机和阿里服务器连接)

  • 将本机与服务器连接的方法有很多,具体请参考连接实例
  • windows环境的是无法直接连接linux系统的,需要在电脑上下载软件才可以,一般使用PuTTYxshell(这个软件是收费的),阿里云上有PuTTY的使用方法,但我个人是使用xShell方法,感觉更加方便与快捷
  • 主机: root
  • 密码:就是在阿里云上设置的密码

三、格式化数据磁盘

  • 官网上对于非I/O优化实例需要格式化磁盘,个人的配置是I/O优化的,所以不需要配置这部分

clipboard.png

四、配置秘钥

  • 配置秘钥是为了实现实例连接,更方便的操作服务器,通过分配不同权限来使不同的管理者来操作服务器上相应的功能
  • 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

  • 安装ngnix
sudo apt-get install nginx
  • 安装完后,其目录在/ect/nginx,及其目录文件

clipboard.png

  • 编写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

clipboard.png

  • 重启nginx
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,然后找到本机的文件与在服务器上的文件目录,便可直接上传。

clipboard.png

  • 服务端上传文件后需要安装依赖,前端需要将项目打包

husky0601
71 声望2 粉丝