Skip to content

Latest commit

 

History

History
381 lines (259 loc) · 9.65 KB

云服务部署.md

File metadata and controls

381 lines (259 loc) · 9.65 KB

阿里云服务部署

  • 连接远程服务 ssh root@公网IP
  • 查看数据盘信息 fdisk -l
  • 查看硬盘信息df -h

添加用户

adduser xuthus gpasswd -a xuthus sudo sudo组 sudo visudo然后进入nano编辑器,添加xuthus ALL=(ALL:ALL) ALL 保存后依次执行:ctrl+x, shift+y,enter

配置ssh

先生成ssh,公钥,私钥,和git生成一致ssh-keygen -t rsa -b 4096 -C "[email protected]"

然后进入.ssh目录, 执行eval "$(ssh-agent -s)"代理, 再添加ssh-add ~/.ssh/id_rsa

云服务器也按同样的方法生成,执行。

云服务在.ssh目录下还要生成authorized_keys文件,vi authorized_keys,进入,然后esc,在执行shift加:,输入wq!,回车

在本地,cat id_rsa.pub,复制里面内容

然后在云服务vi authorized_keys,将刚才复制私钥添加进去,先按i,然后粘贴,然后esc,在执行shift加:,输入wq!,回车

授权chmod 600 authorized_keyssudo service ssh restart,就可以通过ssh登入了,不用使用密码

修改默认端口,服务区默认端口为22

sudo vi /etc/ssh/sshd_config,修改port: 39999, 在到最后一行添加AllowUsers 用户名

重启sshsudo service ssh restart

安装nodejs环境

sudo apt-get install vim openssl build-essential libssl-dev wget curl git

nvm

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash

安装后执行source ~/.bashrc

nvm install v版本号 nvm use v版本号 nvm alias default v版本号 // 指定默认

npm install -g npm

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

npm i pm2 webpack gulp grunt-cli -g

通过nodejs搭建服务器,监听的端口号需要注意,不是所有端口都可以,可以查看阿里云网站控制台—>云服务ECS -> 安全组规则,查看放行的端口,也可以自己修改http://106.14.173.2:3389/

安装nginx

sudo apt-get install nginx

cd /etc/nginx/conf.d

新建配置文件sudo vi xxxuthus-cn-3389.conf,文件名自定义

upstream xxxuthus {
  server 127.0.0.1:3389;
}

server {
  listen 80;
  server_name 106.14.173.2;

  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-Proxt true;

    proxy_pass http://xxxuthus;
    proxy_redirect off;
  }
}

测试配置文件sudo nginx -t

重启sudo nginx -s reload

端口占用后,可以使用pkill node

如果访问不到,可以查看阿里云网站控制台—>云服务ECS -> 安全组规则,看是否放行80端口,不放行的话,自己添加

使用DNSPOD解析域名(https://www.dnspod.cn/)

进阿里云控制台(点击域名->管理)将域名的dns地址,改为DNSPOD的 DNS(万网是阿里旗下的)

然后进入DNSPOD控制台->域名解析->添加域名

添加后,点击域名进入,添加记录,输入www,选择A类,输入云服务器ip

使用七牛

登录七牛->对象存储->新建存储空间->绑定域名(融合CDN加速域名),输入要加速的域名(必须是已经备案的),其余默认,然后等待生效

进入DNSPOD的域名解析,点击添加记录,主机名比如main,记录类型CNAME,记录值填写:从刚才在七牛那配置的CDN加速域名那复制,当配置生效后,七牛那会显示CNAME,复制即可

随后就可以使用七牛的图床,内容管理->上传图片->可以访问图片外链地址,如http://ou1r84eii.bkt.clouddn.com/jerry.jpeg,改为自己的域名http://main.xxxuthus.cn/jerry.jpeg,仍可以正常使用,表示配置成功

服务器配置mongodb

安装依次执行12345命令

启动mongodb数据库服务sudo service mongod start 然后mongo

停止sudo service mongod stop 重启sudo setvice mongod restart

修改mongodb端口, sudo vi /etc/mongod.conf 重启 mongo --port 29999

备份一个完整数据库

将本地数据库部署到服务器

-d 数据库名字
-o 导出到的位置
mongodump -h 127.0.0.1:27017 -d vnpastime -o /home/xuthus/project-data/vnpastime-backup

打包

tar zcvf vnpastime.tar.gz vnpastime-backup

发送到服务器

-P 服务器端口
最后是主机+路径
scp -P 22 ./vnpastime.tar.gz [email protected]:/home/xuthus_y/dbbackup

登录云服务器

解压 tar xvf vnpastime.tar.gz

恢复到云主机数据库

--host 数据库服务
最后面是备份文件的路径
mongorestore --host 127.0.0.1:19999 -d vnpastime ./dbbackup/vnpastime-backup/vnpastime/

备份单表

本地

mongoexport -d 数据库名称 -c 表名 [-q '{"name": {$ne: null}}'] -o ./名称.json

scp -P 22 ./名称.json [email protected]:/home/xuthus_y/dbbackup

服务器

mongoimport --host 127.0.0.1:19999 -d 数据库名称 -c 表名 ./名称.json

删除数据库

mongo --host 127.0.0.1:19999 数据库名 --eval "db.dropDatabase()"

用户

use admin 创建管理员用户 db.createUser({user: '用户名', pwd: '密码', roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]}) 授权 db.auth('vn_owner', '密码')

创建数据库读写用户 use vpastime db.createUser({user: '用户名',pwd: '密码', roles: [{role: 'readWrite', db: 'vnpastime'}]})

创建只读用户,用于备份 db.createUser({user: '用户名',pwd: '密码', roles: [{role: 'read', db: 'vnpastime'}]})

再进行另外一个数据库用户创建的时候,需要重新授权

use admin db.auth('vn_owner', '密码') 然后在切换到需要创建用户的数据库 use 数据库名称

想要生效等修改配置文件 sudo vi /etc/mongod.conf

    security:
    authorization: 'enabled'

然后: sudo service mongod restart

进入mongo命令模式 mongo --port 19999

想要操作的话,需要授权

use admin db.auth('vn_owner', '密码')

以特定用户操作特定数据库

登录

mongo 127.0.0.1:19999/vnpastime -u vn_runner -p Xu510*

导出

设置了用户之后,导入导出操作都得加上用户和密码

mongodump -h 127.0.0.1:19999 -d vnpatime -u vn_backup -p 密码 -o vn_old

数据库定时备份

在根目录新建一个文件夹

    mkdir tasks
    cd tasks
    sudo vi vn.backup.sh

输入

    #!/bin/ssh

    backUpFolder=/home/xuthus_y/backup/vnpastime
    date_now=`date +%Y_%m_%d_%H%M`
    backFileName=vnpastime_$date_now

    cd $backUpFolder
    mkdir -p $backFileName

    mongodump -h 127.0.0.1:19999 -d vnpastime -u vn_backup -p Xu510* -o $backFileName

    tar zcvf $backFileName.tar.gz $backFileName

    rm -rf $backFileName

然后新建

makdir backup
cd backup
mkdir vnpastime

回到根目录执行,就可以在backup/vnpastime下面看大了

sudo sh ./tasks/vn.backup.sh

定时备份

crontab -e

输入,设置在每天0点备份 00 00 * * * sh /home/xuthus_y/tasks/vn.backup.sh

将包上传到七牛

通过git进行版本控制

本地配置,服务端也要配置,都类似

将项目克隆到服务器git clone [email protected]:xxxgitone/vue-node-pastime.git

使用pm2管理任务进程

本地和服务器端都要安装pm2

本地项目根目录,新建文件ecosystem.json

{
  "apps": [
    {
      "name": "vnpastime",
      "script": "app.js",
      "env": {
        "COMMON_VARIABLE": "true"
      },
      "env_production" : {
        "NODE_ENV": "production"
      }
    }
  ],
  "deploy": {
    "production": {
      "user": "xuthus_y",
      "host": ["106.14.173.2"],
      "port": "22",
      "ref": "origin/master",
      "repo": "[email protected]:xxxgitone/vue-node-pastime.git",
      "path": "/www/vnpastime/production",
      "ssh_options": "StrictHostKeyChecking=no",
      "post-deploy" : "npm install && npm run build && pm2 startOrRestart ecosystem.json --env production",
      "env"  : {
        "NODE_ENV": "production"
      }
    }
  }
}

提交到github仓库中

切换至服务器,创建上面配置文件中的path

mkdir /www
cd /www
mkdir vnpastime
cd vnpastime
mkdir production

接着继续本地

# 启动
pm2 deploy ecosystem.json production setup
# 直接部署可能会出现错误:不能创建/www目录
# 进入服务器,/www目录下,设置权限
sudo chmod 777 vnpastime

# 还会出现npm pm2不能找到的错误
# 进入服务器根目录
vi .bashrc
# 将下面这几行注释掉

# If not running interactively, don't do anything
# case $- in
#    *i*) ;;
#     *) return;;
# esac

source .bashrc

# 重新进入本地,重新执行这两个pm2部署命令

pm2 deploy ecosystem.json production

# 发布成功可以在服务器查看
pm2 list
pm2 logs

服务器

进入nginx配置文件,修改配置

cd /etc/nginx/conf.d

vi xxxuthus-cn-4000.conf

配置文件如下

    upstream xxxuthus {
        server 127.0.0.1:4000;
    }

    server {
        listen 80;
        server_name www.xxxuthus.cn;

        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-Proxt true;

            proxy_pass http://xxxuthus;
            proxy_redirect off;
        }
        
        # 静态文件加载
        location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|pdf|txt) {
            root /www/vnpastime/production/current/dist
        }
    }

sudo nginx -s reload