详解从买域名到使用pm2部署node.js项目全过程


Posted in Javascript onMarch 07, 2018

作为一个前端,对写好的项目怎么部署到服务器是一脸蒙圈的,但还是对这个很感兴趣,决定尝试一下,说干就干。

一、买域名和服务器

要部署项目肯定要买域名,这点是必不可少的,发现腾讯云上边有免费的服务器可用(只免费7天),于是就到腾讯云买了域名,又在腾讯云领了免费的服务器,当然这期间会让你实名认证。

详解从买域名到使用pm2部署node.js项目全过程

买域名

详解从买域名到使用pm2部署node.js项目全过程

领服务器

在腾讯云选择了CentOS服务器,接下来进行域名解析,然后对服务器进行设置(账号密码之类的)

详解从买域名到使用pm2部署node.js项目全过程

域名解析

二、部署Node.js环境

(一)登录服务器,先更新一下(第一次使用服务器先更新下)

yum update -y

(二)安装node 和 pm2

wget命令下载Node.js安装包。该安装包是编译好的文件,解压之后,在bin文件夹中就已存在node和npm,无需重复编译。

wget https://nodejs.org/dist/v8.9.3/node-v8.9.3-linux-x64.tar.xz

解压文件。

tar xvf node-v8.9.3-linux-x64.tar.xz

创建软链接,使node和npm命令全局有效。通过创建软链接的方法,使得在任意目录下都可以直接使用node和npm命令:

ln -s /root/node-v8.9.3-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v8.9.3-linux-x64/bin/npm /usr/local/bin/npm

查看node、npm版本。

node -v
npm -v

至此,Node.js环境已安装完毕。软件默认安装在/root/node-v8.9.3-linux-x64/目录下。如果需要将该软件安装到其他目录(如:/opt/node/)下,请进行如下操作:

mkdir -p /opt/node/
mv /root/node-v8.9.3-linux-x64/* /opt/node/
rm -f /usr/local/bin/node
rm -f /usr/local/bin/npm
ln -s /opt/node/bin/node /usr/local/bin/node
ln -s /opt/node/bin/npm /usr/local/bin/npm

安装pm2

npm install pm2@latest -g

创建软链接,使pm2命令全局有效

ln -s /root/node-v8.9.3-linux-x64/bin/pm2 /usr/local/bin/pm2

三、将项目用git部署到服务器上

首先进入到服务器根目录,显示根目录文件夹内容,然后进入var目录下边,在var目录下边新建一个www的文件夹,显示var文件夹下边内容,再进入www文件夹下边,依次命令为

cd /
ls
cd var
ls
mkdir www
cd www

上个图片

详解从买域名到使用pm2部署node.js项目全过程

然后将你的仓库里面的项目git clone 下来

首先要安装git,使用下边命令

yum install git
y

进入到你的项目中

详解从买域名到使用pm2部署node.js项目全过程

上图中可以看到有一个不是express项目的文件,它是pm2的配置文件pm2的配置方法为http://pm2.keymetrics.io/docs/usage/cluster-mode/

下边是我项目里面的配置(新手,有问题大神可以指点下)

{
 "apps": [
  {
   "name": "app1",
   "script": "bin/www",
   "log_date_format": "YYYY-MM-DD HH:mm:SS",
   "log_file": "logs/app1.log",
   "error_file": "logs/app1-err.log",
   "out_file": "logs/app1-out.log",
   "pid_file": "pids/app1.pid",
   "instances": 1,
   "min_uptime": "200s",
   "max_restarts": 10,
   "max_memory_restart": "1M",
   "cron_restart": "1 0 * * *",
   "watch": false,
   "merge_logs": true,
   "exec_interpreter": "node",
   "exec_mode": "cluster_mode",
   "autorestart": true,
   "vizion": false
  }
 ]
}

四、启动项目

pm2 start processes.json

关闭项目

先查找ID
pm2 status
然后,停止相应项目的id
pm2 stop id

再启动相应项目

先查找ID
pm2 status
然后,开启相应项目的id
pm2 start id

设置pm2开机自动启动

pm2 startup
pm2 save

之所以使用pm2启动项目,是因为这样退出服务器链接,node项目依旧可以运行。

这样项目已经部署完成,但是项目中的端口只能是80端口。后台大神告诉可以用nginx做代理服务器。并告诉了安装方法。

五、安装nginx 并配置nginx

安装nginx

yum install nginx

配置nginx

进入配置的文件夹目录,编辑nginx.conf 文件,也可以在conf.d文件夹下新建后缀名为.conf的文件

cd /
cd etc/nginx
vim nginx.conf

来张图

详解从买域名到使用pm2部署node.js项目全过程

这里用到了vim编辑器的使用方法,可在网上搜使用方法

简单提几个使用方法,直接按键盘

i  编辑
Esc 退出编辑
:q  退出vim编辑器
:wq 保存并退出vim编辑器

下边是我的nginx配置(新手,有问题大神可以指点下)

详解从买域名到使用pm2部署node.js项目全过程

启动nginx

service nginx start

这样nginx就运行了。

每次修改完nginx配置都要重启下,用下边的命令

service nginx reload

设置nginx开机自动启动

ln -s /bin/systemctl /usr/local/bin/systemcel
systemcel enable nginx

至此,node项目在服务器部署结束,直接访问网址即可。再次感谢公司php大神的指导,感谢网上大家的技术分享。也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
11款新鲜的jQuery插件[附所有demo下载]
Jan 24 Javascript
php析构函数的具体用法小结
Mar 11 Javascript
javascript中函数作为参数调用的方法
Feb 09 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
Mar 31 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 Javascript
详解JavaScript中数组的reduce方法
Dec 02 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
Oct 31 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
Jun 20 Javascript
jQuery子选择器与可见性选择器实例分析
Jun 28 jQuery
vue实现倒计时获取验证码效果
Apr 17 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 Javascript
layui select动态添加option的实例
Mar 07 #Javascript
layui表格checkbox选择全选样式及功能的实例
Mar 07 #Javascript
Bootstrap实现可折叠分组侧边导航菜单
Mar 07 #Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
Mar 07 #Javascript
vue.js 嵌套循环、if判断、动态删除的实例
Mar 07 #Javascript
vue2.0 computed 计算list循环后累加值的实例
Mar 07 #Javascript
Vue中v-for的数据分组实例
Mar 07 #Javascript
You might like
一个程序下载的管理程序(四)
2006/10/09 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
浅析php中三个等号(===)和两个等号(==)的区别
2013/08/06 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
不懂JavaScript应该怎样学
2008/04/16 Javascript
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
Python的mysql数据库的更新如何实现
2017/07/31 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
H5仿微信界面教程(一)
2017/07/05 HTML / CSS
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
爱耳日宣传活动总结
2014/07/05 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
美丽的大脚观后感
2015/06/03 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
心得体会格式及范文
2016/01/25 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书