CentOS 7
MacOS系统推荐使用Cyberduck(小黄鸭)
Windows系统推荐使用 FileZilla
- git: 分布式代码版本管理工具
- node: 基于 Chrome V8 引擎的 JavaScript 服务端运行环境
- npm: node 的倚赖包管理器
- pm2: node 应用进程管理器
一般在 Linux 系统中安装程序有三种方式:
- 下载源码,手动编译
- 直接下载二进制文件
- 用 yum 安装
这里推荐用第二种。
如果系统有自带的 git,可执行
yum remove -y git
删除
-
安装倚赖:
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
-
前往 github 下载安装包,拷贝至
/usr/src
(拷贝可通过可视化工具直接将相应文件拖入目标文件夹),或者直接用 wget:cd /usr/src yum install -y wget wget https://www.kernel.org/pub/software/scm/git/git-2.10.2.tar.gz tar xvzf git-2.10.2.tar.gz
-
make 安装:
make prefix=/usr/local all make prefix=/usr/local install
-
检查 git 是否安装成功:
git --version
-
前往 node official site 下载对应的编译好的 Linux 源码,或者直接用 wget 下载:
cd /usr/src wget https://nodejs.org/dist/v6.10.3/node-v6.10.3-linux-x64.tar.gz tar xvf node-v6.10.3-linux-x64.tar.gz
-
创建软链接至
/usr/local/bin
ln -s /usr/src/node-v6.10.3-linux-x64/bin/node /usr/local/bin/node ln -s /usr/src/node-v6.10.3-linux-x64/bin/npm /usr/local/bin/npm
-
检查 node 与 npm 是否生效
node -v npm -v
-
接下来要配置一下 npm,将 npm 的默认全局安装路径自定义到
/$HOME/.node
:npm config set prefix $HOME/.node
-
添加国内npm淘宝镜像:
npm config set registry https://registry.npm.taobao.org/
-
配置系统路径,使 npm 全局安装的模块命令行 bin 生效:
echo "export PATH=$PATH:$HOME/.node/bin" >> ~/.bashrc source ~/.bashrc
npm install -g pm2
布署分为不用 git 和基于 git 两种方式。前者主要是用于 git 代码网络属于内网的环境下。
不用 git 的话,下载 git 项目的 tag 包或者将项目文件直接拷贝至目标主机。
不基于 git 部署
-
安装依赖
// 安装 node 倚赖包 npm install --production
-
运行项目
// node启动,pm2启动下面有详解 node app.js
推荐使用 git
为了更好的版本管理与更轻松的解决版本倚赖,推荐使用 git。
git 的传输协议有 https 和 ssh 两种,我们采用更加安全快速的后者。服务器只需 git 的只读权限,因此不必配置 git user,只需生成 ssh key 做为项目的 deploy key(gitlab 项目右上角的菜单中选择 "Deploy Keys",在此添加服务器的公钥 "id_rsa.pub" 中的内容)。
(ps. 关于如何生成 ssh key,可参见此,这里要输入的邮箱改为服务器名即可)。
-
接下来 clone 项目代码至服务器:
git clone [email protected]:<GROUP>/<PROJECT>.git <NODE_APP_DIR>
注:尖括号内的为变量
-
检出版本
// 查看当前所有版本 git tag // 切换到指定版本,这里的 <TAG> 是演示,比如可以是 1.0.0 git checkout <TAG>
-
安装倚赖:
// 如果没用到 bower,跳过此步骤 bower install --allow-root // 安装 node 倚赖包 npm install --production
注:不采用 git 布署的话,只需执行最后一步
至此,无论是否使用 git,布署都已完成。
在项目根目录下,运行 pm2 start pm2.json
即可。
pm2.json
中的 name
字段为 App name,pm2 可以全局地操作它:pm2 stop <APP_NAME>
另外有几个比较有用的命令:
- 查看所有的 node 应用进程:
pm2 list
- 查看某个应用的具体信息:
pm2 show <APP_NAME>
- 监控 CPU / Memory:
pm2 monit
- 查看应用消息日志:
pm2 logs <APP_NAME>
- 重启应用程序:
pm2 restart <APP_NAME>
更多的命令用法请查看:https://github.com/Unitech/pm2#main-features
-
不使用 git:之前已提到过,直接在 gitlab 上下载 tag 包,解压缩覆盖至服务器
-
使用 git:先通过 git 获取更新
git fetch origin --tags
再切换:
git checkout <NEW_TAG>
回滚也非常简单:
git checkout <PREV_TAG>
Nginx 入门参考材料前端工程师学习Nginx入门篇
执行完以上步骤,假设你的项目启在localhost:3000
,想通过www.yourdomain.com来访问,需要通过如下步骤配置(以阿里云域名为例):
server {
listen 80;
server_name www.yourdomain.com;
root /var/www/;
location / {
# 反向代理我们通过proxy_pass字段来设置
# 也就是当访问www.yourdomain.com的时候经过Nginx反向代理到服务器上的http://127.0.0.1:3000
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
-
修改完上面配置信息之后,执行下面命令检查配置文件语法是否有误并且重新加载配置:
nginx -t && nginx -s reload