連線伺服器並建立新使用者
ssh root@139.199.209.96
adduser xxz // 新增xxz使用者
passwd xxz // 設定xxz密碼
groupadd wheel // 新增wheel組
usermod -aG wheel xxz // 為wheel和xxz增加root許可權
複製程式碼
本地
本地生成私鑰/公鑰
~ ssh-keygen -t rsa -b 4096 -C "759811542@qq.com"
// 3個回車
複製程式碼
開啟ssh代理
.ssh eval "$(ssh-agent -s)"
複製程式碼
加入代理中
.ssh ssh-add ~/.ssh/id_rsa
複製程式碼
伺服器
伺服器生成私鑰和公鑰
~ ssh-keygen -t rsa -b 4096 -C "759811542@qq.com"
// 3個回車
複製程式碼
開啟ssh代理
.ssh eval "$(ssh-agent -s)"
複製程式碼
加入代理中
.ssh ssh-add ~/.ssh/id_rsa
複製程式碼
生成授權檔案authorized_keys
.ssh vi authorized_keys
複製程式碼
把想要免密登入伺服器的電腦的公鑰 ip_rsa.pub
複製 authorized_keys
服務端授權 authorized_keys
.ssh chmod 600 authorized_keys
複製程式碼
重啟ssh 服務
// 烏班圖
.ssh service ssh restart
// centos
.ssh systemctl restart sshd.service
複製程式碼
安裝node
更新yum源
sudo yum update
複製程式碼
安裝一些必備軟體
sudo yum install vim openssl build-essential libssl-dev wget curl git
複製程式碼
安裝nvm
網址
https://github.com/creationix/nvm
複製程式碼
程式碼段
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
複製程式碼
使用nvm安裝node
nvm install node // 安裝最新
複製程式碼
註冊cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
複製程式碼
安裝一些包
npm i pm2 webpack vue-cli -g
複製程式碼
nginx
安裝nginx
yum install nginx
複製程式碼
新增conf檔案
// 進入nginx的conf.d目錄
cd /etc/nginx/conf.d
// 新增配置
sudo vi xgjun-cn-3000
複製程式碼
conf內容
upstream app {
server 139.199.209.96:3000
}
server {
listen 80;
server_name 139.199.209.96;
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://xgjun.cn;
proxy_redirect off;
}
}
~
複製程式碼
檢視nginx.conf
nginx sudo vi nginx.conf
// include /etc/nginx/conf.d/*.conf;
複製程式碼
檢測nginx配置檔案是否正確
nginx sudo nginx -t
複製程式碼
重啟nginx
sudo service nginx restart
// sudo systemctl start nginx
複製程式碼
node程式碼部署
將本地的id_rsa.pub複製到碼雲
cat ~/.ssh/id_rsa.pub
https://gitee.com/profile/sshkeys
複製程式碼
用ssh拉去倉庫
提示就輸入yes
git clone git@gitee.com:xuxiaozhou08/deploy.git
複製程式碼
將伺服器的id_rsa.pub複製到碼雲
cat ~/.ssh/id_rsa.pub
https://gitee.com/profile/sshkeys
複製程式碼
用ssh拉去倉庫
提示就輸入yes
git clone git@gitee.com:xuxiaozhou08/deploy.git
複製程式碼
pm2程式碼部署
本地安裝pm2
npm i pm2 -g
複製程式碼
本地專案裡面deploy新增ecosystem.json
檔案
vi ecosystem.json
複製程式碼
內容
{
"apps":[
{
"name": "deploy", // 應用名稱
"script":"app.js", // 啟動的指令碼
"env":{
"COMMON_VARIABLE":"true"
},
"env_production":{
"NODE_ENV":"production"
}
}
],
// 部署的任務
"deploy":{
"production":{
"user":"xxz", // 使用者
"host":["139.199.209.96"], // 主機
"ref":"origin/master", // 主分支
"repo":"git@gitee.com:xuxiaozhou08/deploy.git", // 倉庫地址
"path":"/www/web/production", // 部署到伺服器的哪個位置
"ssh_options":"StrictHostKeyChecking=no", // 關閉ssh校驗
"env": {
"NODE_ENV":"production"
}
}
}
}
複製程式碼
伺服器建立目錄
sudo mkdir /www/web/
sudo chmod 777 /www
複製程式碼
提交ecosystem.json程式碼
git add .
git commit -m '111'
git push origin master
複製程式碼
本地執行deploy
pm2 deploy ecosystem.json production setup
複製程式碼
伺服器會出現3個資料夾
// 路徑
/www/web/production
// current shared source
複製程式碼
修改bash
使用者根目錄
複製程式碼
修改程式碼後提交到git倉庫後執行
pm2 deploy ecosystem.json production
複製程式碼
問題是centos執行後git的head會一直停在初始化狀態
{
"apps":[
{
"name": "deploy", // 應用名稱
"script":"app.js", // 啟動的指令碼
"env":{
"COMMON_VARIABLE":"true"
},
"env_production":{
"NODE_ENV":"production"
}
}
],
// 部署的任務
"deploy":{
"production":{
"user":"xxz", // 使用者
"host":["139.199.209.96"], // 主機
"port":"22", // 埠
"ref":"origin/master", // 主分支
"repo":"git@gitee.com:xuxiaozhou08/deploy.git", // 倉庫地址
"path":"/www/web/production", // 部署到伺服器的哪個位置
"ssh_options":"StrictHostKeyChecking=no", // 關閉ssh校驗
// 加粗git pull origin master
"post-deploy" : "git pull origin master && npm install && pm2 startOrRestart ecosystem.json --env production",
// Environme
"env": {
"NODE_ENV":"production"
}
}
}
}
複製程式碼
域名解析
ip指向域名
修改/etc/nginx/conf.d中的xgjun-cn-3000.conf
upstream app {
server 139.199.209.96:3000;
}
server {
listen 80;
# server_name 139.199.209.96;
server_name www.xgjun.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-Proxy true;
proxy_pass http://app;
proxy_redirect off;
}
}
複製程式碼
重啟nginx
sudo service nginx restart
複製程式碼
https
申請證照可以通過騰訊雲
上傳證照
scp -P 22 ./2_www.xgjun.cn.key xxz@139.199.209.1:/home/xxz
scp -P 22 ./1_www.xgjun.cn_bundle.crt xxz@139.199.209.96:/home/xxz
複製程式碼
修改nginx配置
找到
cd /etc/nginx/conf.d/
複製程式碼
修改
參考https://cloud.tencent.com/document/product/400/4143
程式碼
upstream api {
server 139.199.209.96:3001;
}
server {
listen 80;
# server_name 139.199.209.96;
server_name api.xgjun.cn;
#rewrite ^(.*) https://$host$1 permanent;
return 301 https://api.xgjun.cn$request_uri;
}
server {
listen 443;
server_name api.xgjun.cn; #填寫繫結證照的域名
ssl on;
ssl_certificate /home/xxz/1_api.xgjun.cn_bundle.crt;
ssl_certificate_key /home/xxz/2_api.xgjun.cn.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個協議配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照這個套件配置
ssl_prefer_server_ciphers on;
// 注意空格
if ($ssl_protocol = "") {
rewrite ^(.*) https://$host$1 permanent;
}
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://api;
proxy_redirect off;
}
}
複製程式碼
mongo ->centos
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
進入目錄
cd /etc/yum.repos.d
複製程式碼
建立
sudo vi mongodb-org-3.6.repo
複製程式碼
寫入內容
[mongodb-org-3.4]
name = MongoDB 3.4版本庫
baseurl = https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck = 0
enabled = 1
gpgkey = https:// www.mongodb.org/static/pgp/server-3.6.asc
複製程式碼
安裝
sudo yum install -y mongodb-org
複製程式碼
開啟mongo
sudo service mongod start
複製程式碼
測試mongo
mongo
複製程式碼
設定使用者名稱密碼並且授權
use admin
// 新增管理員
db.createUser({user:'xxz_ad',pwd:'ai081012',roles:[{role:'userAdminAnyDatabase',db:'admin'}]})
// 授權
// 賬號 密碼
db.auth('xxz_ad','ai081012')
複製程式碼
修改mongo.conf配置檔案進行使用者登陸驗證
mongo.conf路徑
/etc/mongod.conf
複製程式碼
// 找到#security修改為如下
security:
authorization:'enabled'
複製程式碼