最近在學(xué)習(xí)微信小程序,就順便想了解下上線的那套部署流程~
服務(wù)器:阿里云ECS共享型 n4
云服務(wù)器
后端:NodeJs
數(shù)據(jù)庫:MySQL
前端:Vue
一雳攘、服務(wù)器購買與搭建MySQL
1.1 服務(wù)器購買
圖1-1:服務(wù)器一般有阿里云灼卢,百度云,騰訊云来农,各自選擇即可鞋真,我這里選擇阿里云
圖1-2:購買成功后,可以在“管理控制臺中”看到
1.2 連接服務(wù)器
連接的方式有很多種沃于,這里以阿里云網(wǎng)頁連接為列涩咖,還有Xshell軟件
密碼重置與遠(yuǎn)程連接(端口默認(rèn)22)
至此,服務(wù)器連接成功繁莹。
1.3 CentOS-8安裝mysql-8.0
- 通過以root用戶使用CentOS軟件包管理器來安裝MySQL 8.0服務(wù)器:
sudo dnf install @mysql
圖1-5
會自動下載檩互,下載完畢后,直接啟動mysql服務(wù) - 啟動mysql服務(wù)
systemctl start mysqld.service
圖1-6 - 登錄mysql
mysql -u root -p
圖1-7
圖1-8 - 修改mysql密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY '密碼';
圖1-9 - 創(chuàng)建遠(yuǎn)程訪問
CREATE USER 'root'@'%' IDENTIFIED BY '你設(shè)置的密碼';
GRANT ALL ON *.* TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你設(shè)置的密碼';
- 訪問
關(guān)閉防火墻 或者 開啟我們的3306端口就可以進(jìn)行訪問了
# 查看firewall服務(wù)狀態(tài)
systemctl status firewalld
# 開啟咨演、重啟闸昨、關(guān)閉、firewalld.service服務(wù)
# 開啟
service firewalld start
# 重啟
service firewalld restart
# 關(guān)閉
service firewalld stop
# 查看防火墻規(guī)則
firewall-cmd --list-all # 查看全部信息
firewall-cmd --list-ports # 只看端口信息
# 開啟端口
開端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
重啟防火墻:systemctl restart firewalld.service
命令含義:
--zone #作用域
--add-port=80/tcp #添加端口薄风,格式為:端口/通訊協(xié)議
--permanent #永久生效饵较,沒有此參數(shù)重啟后失效
關(guān)閉防火墻(不建議)
systemctl stop firewalld.service
開啟端口(建議)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
成功之后我們需要重啟我們的防火墻
systemctl restart firewalld.service
然后就可以連接啦~
如果不行,檢查下阿里云服務(wù)器MySQL是否開啟了遠(yuǎn)程訪問(見1.4)
1.4 阿里云服務(wù)器MySQL開啟遠(yuǎn)程訪問
上一步連接成功的遭赂,可以跳過此步~
登錄阿里云進(jìn)入控制臺循诉,依次訪問 實例 ->(升降配下的)更多 -> 網(wǎng)絡(luò)和安全組 -> 安全組配置 -> 配置規(guī)則
二、部署后端包(nodejs)
2.1 安裝 nodejs
在 node 官網(wǎng)上下載對應(yīng)的安裝包撇他,上傳到服務(wù)器并解壓茄猫,我把安裝包放在 /usr/local/lib/nodejs 下,執(zhí)行以下5句
# 創(chuàng)建nodejs文件夾困肩,并上傳nodejs壓縮包
mkdir /usr/local/lib/nodejs
# 解壓nodejs壓縮包
tar -xzvf /usr/local/lib/nodejs/node-v12.12.0-linux-x64.tar.gz -C /usr/local/lib/nodejs
# 重命名為node-v12.12.0
mv /usr/local/lib//nodejs/node-v12.12.0-linux-x64 /usr/local/lib/nodejs/node-v12.12.0
# 建立軟連接 在 bin 下創(chuàng)建 node划纽、npm快捷方式,方便全局使用
ln -s /usr/local/lib/nodejs/node-v12.12.0/bin/npm /usr/local/bin
ln -s /usr/local/lib/nodejs/node-v12.12.0/bin/node /usr/local/bin
2.2 測試 nodejs是否安裝成功
2.3 上傳后端代碼
我是以nodejs作為后端滴
# 1. 進(jìn)入/usr/local文件夾
cd /usr/local
# 2. 創(chuàng)建develop文件夾,用于放前后端代碼
mkdir develop
# 3. 進(jìn)入develop文件夾锌畸,并上傳node服務(wù)代碼
cd develop
# 4. 安裝依賴包
npm i
# 5. 安裝supervisor (supervisor 是 node 應(yīng)用的進(jìn)程管理器)
npm install supervisor -g
-
注意:執(zhí)行supervisor app.js時勇劣,如果遇到報"-bash: supervisor: command not found", supervisor已經(jīng)安裝的情況下,請注意看下是否裝在 /usr/local/bin/ 目錄下蹋绽;如果不是說明安裝目錄不對芭毙,Mac默認(rèn)訪問執(zhí)行文件的目錄在 /usr/local/bin/筋蓖,所以需要保證我們的執(zhí)行模塊安裝在該目錄下。
圖2-2 - 解決辦法如下
npm config get prefix // 獲取npm全局安裝目錄
npm config set prefix /usr/local // 修改安裝目錄為Mac可執(zhí)行文件目錄退敦;注意這里不需要加上/bin
npm install supervisor -g
supervisor app.js
2.4 開啟后端端口
-
檢查防火墻是否開啟
圖2-3 - 查看端口是否開放(這里后端開啟13666端口)
# 查看13666端口是否開放 yes表示開啟粘咖;no表示未開啟。
firewall-cmd --query-port=13666/tcp
# 添加指定需要開放的端口:
firewall-cmd --add-port=13666/tcp --permanent
# 重載入添加的端口:
firewall-cmd --reload
# 查詢指定端口是否開啟成功:
firewall-cmd --query-port=13666/tcp
2.5 守護(hù)進(jìn)程--supervisord
到這里侈百,nodejs和后端就部署完成啦~但還差一步就是安裝守護(hù)進(jìn)程supervisord并設(shè)置開機(jī)自啟動瓮下,因為如果不安裝supervisord,當(dāng)我們關(guān)閉xshell時后端就會停止服務(wù)钝域,所以我們需要一個工具去讓我們的后端進(jìn)程一直開啟讽坏,這就是supervisord存在的意義(當(dāng)然守護(hù)進(jìn)程還有很多 這里以supervisord為例)
- 安裝supervisor
yum install -y supervisor
圖2-5 - 設(shè)置開機(jī)自啟動
systemctl enable supervisord
- supervisord管理命令
systemctl stop supervisord
systemctl start supervisord
systemctl status supervisord
systemctl reload supervisord
systemctl restart supervisord
- 修改配置文件
輸入指令vim /etc/supervisord.conf
圖2-7
輸入指令cat /etc/supervisord.conf
圖2-8
圖2-9 - 創(chuàng)建Supervisord文件
mkdir /etc/supervisord.d
cd /etc/supervisord.d
touch supervisord.ini
輸入指令
vim /etc/supervisord.d/supervisord.ini
并粘貼下列代碼
#這里的node-supervisord就是我們顯示在web前端以及終端的監(jiān)控名稱
[program:node-supervisord]
#啟動命令 : 此處我的node服務(wù)啟動命令是supervisor app.js (/usr/local/develop/back-end/app.js為我們要監(jiān)控的文件地址)
command=supervisor /usr/local/develop/back-end/app.js
autostart=true
autorestart=true
startsecs=1
startretries=3
redirect_stderr=true
#日志地址,可自行配置目錄(需要自己創(chuàng)建)
stdout_logfile=/etc/supervisord.log/access_supervisord.log
#日志地址例证,可自行配置目錄(需要自己創(chuàng)建)
stderr_logfile=/etc/supervisord.log/error_supervisord.log
- 創(chuàng)建日志文件
mkdir /etc/supervisord.log
cd /etc/supervisord.log
touch {error_supervisord.log,access_supervisord.log}
- 重啟supervisor
輸入命令systemctl restart supervisord
圖2-13
# 參考Centos7.x 安裝 Supervisord
三路呜、安裝nginx
在linux下安裝nginx,首先需要安裝 gcc-c++編譯器织咧。然后安裝nginx依賴的pcre和zlib包胀葱。最后安裝nginx即可。
# 1.先安裝gcc-c++編譯器
yum install gcc-c++
yum install -y openssl openssl-devel
# 2.再安裝pcre包
yum install -y pcre pcre-devel
# 3.再安裝zlib包
yum install -y zlib zlib-devel
# 4. 添加rpm源(一般/etc放配置文件笙蒙,/usr/local放用戶代碼)
rpm -Uvh [http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm](https://links.jianshu.com/go?to=http%3A%2F%2Fnginx.org%2Fpackages%2Fcentos%2F7%2Fnoarch%2FRPMS%2Fnginx-release-centos-7-0.el7.ngx.noarch.rpm)
# 5. 查看源是否添加成功
yum search nginx
# 6. 安裝nginx
yum install -y nginx
# 7. 設(shè)置開機(jī)自啟動
systemctl enable nginx
# 8. 允許HTTP和HTTPS通信
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
圖3-1:安裝nginx
圖3-2:查看nginx狀態(tài)是否為active
圖3-3:查看nginx開啟的端口(nginx 默認(rèn)80端口)
圖3-4:修改nginx端口為8081
圖3-5:重啟nginx抵屿,并查看8081端口是否開啟
圖3-6: 開放8081端口
圖3-7:查看url是否可達(dá)
圖3-8:外網(wǎng)映射
圖3-10:訪問 公網(wǎng)ip+nginx端口
- 最后設(shè)置開機(jī)自啟動
systemctl enable nginx
四、部署前端包
-
將前端包放到/usr/local/develop/web-front-end中
圖4-1 -
修改nginx配置(/etc/nginx/nginx.conf)
圖4-2 - 重啟nginx
systemctl restart nginx
-
訪問 公網(wǎng)ip+nginx端口
圖4-3
文件位置
nodejs包:/usr/local/lib/nodejs
后端代碼:/usr/local/develop/back-end
前端代碼:/usr/local/develop/web-front-end
nginx:/etc/nginx
supervisor配置文件(修改ip捅位、端口等): /etc/supervisord.conf
supervisor設(shè)置啟動命令:/etc/supervisord.d/supervisord.ini
supervisor日志文件:/etc/supervisord.log
常用指令
(1)基本命令
創(chuàng)建a文件夾 :mkdir /usr/local/lib/a
創(chuàng)建b文件:touch b.txt
創(chuàng)建c轧葛、d文件:touch {c.txt,d.txt}
解壓a.tar.gz壓縮包:tar -xzvf /usr/local/lib/nodejs/a.tar.gz -C /usr/local/lib/nodejs
重命名為b:mv /usr/local/lib/nodejs/a /usr/local/lib/nodejs/b
建立軟連接 在 bin 下創(chuàng)建 node、npm快捷方式,方便全局使用:
ln -s /usr/local/lib/nodejs/node-v12.12.0/bin/npm /usr/local/bin
ln -s /usr/local/lib/nodejs/node-v12.12.0/bin/node /usr/local/bin
(2)查看防火墻狀態(tài)
查看防火墻狀態(tài):systemctl status firewalld
開啟防火墻:systemctl start firewalld 或 service firewalld start
關(guān)閉防火墻:systemctl stop firewalld 或 service firewalld stop
重啟防火墻:systemctl restart firewalld 或 service firewalld restart
設(shè)置開機(jī)自啟動:systemctl enable firewalld
# 查看防火墻規(guī)則
查看全部信息 firewall-cmd --list-all
只看端口信息firewall-cmd --list-ports
若遇到無法開啟
先用:systemctl unmask firewalld.service
然后:systemctl start firewalld.service
(3)查看對外開放的端口狀態(tài)
查詢已開放的端口:netstat -anp
查詢指定端口是否已開 :firewall-cmd --query-port=666/tcp (提示 yes艇搀,表示開啟尿扯;no表示未開啟。)
查詢nginx進(jìn)程:netstat -anop | grep nginx
殺進(jìn)程:kill -9 進(jìn)程pId
(4)對外開發(fā)端口
查看想開的端口是否已開:firewall-cmd --query-port=6379/tcp
添加指定需要開放的端口:firewall-cmd --add-port=123/tcp --permanent
重載入添加的端口:firewall-cmd --reload
查詢指定端口是否開啟成功:firewall-cmd --query-port=123/tcp
移除指定端口:firewall-cmd --permanent --remove-port=123/tcp
(5)supervisor
停止:systemctl stop supervisord
開啟:systemctl start supervisord
查看狀態(tài):systemctl status supervisord
重載:systemctl reload supervisord
重啟:systemctl restart supervisord
開機(jī)自啟動:systemctl enable supervisord
(6)虛擬機(jī)相關(guān)
查看虛擬機(jī)列表:virsh list --all
虛擬機(jī)關(guān)機(jī):virsh shutdown 虛擬機(jī)名稱
虛擬機(jī)開機(jī):virsh start 虛擬機(jī)名稱
(7)服務(wù)器相關(guān)
服務(wù)器立即關(guān)機(jī):shutdown -h now
服務(wù)器重啟:reboot
(8) 其他
url是否可達(dá):curl -XGET http://1.1.1.1:8081
后臺運行進(jìn)程:nohup 命令 &
示例:nohup node app.js &中符,這種關(guān)閉xshell姜胖,進(jìn)程就關(guān)了,所以需要寫啟動關(guān)閉腳本 + 服務(wù)