部署流程

  1. 服务器基本配置
    1. 登录
    2. 新建用户
    3. 简化登录
    4. 无密码登录
    5. 安全措施
    6. nginx配置端口代理
  • 项目配置
    1. 安装docker
    2. 从仓库拉取代码
    3. 生成镜像
    4. 新建容器并启动
    5. 启动应用
  • 项目写好了。有一台服务器。

    服务器基本配置

    登录

    1
    ssh username@ip

    这是是root用户,权限太大不安全。

    新建用户

    1
    2
    3
    4
    5
    6
    新建用户
    adduser name
    给sudo权限
    vim /etc/sudoers
    在root ALL=(ALL)ALL这一行下增加
    name ALL=(ALL)ALL

    简化登录

    本机.zshrc文件给命令配置别名

    1
    alias tx="ssh name@ip"

    无密码登录

    和git仓库配置秘钥原理一样。

    1
    2
    3
    4
    5
    6
    7
    8
    1. 两边都要有生成秘钥
    ssh-keygen -t rsa -C “email”

    2. 服务器保存本地公钥
    echo pubkey >> .ssh/authorized_keys

    3. 重启服务器ssh
    service ssh restart

    安全措施

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1. 修改端口
    文件/etc/ssh/sshd_config
    port属性,换成其他端口

    2. 关闭root密码登录
    PermitRootLogin属性,换成without-password

    3. 重启ssh

    4. 还可以配置iptables

    nginx配置端口代理

    在/etc/nginx/nginx.conf中添加

    1
    2
    # 让nginx加载配置文件
    include /etc/nginx/conf.d/*.conf;

    然后在/etc/nginx/conf.d文件夹下新建配置文件name-port.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    upstream dappdemo {
    server localhost:3000;
    }
    server {

    listen 80;
    server_name 127.0.0.1;

    location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Nginx-Proxy true;
    proxy_pass http://dappdemo;
    proxy_redirect off;
    }
    }

    匹配到server_name的流量转发到proxy_pass

    项目配置

    安装docker

    1
    2
    3
    4
    5
    1. 安装docker
    wget -qO- https://get.docker.com/ | sh

    2. 检验docker是否被正确安装
    sudo docker run hello-world

    从仓库拉取代码

    1. 服务器连接仓库
      教程
    2. git clone

    生成镜像

    根据dockerfile新建一个镜像

    1
    2
    3
    docker build -t yourname/imagename:tag .

    docker build -t benny/dapp:latest .

    新建容器并启动

    用了Makefile

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    pjName := dappdemo

    docker:
    docker run \
    --name ${pjName} \
    --rm \
    -ti \
    -p 3000:3000 \
    benny/dapp:0.1 \
    /bin/bash

    1
    make docker

    启动应用

    npm run start,使用pm2管理进程

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    pm2 start pm2.json

    ===================================
    {
    "apps": [
    {
    "name": "ico-dapp",
    "script": "./server.js",
    "out_file": "./logs/out.log",
    "error_file": "./logs/error.log",
    "log_date_format": "YYYY-MM-DD HH:mm:ss",
    "instances": 0,
    "exec_mode": "cluster",
    "max_memory_restart": "500M",
    "merge_logs": true,
    "env": {
    "NODE_ENV": "production"
    }
    }
    ]
    }

    文章标题:部署流程

    本文作者:Benny

    发布时间:2020-06-08, 19:49:33

    最后更新:2019-10-09, 18:32:32

    原始链接:https://benny233.github.io/2020/06/08/部署流程/

    版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

    目录