服务器部署1

353 阅读3分钟

操作系统:阿里云 Ubantu 16.04

1、服务器

1.1 连接服务器

新创建的实例需先重置实例密码并重启实例

ssh root@39.96.114.57

1.2 创建用户并赋予权限

  • -a 添加用户到组
  • -d 从组删除用户
adduser juejin
gpasswd -a juejin sudo 

1.3 添加sudo权限

Linux用户配置sudo权限(visudo),如果你用visudo来编辑这个文件,那么它会帮你自动做很多事情,比如说语法检查,加锁防止别人同时修改这个文件等等

sudo visudo

visudo其实是打开/etc/sudoers

# User privilege specification
juejin  ALL=(ALL:ALL) ALL  #添加这一行
  • "From ALL hosts juejin" 从任何机器登录,都可以应用接下来的规则
  • "Run As ALL User",juejin可以以任何用户的身份运行一些命令
  • "Run As All Groups" juejin可以以任何用户组的身份运行一些命令
  • 前面的规定适用于任何命令

juejin这个用户可以从任何机器登录,以任何用户和用户组的身份运行任何命令。 保存并退出 Ctrl+X shift+y

1.4 SSH无密码登录

ssh 公钥认证是ssh认证的方式之一。通过公钥认证可实现ssh免密码登陆,git的ssh方式也是通过公钥进行认证的。

1.4.1 本地生成公钥和私钥

ssh-keygen
cd ~/.ssh
ssh-keygen -t rsa -b 4096
  • -t 指定加密方式
  • -b 字节数

~/.ssh/id_rsa 私钥目录
~/.ssh/id_rsa.pub 公钥目录( 可以给别人看)

1.4.2 本地开启ssh代理

解决ssh慢的问题

eval "$(ssh-agent -s)"  #开启ssh代理
ssh-add ~/.ssh/id_rsa   #把私钥添加到代理里面

1.4.3 服务器配置

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
ssh-keygen -t rsa -b 4096

1.4.4 把本地的公钥上传到服务器授权文件中

vi ~/.ssh/authorized_keys
ssh juejin@47.103.198.148   #即可快速登陆

1.5 增加安全等级

sudo vi /etc/ssh/sshd_config  #打开配置

Port 2222  #ssh服务默认会监听22端口,修改为2222。这里安全组规则也需要添加对应的2222端口
AllowUsers juejin

PermitRootLogin yes  #是否允许root不能登录
PasswordAuthentication yes  #是否允许客户端密码登录,修改为no,只能通过公钥私钥方式登录
sudo service ssh restart  #重启ssh服务
ssh -p 2222 juejin@39.96.114.57  #连接

1.6 安装软件

sudo apt-get update  #更新软件列表
sudo apt-get install wget curl git  #wget curl git用来下载网络资源

1.7 安装node

git地址下载最新版本

#wegt或curl方式下载nvm(nvm是node工具,可以管理node版本)
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
或
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
#下载、编译和安装最新的node版本

安装好nvm如遇无法执行Command 'nvm' not found, did you mean:...,可通过source /root/.bashrc使nvm生效

1.8 编写并启动node程序

在home/juejin目录下,

mkdir web
vi server.js

#编写如下代码
const http = require('http')
const server = http.createServer(function(req,res){
    res.end('hello')
})
server.listen(8888)

外网可通过阿里云公网ip访问 47.103.198.148。
缺点:关闭终端窗口,服务器就宕了。

如果listen的时候绑定了ip,如:server.listen(8888, 47.103.198.148),外网无法访问

1.9 pm2启动程序

强大的进程管理器,进程异常退出时pm2会尝试重启

npm install pm2 -g  #安装pm2
pm2 start server.js --name 'juejin'  #修改名称为juejin (需进入目录:/home/juejin/web)

常见pm2方法:

  • pm2 start app.js --name 'crawl' #修改名称为crawl
  • pm2 list #查看所有应用
  • pm2 restart craw #重启应用craw
  • pm2 stop craw #停止应用craw
  • pm2 delete craw #删除应用craw