Linux伺服器上遷移專案路徑,修改nginx配置,遷移及備份MongoDB資料庫流程 (超詳細)!!!
緣由:客戶伺服器專案路徑不是很合理,導致Jenkins自動部署時還需要新增路徑後再更新部署,所以需要把專案路徑統一和規範化。
- 遷移專案路徑,保證路徑合規,同時做好備份和遷移。遷移後先安裝好依賴。
- 專案路徑改了,nginx.conf root引數也要做相應的修改,更改為admin,ui等打包後的新的dist路徑。同時將以前的啟動埠修為7001,進一步規範化。
- 專案MongoDB資料庫名稱也不是很合規,因此也需要將MongoDB相應進行備份/刪除等操作。
一、先遷移專案路徑並進行備份(由於需要規範化的資料夾已經存在。所以先將已有資料夾進行遷移備份):
1. 建立備份資料夾
mkdir backup
2. 遷移已存在的資料夾/檔案內容
[root@xxx~]# mv codebot /usr/local/code
將路徑 ~ 下的資料夾(目錄) codebot 移動到/usr/local/中並命名為重新命名為code,所以/usr/local/code資料夾(目錄)可以不存在
[root@xxx ~]# mv codebot/* /usr/local/code
將路徑 ~ 下的資料夾(目錄) codebot 下的所有內容移動到/usr/local/code目錄中,由於是直接移動code資料夾(目錄)的內容,所以/usr/local/code資料夾(目錄)必須需要存在
3. 建立規範化資料夾
mkdir codebot
4. 將現有專案目錄下的所有檔案內容和資料夾(目錄)拷貝到新建的規範化資料夾
需要注意需求是將專案目錄下的所有檔案內容和資料夾(目錄)都複製到新建的規範化資料夾,而不是將一個資料夾複製到另外一個資料夾中的業務場景;
這裡需要使用到-R引數,表示遞迴處理,將專案目錄下的所有檔案與子目錄一併遞迴處理;
這裡我使用的星號來表示資料夾中的所有檔案內容和資料夾(目錄),等待一會就複製成功了;
在複製時,Linux會將*星號作為所有檔案內容和資料夾(目錄),有時候會報以下錯誤:cp: cannot stat `/xxx/xxx/*': No such file or directory,這裡我沒有遇到,不再贅述;
*號方式複製錯誤時也可以使用點(.)代表所有檔案和資料夾進行遞迴複製。
[root@xxx ~]# cp -R /etc/codebot/* /home/codebot/
*號方式將路徑/etc/codebot下的所有檔案內容和資料夾(目錄)複製到/home/codebot/路徑中
[root@xxx ~]# cp -R /etc/codebot/. /home/codebot/
.號方式將路徑/etc/codebot下的所有檔案內容和資料夾(目錄)複製到/home/codebot/路徑中
二、備份目前專案MongoDB資料庫及已存在的規範化資料庫:
1. 進入伺服器mongo資料庫
mongo
2. 使用find命令查詢伺服器mongodb所在路徑,這一步最主要是方便把備份的MongoDB資料庫放置在這一路徑下,方便後續查詢
find / -name mongodb
從 / 根目錄下查詢資料夾名為 mongodb 的資料夾
當然後面跟上檔案字尾即為查詢檔案,例如:find / -name nginx.conf 從 / 根目錄下查詢檔名為 nginx.conf 的檔案
3. 使用mongodump命令進行資料庫備份(預設沒有資料庫密碼,直接備份,備份最後一層路徑建議為日期時間+資料庫名)
mongodump -h 127.0.0.1 --port 27017 -d xxxdatabase -o /xxx/xxx/20xx-x-xxdatabase
沒有資料庫密碼備份:mongodump -h 資料庫所在的ip(本地即為127.0.0.1) --port 埠號(預設為27017)-d 資料庫名稱 -o 匯出路徑
有資料庫密碼備份:mongodump -h 資料庫所在的ip(本地即為127.0.0.1) --port 埠號(預設為27017) -u 使用者名稱 -p 密碼 -d 資料庫名稱 -o 匯出路徑
備份好的資料庫為bson和json格式的檔案,儲存路徑即為:/xxx/xxx/20xx-x-xxdatabase/xxxdatabase
4. 刪除與標準化資料庫重名的資料庫,確保此前已經用mongodump進行了資料庫備份
show dbs
先檢視所有資料庫
use xxxdatabase
切換到刪除資料庫 xxxdatabase
db.dropDatabase()
執行刪除資料庫命令
show dbs
再檢視所有資料庫,xxxdatabase已經被刪除成功
5. 恢復備份資料庫
mongorestore -d xxxtestdatabase /xxx/xxx/20xx-x-xxdatabase/xxxdatabase
mongorestore -d 想要匯入的資料庫名稱 匯出路徑/資料庫名(記住後面要加之前所備份的資料庫的名字)
三、修改nginx.conf配置:
1. 使用whereis 命令查詢nginx.conf所在路徑
whereis nginx
查詢資料夾(目錄)名/檔案為nginx的所在路徑,我這裡查到是在/etc/ngin/下,專案的nginx.conf則在/etc/ngin/conf.d下
1. vim修改nginx.conf server的root引數,修改路徑為遷移後的專案dist路徑
server {
listen 443;
server_name xxx.xxxx;
root /www/BUBG/codebotui/dist;
...省略
簡單寫一下server的引數,listen:監聽埠;
server_name:監聽地址,即為部署的域名;
root:伺服器專案前端VUE工程打包好的dist絕對路徑;
我這裡專案是npm run build/npm run build:prod進行編譯打包的,具體命令按照vue工程裡package.json檔案中scripts引數裡的編譯打包命令進行編譯dist。
2. vim修改nginx.conf server的location 引數的proxy_pass的啟動埠,統一修改7001,進行進一步規範化:
location /api/ {
proxy_pass http://127.0.0.1:7001;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
#
location /adi/ {
proxy_pass http://127.0.0.1:7001;
proxy_connect_timeout 300;
...省略
nginx.conf的引數和學習網上有很多教程和解釋,這裡不做過多贅述
3. 修改nginx後進行ngin.conf配置檢查
nginx -t
這條命令也可以檢視配置檔案 nginx.conf 的路徑
4. 檢查ngin.conf配置正確後進行nginx重啟
nginx -s reload
四、對伺服器專案進行重啟:
1. 停止
npm run stop
2. 啟動
npm run start