- 连接远程服务
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,公钥,私钥,和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_keys
,sudo service ssh restart
,就可以通过ssh登入了,不用使用密码
sudo vi /etc/ssh/sshd_config
,修改port: 39999
,
在到最后一行添加AllowUsers 用户名
重启sshsudo service ssh restart
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/
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端口,不放行的话,自己添加
进阿里云控制台(点击域名->管理)将域名的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数据库服务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 clone [email protected]:xxxgitone/vue-node-pastime.git
本地和服务器端都要安装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