2018-09-29

服务器部署步骤

  1. 购买自己的域名
  2. 域名备案
  3. 购买服务器
  4. 配置服务器应用环境
  5. 安装配置服务器
  6. 项目远程部署和发布与更新

1.2 购买域名 [#](#t01.2 购买域名)

1.3 云主机 [#](#t11.3 云主机)

1.4 购买阿里云 [#](#t21.4 购买阿里云)

1.5 备案 [#](#t31.5 备案)

2 服务器 [#](#t42 服务器)

2.1 连接服务器 [#](#t52.1 连接服务器)

ssh root@39.96.114.57

2.2 创建用户 [#](#t62.2 创建用户)

adduser juejin

2.3 赋予权限 [#](#t72.3 赋予权限)

gpasswd命令是Linux下工作组文件/etc/group和/etc/gshadow管理工具。

  • -a:添加用户到组

  • -d:从组删除用户

    gpasswd -a juejin sudo
    

2.4 添加sudo权限 [#](#t82.4 添加sudo权限)

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

sudo visudo

visudo其实是打开/etc/sudoers

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

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

Ctrl+X
shift + y

2.5 SSH无密码登录 [#](#t92.5 SSH无密码登录)

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

2.5.1 本地生成公钥和私钥 [#](#t102.5.1 本地生成公钥和私钥)

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

2.5.2 开启ssh代理 [#](#t112.5.2 开启ssh代理)

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

2.5.3 服务器配置 [#](#t122.5.3 服务器配置)

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

2.5.4 把本地的公钥上传到服务器授权文件中 [#](#t132.5.4 把本地的公钥上传到服务器授权文件中)

vi ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
sudo service ssh restart

2.6 增加安全等级 [#](#t142.6 增加安全等级)

sudo vi /etc/ssh/sshd_config
     vi /etc/ssh/sshd_config


Port 2222
AllowUsers juejin

PermitRootLogin yes
PasswordAuthentication yes


sudo service ssh restart
/etc/init.d/ssh restart
lsof -i:2222


ssh -p 2222 juejin@39.96.114.57

2.7 配置防火墙 [#](#t152.7 配置防火墙)

2.8 安装软件 [#](#t162.8 安装软件)

sudo apt-get update
sudo apt-get install wget curl git

2.9 安装node [#](#t172.9 安装node)

  • nvm

    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
    nvm install stable
    node -v
    npm i cnpm -g
    npm i nrm -g
    

2.10 编写node程序 [#](#t182.10 编写node程序)

var http = require('http');

const hostname = '39.96.114.57';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

2.11 启动程序 [#](#t192.11 启动程序)

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

npm install pm2 -g

用pm2启动node |命令|用途| |:----|:----| |pm2 start app.js --name "crawl"|启动应用| |pm2 list|查看所有应用| |pm2 restart crawl|重启应用| |pm2 stop crawl|停止应用| |pm2 delete crawl|删除应用|

node app.js
pm2 start app.js --name 'juejin'

2.12 nginx [#](#t202.12 nginx)

Nginx是一个高性能的HTTP和反向代理服务器

2.12.1 安装 [#](#t212.12.1 安装)

apt-get install nginx

2.12.2 nginx命令 [#](#t222.12.2 nginx命令)

名称 命令
启动nginx nginx -c /etc/nginx/nginx.conf
关闭 nginx nginx -s stop
重读配置文件 nginx -s reload kill -HUP nginx
常用命令 service nginx {start stop status restart reload configtest}

2.12.3 nginx配置 [#](#t232.12.3 nginx配置)

cd /etc/nginx/sites-enabled
sudo vi juejin.conf
upstream juejin{
    server 39.96.114.57:3000;
}
server {
    listen 80;
    server_name 39.96.114.57;
    location / {
        proxy_pass http://juejin;
    }
}

2.12.4 重启nginx [#](#t242.12.4 重启nginx)

 sudo nginx -s reload

2.13 mysql [#](#t252.13 mysql)

安装mysql

sudo apt-get install mysql-server
apt install mysql-client
apt install libmysqlclient-dev

Gitalking ...

Markdown is supported

Be the first guy leaving a comment!