您的位置:首页 > 运维架构 > Linux

Linux部署Node服务-2-部署过程

2018-01-31 15:35 423 查看

一、node项目部署过程总结

在已经有前端项目的前提下,走部署这一步(即:最后上线)

1.1 域名

购买一个域名(个人练习的话,其实也可以不买,但针对微信公众号,微信小程序的项目必须有域名备案)

将域名分为多个二级域名

域名备案 (国内域名都需要备案使用,虽然国外域名不用备案,但功能受限或不能上线,所以建议使用国内域名并备案)

1.2 服务器

可以直接使用阿里云,腾讯云等服务器

在自己的电脑(开发主机)上通过ssh来连接上服务器

通过远程命令来控制远程服务器,配置node等相关服务

SSH和SSH客户端

SSH是Secure Shell缩写,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。

SSH客户端: “SSH Secure Shell”、“PuTTY”、“securecrt”都是SSH客户端,使用它们就可以在window下去连接并操作linux服务器。

关于SSH的介绍教程:http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

1.3 服务器环境

node服务

mongodb数据库

nginx前置服务

1.4 服务器安全防护

服务器的安全防护措施:IPtables,Fail2Ban

1.5 访问安全

对用户的访问配置SSL证书,用于保护服务器不被外部随意篡改

对本地开发主机要上传数据时,需要额外配置SSL加固证书

1.6 远端git存储

为了安全起见,不在本地主机和远程服务器上互传数据,而是通过git作为媒介,本地开发完后提交代码到git仓库,本地通知服务器上获取git新数据

为了实现上面的需求,可以在本地主机,远程服务器上都安装PM2

1.7 端口配置

使用Nginx占用80网络端口

对于不同的访问,使用nginx转发对应请求到对应端口

1.8 域名解析

将主域名解析为多个二级域名,主机下的不同域名分配不同的二级域名

二、购买域名和服务器及备案

2.1 域名

买域名的大站:阿里云(中国万国)、爱名网、GoDaddy(国外)

1、域名

尽量不要选择混合域名

要么纯英文,纯数字,纯拼音

2、后缀

尽量使用.com,.cn域名

2.2 域名解析

DNSPod是一个免费的域名解析网站,可用来解析域名

2.3 服务器选择

1、主机

- 国外:亚马逊 AWS、Linode、DigiOcean、Heroku(可直接部署node)

- 国内:阿里云ECS(推荐)、青云、UCloud、百度云

2、服务器系统

- 以Ubutu 14.04为例

2.4 备案

个人备案按照阿里云的提示步骤一步步进行就好了,一般一周左右就可以搞定

3、登录服务器

ssh root@123.22.235.1  (ip为阿里云主机的公网IP)
password:***   (为购买服务器时设置的root密码)


三、虚拟机的Ubuntu系统中安装Node环境

3.1 安装nvm

nvm是一个node的版本管理工具,用来安装node是很方便的(亲测:用nvm安装的node不需要去单独配置node的环境变量,这对于我这个linux小白来说简直太好了)。

# 安装nvm (根目录中)
cd /
sudo wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

# 重启cmd来检查是否安装成功(当输入以下命令后显示出nvm表示安装成功)
command -v nvm

# 安装node (nvm install version) version为node版本号
nvm install 8.9.3

# 安装完后检查
node -v  =>8.9.3
npm -v => 5.6


3.2 ssh远程服务

每次要更新远程服务器中的数据,或者要在另一台计算机上操作服务器时,需要用到ssh远程服务。

# 服务器中安装ssh服务
sudo apt-get install openssh-server
# 查看服务是否启动
sudo ps -e|grep ssh // (如果能看到sshd,代表服务已经启动了)
//如果没有启动:sudo service ssh start (启动ssh服务)
# 修改ssh配置文件
sudo vim /etc/ssh/sshd_config    // (进入到对sshd_config的编辑模式,注:vim需要安装使用)

在PermitLogin widthout-password用#注释掉,
再添加一行:PermitRootLogin yes
输入:wq保存并退出

# 查看服务器IP
ifconfig     //在inet addr后面显示的就是服务器ip

# 使用Putty远程连接服务器
下载Putty——打开Putty.exe——在Host Name处输入 root@192.168.x.xxx  ——   点击Open连接
输入密码进入到服务器控制面版
(注:root为你装系统时设定的登录用户名)


3.3 增强服务器的安全性

对于远程服务器的安全性可以的解决方案

1. 改远程服务端口

2. 在使用了本地私钥进行无密码登录的情况下,可以禁止PermisstRootLogin

- 例:改远程服务端口

# 打开ssh的配置文件进行编辑
sudo vim /etc/ssh/sshd_config

# 系统会提示输入密码

# 在Port处修改端口号
:wq! //完成编辑并保存退出


3.4 使用sftp工具远程查看服务器文件

在配置好以上文件后,最后一步通过sftp工具实现远程访问文件夹,将本地的项目传送到远程服务器上了。

参考图形化工具:WinScp,Filezilla

# 以WinScp为例
# 1、下载安装(百度就有)
# 2、新建会话
# 3、输入服务器主机地址及端口,以及登录用户名
# 4、根据提示输入密码连接
# 5、连接成功后——左边为本机目录,右边则为服务器文件夹目录
# 6、新建一个www文件夹用于存放网站项目(以后的项目都可以放到此目录下)
sudo mkdir www
cd www
# 7、查看文件夹权限(默认只有root用户可以读写该文件夹,所以当前用户需要修改文件夹必主)
chown user www  #user为当前用户的用户名
# 8、当前用户有了www的读写权限后,使用express创建一个简单的node服务应用
express test
cd test
npm install
npm start
# 9、在浏览器中访问服务器IP:port,当能够访问时表示此应用搭建完成


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息