详解从买域名到使用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 相关文章推荐
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
Aug 13 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
Feb 22 Javascript
浅谈jQuery中的事件
Mar 23 Javascript
javascript检查某个元素在数组中的索引值
Mar 30 Javascript
探寻JavaScript中this指针指向
Apr 23 Javascript
任意Json转成无序列表的方法示例
Dec 09 Javascript
js实现PC端根据IP定位当前城市地理位置
Feb 22 Javascript
javascript 初学教程及五子棋小程序的简单实现
Jul 04 Javascript
vue.js 获取select中的value实例
Mar 01 Javascript
vue-autoui自匹配webapi的UI控件的实现
Mar 20 Javascript
关于JavaScript数组去重的一些理解汇总
Sep 10 Javascript
vue3.0实现点击切换验证码(组件)及校验
Nov 18 Vue.js
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
PHPlet在Windows下的安装
2006/10/09 PHP
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
python访问纯真IP数据库的代码
2011/05/19 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
Python语言描述随机梯度下降法
2018/01/04 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
Python实现通讯录功能
2018/02/22 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
挪威手表购物网站:Klokker
2016/09/19 全球购物
迪拜航空官方网站:flydubai
2017/04/20 全球购物
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
库房保管员岗位职责
2014/04/07 职场文书
篮球社团活动总结
2014/06/27 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
给领导敬酒词
2015/08/12 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
Linux安装apache服务器的配置过程
2021/11/27 Servers
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers