详解从买域名到使用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 相关文章推荐
JavaScript isArray()函数判断对象类型的种种方法
Oct 11 Javascript
iframe的父子窗口之间的对象相互调用基本用法
Sep 03 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
Nov 19 Javascript
jQuery层动画定位滑动效果的方法
Apr 30 Javascript
javascript中attachEvent用法实例分析
May 14 Javascript
详解jQuery Mobile自定义标签
Jan 06 Javascript
理解javascript定时器中的setTimeout与setInterval
Feb 23 Javascript
AngularJS 的$timeout服务示例代码
Sep 21 Javascript
vue2.0 路由不显示router-view的解决方法
Mar 06 Javascript
简单了解JavaScript中常见的反模式
Jun 21 Javascript
Vue结合路由配置递归实现菜单栏功能
Jun 16 Javascript
微信小程序实现拼图小游戏
Oct 22 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
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
PHP convert_cyr_string()函数讲解
2019/02/13 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
python利用装饰器进行运算的实例分析
2015/08/04 Python
老生常谈Python基础之字符编码
2017/06/14 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
Python内置函数及功能简介汇总
2020/10/13 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
python 中yaml文件用法大全
2021/07/04 Python
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python