node服务器部署系列———基础
本人使用的是阿里云的云服务器,Ubuntu 14.04 64位 专用vps网络,关于域名和服务器的购买、备案等,不做讲述
云主机开箱
- 登录
使用第三方ssh工具登录(阿里提供的远程登陆界面也行),使用主机公网IP、root名、密码(购买时设的)配置好连接 - 硬盘查看
查看硬盘个数fdisk -l
查看使用情况df -h
基础安全增强
- 创建新管理员
- 输入命令
adduser [new user name]
填写新用户密码及信息 - 输入命令
gpasswd -a [new user name] sudo
将新用户添加到sudo组(管理员组)中 - 输入命令
sudo visudo
打开用户权限配置,找到#User privilege specification
在它的root
那项下面新加一行,写入[new user name] ALL=(ALL:ALL) ALL
意思就是赋予新用户和上面root一样的权限,最后^x
退出,按Y
保存,按回车。
- 修改默认登录端口(以后都使用新管理员登录)
服务器的默认登录端口是22,一般很容易被扫描器扫描到,所以我们自己设个新的端口
- 输入命令
sudo vi /etc/ssh/sshd_config
打开ssh配置文件(提示密码自己盲敲密码) - 在配置文件里找到Port 22这个位置,将数值22改成其他端口(例如:21352,39579),记住新的端口
- 使用
专用网络
的时候需要在阿里云安全组设置
(服务器端口防火墙),要将新的端口添加到设置中,否则在下一次ssh登录服务器时,端口就会被防火墙拦截,就登不上了
- 禁用root
root是每个云服务器的超管,大家都知道,禁用后能一定程度提高服务器的安全
- 输入命令
sudo vi /etc/ssh/sshd_config
打开ssh配置文件 - 在配置文件末尾中找到
PermitRootLogin yes
位置,将yes
改成no
,关闭root的ssh登录
服务器环境
-
node
建议使用node版本管理工具,本人使用的nvm
,下载前更新一下系统包sudo apt-get update
,可以先安装一些工具包,例如git
之类的,nvm
的安装和使用在GitHub
上可以找到,自行查找(wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
) -
增加系统文件监控数目
输入命令echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
-
使用淘宝镜像
- 临时使用
npm --registry https://registry.npm.taobao.org install express
- 设置下载源
npm config set registry https://registry.npm.taobao.org
- 查看源
get registry
mpm i -g
安装通用工具,例如:pm2
,webpack
,gulp
,grunt-cli
到此我们创建一个http服务就可以在服务器上用node跑起来了,就像在本地一样,我们可以在浏览器上使用公用IP+端口号
访问我们的服务(如果配置了域名就可以使用域名)
但是当我们关闭ssh的会话窗口的时候,服务就会断掉,所以要使用node服务常驻工具
- 使用pm2常驻node服务
启动常驻项目 “ pm2 start [app.js]
”
查看常驻项目列表 “ pm2 list
”
查看某项目信息 “ pm2 show [app name]
”
常驻服务后网站服务就可以随意访问,但是我们注意到我们必须加上端口号才能正确访问,这是因为我们的用户服务没有权限监听80端口,要实现这一功能,我们还是要借助nginx
才行
- 使用nginx来反向代理和负载均衡
- 安装nginx, 输入命令
sudo apt-get install nginx
安装nginx
- 使用 cd 在路径 "
/etc/nginx/conf.d
"目录里新建站点的配置文件 (文件名例如:dharman-cn-8081.conf)
编写配置文件
- 在路径 "
/etc/nginx
" 下打开主配置文件nginx.conf
将#server_tokens off
这条注释取消#
,这样浏览器将会隐藏nginx
的信息,提高安全系数
这样我们就基本部署好了一个服务器环境