汪微的博客
zane,做一个有思维的开发者

汪微的博客

个人博客node.js,mysql 项目阿里云ECS部署完整流程介绍

2017年09月14日341 browse

声明:只做简单的部署过程,在这里不做深入原理性的讨论。文中内容仅限于博主自己的实践过程,希望对未知的同学起引导的作用。

准备工作

在部署之前我们需要具备如下条件:

  1. 阿里云ECS服务器一台
  2. node.js项目源码一份
  3. mysql数据库文件一份
  4. 通过备案的域名一个

开始部署

我们先来看看下面的两项:

PM2:pm2 是一个带有负载均衡功能的Node应用的进程管理器,内建负载均衡(使用Node cluster 集群模块),后台运行,0秒停机重载,具有Ubuntu和CentOS 的启动脚本,停止不稳定的进程(避免无限循环)... ,因此我们需要pm2来为我们守护进程。

ngin​​x: Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,其特点是占有内存少,并发能力强。

因此选择PM2做node.js应用的进程管理器,nginx做为HTTP和反向代理服务器。


一:ssh协议登录阿里云服务器

$  ssh -p22 root@你的服务器密码
enter键之后输入服务器密码 -> 登录成功


登录成功后界面:


登录成功之后我们需要安装如下几个工具 | 服务 

请按照上面的链接相应的安装完成。

自此我们安装完成: nginx , node.js , cnpm , git 

安装pm2

$ cnpm install pm2 -g


二:Linux系统安装mysql , 并使用阿里云的数据库管理工具管理mysql

请按照上面的链接安装mysql服务。

在配置我们的mysql之前我们需要配置一下服务器的安全组规则,我们需要开发3306 和 80端口



进入添加规则页面


添加80 和 3306 规则




接下来我们需要用阿里云的数据库管理工具来管理我们ESC服务器建立的mysql服务:



打开上面的链接进入数据库管理界面


自此安装mysql成功,并使用了阿里云的数据库管理工具管理mysql,登录数据库界面开始导入我们的数据库把。



阿里云数据库管理界面


对上面的内容进行总结,自此我们完成了如下操作:

  1. 安装完成nginx并启动成功
  2. 安装完成node.js 和 pm2 
  3. 安装完成git
  4. 安装完成mysql , 并使用了阿里云的数据库管理工具

接下来我们要做的就是部署node.js 代码,配置nginx , 并做好域名解析


三:启动PM2服务,配置nginx ,  解析域名

启动node.js 服务

回到ssh登录后的进程窗口,进入nginx目录

$ cd /usr/local/nginx
//创建放置代码的目录
$ mkdir web_blog

经过以上步骤我们创建了一个 web_blog 的目录 , 把node.js 源代码传入此目录 ,并执行安装依赖

$ cd web_blog
$ cnpm install

安装好依赖之后通过pm2 启动服务

//pm2 的命令请去网上查看 ,此命令的意思是创建了2个名为 myfirstblog 的node.js进程
pm2  start app.js -i 2 --name myfirstblog


配置nginx

nginx的配置有很多,在这里就不一一的阐述它的意思,需要了解的请百度搜索,这里贴出 nginx.config 我们需要增加的配置:

$ vim conf/nginx.conf

//新增如下server,请根据自己的实际情况来配置

server {
        default_type 'text/html';
        charset utf-8;
        listen       80;
        server_name  www.xxx.com;    //此处填写你的域名  可以多个用空格隔开即可 

        location / {
            add_header X-Cache $upstream_cache_status;   //可删除
            proxy_pass    http://127.0.0.1:18090/;       //此处填写你的阿里云PM2启动的node.js服务   (必须配置)
            proxy_redirect  off;                      //(需要配置)
            proxy_cache_key    $uri$is_args$args;  //可删除
        }
    }


自此nginx配置完毕,检查一下配置是否正确,并重启

$ sbin/nginx -t                   //  /usr/local/nginx/sbin/nginx -t
$ sbin/nginx -s reload     //  /usr/local/nginx/sbin/nginx -s reload


最后一步:域名解析

域名解析就很简单了,直接贴一张图如下:


提醒:所有国内的主机都需要域名备案,如果你的域名没有备案,请选择香港、台湾、韩国、美国等非大陆的服务器即可


OK,整个部署流程完毕

在这里介绍了整个阿里云linux部署的过程,都比较简单,大家只需按照步骤走就定可以部署成功额!


提醒:你可能会看到git安装了之后没有用武之地,Don't worry ,后期可以使用git进行自动化部署,有三个方案介绍如下:

  1. git合并master分支代码触发部署:我们的代码使用git仓库管理,每次 提交|合并 master分支时,触发服务器自动拉取代码,安装更新,重启PM2服务,重启nginx服务。 
  2. 本地脚本命令:本地电脑运行脚本命令 例如:npm run online-build , 此时触发自动node.js服务自动拉取git分支master分支代码,安装更新,重启PM2服务,重启nginx服务。
  3. 本地脚本命令:本地电脑运行脚本命令 例如:npm run online-build , 此时自动打包本地代码,并push到服务端,解压,安装更新,重启PM2服务,重启nginx服务。

以上三中自动部署方案我会再后面一一写文章阐述说明。


如果你有什么疑问就请给我留言吧,欢迎交流。


博主 zane 发表于 2017-09-14 15:30:53,添加在了 linux 标签下

打赏

您的支持将鼓励我继续努力与分享。

扫码打赏,建议金额1-10元

提醒:打赏金额将直接进此方账号,无法退款,请您谨慎操作。

评论

正在加载验证码......

提交

ok

2019-06-20 08:56:22

写不错,谢谢

2018-05-24 18:18:16

博主做博客有什么推荐的工具或者模板么 谢谢推荐

2018-05-17 11:00:43

赞一个先。请问,1.博主的博客项目是完全自己写的项目吗?(方便介绍下用的什么技术栈么);2.评论,打赏功能也都是自己实现的?还是使用了第三方插件?谢谢。

2018-05-17 10:59:53

很有帮助,谢谢博主

2017-12-28 17:22:31

qian'pai

2017-09-14 17:55:00