利用虛擬機模擬學習項目代碼發佈

1. 安裝VM

2. 下載CentOS 7 64位

3. 打開VM,並創建虛擬機,將下載的CentOS導入安裝

4. 啓動虛擬機,點擊Applications/Favorites/Terminal打開終端命令窗口
4.1 輸入 ls 查看當前目錄下的文件夾

5. 創建一個屬於自己的工作文件夾:mkdir App
5.1 若是命名錯誤可刪除後再創建:rmdir App(該命令是刪除空文件夾)
5.2 其他命令:

mkdir 目錄名         => 創建一個目錄

rmdir 空目錄名      => 刪除一個空目錄

rm 文件名 文件名   => 刪除一個文件或多個文件

rm –rf 非空目錄名 => 刪除一個非空目錄下的一切

touch 文件名        => 創建一個空文件

6. 進入App文件夾,再創建一個文件夾git並進入

7. 輸入命令:yum install git git-gui 安裝git。報如下錯誤:you need to be root to perform this command

是提示要獲取root權限,輸入 su 回車輸入密碼即可解決(密碼爲不可見)

再次安裝git時,又出現錯誤:Another app is currently holding the yum lock; waiting for it to exit...

解決方法:
rm -rf /var/run/yum.pid 來強行解除鎖定,然後你的yum就可以運行了:

 再次輸入命令:yum install git git-gui 之後會顯示一系列關於git的信息,然後提示你是否可以下載git了:

輸入 y 之後會開始下載git,直到下載完畢:

8. 爲了檢查是否真的下載了git,可輸入查詢git版本的命令:git --version

9. 接下來爲了能夠在虛擬機上運行你的本地代碼,不僅需要配置ssh key,還需要從遠程倉庫拉取項目代碼。
9.1 配置ssh key,輸入:ssh-keygen -t -rsa -C "[email protected]",然後一直回車,直到創建完。

9.2 進入自動創建的 .ssh 文件夾。注意:生成的 .ssh 文件夾是不可見的,所以用 ls 命令時是顯示不了 .ssh 文件夾的
9.3 進入後打開id_rsa.pub文件:cat id_rsa.pub ,然後將公鑰的字符串複製到github/gitlab上。然後新建一個文件夾用於存放待會拉取的項目代碼,並初始化:git init 。最後測試能否連接上遠程倉庫(這裏以拉取我賬號具有權限的項目代碼):git pull git@@github.com ,若是能拉取代碼則說明連接成功

9.4 代碼拉取完畢(後臺服務代碼也拉取完畢)之後,開始運行項目,因爲後臺服務要運行,前端代碼也要運行,甚至需要打包,那麼可打開多個終端進行操作。

10. 如果在虛擬機裏面不好操作命令,可以下載XShell協助(該版本只能使用於非商業用途):https://www.netsarang.com/zh/free-for-home-school/

--------------------------------------------------------------------------------------------------------------------------

準備工作結束,下面是進入工作

---------------------------------------------------------------------------------------------------------------------------

11. 接下來就需要使用可以發版的工具docker,首先準備好nodejs和docker環境

11.1 nodejs環境的準備
11.2 通過ssh命令進入你的虛擬機:ssh yourusername@your ip address
(生產環境登錄:通過某某系統(騰訊雲)登錄部署你項目代碼的服務器)
11.3 前端環境需要在nodejs環境下運行,所以需要安裝nodejs環境. 目前使用的是最新的nodejs v10.15.3版本,安裝方法如下: Node 官網已經把 linux 下載版本更改爲已編譯好的版本了,我們可以直接下載(https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz)解壓後使用:

#wget https://nodejs.org/dist/v8.12.0/node-v10.15.3-linux-x64.tar.xz  // 下載
#tar xf  node-v10.15.3-linux-x64.tar.xz      // 解壓
#cd node-v8.12.0-linux-x64/                  // 進入解壓目錄
#./bin/node -v                               // 執行node命令 查看版本
V10.15.3

 解壓文件的bin目錄底下包含了node, npm 等命令,我們可以使用 ln 命令來設置軟連接:

sudo ln -s [安裝路徑]/bin/npm   /usr/local/bin/ 
sudo ln -s [安裝路徑]/bin/node   /usr/local/bin/

sudo ln -s [安裝路徑]/bin/npm   /usr/bin/ 
sudo ln -s [安裝路徑]/bin/node   /usr/bin/
#注: 此方法將node和npm鏈接到sudo下 上面的方法將node和npm安裝到了用戶下,兩者不通用
#node –v
V10.15.3

#sudo node –v
V10.15.3
則安裝成功

注意:這裏在設置軟連接的時候,會報一個錯誤:xx is not in the  sudoers file.
那是因爲你自定義的用戶名不具有權限,要切換到根用戶,利用它的權限把你自定義的用戶權限添加進去,可參考:
https://jingyan.baidu.com/article/3ea51489ceccd652e61bba22.html

11.4 docker環境:sudo yum install docker
11.5 其他的一些準備:
安裝一些必要的系統工具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加軟件源信息:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum 緩存:

sudo yum makecache fast

安裝docker-ce

sudo yum -y install docker-ce

啓動docker 後臺服務

sudo systemctl start docker

測試運行

docker run hello-world

至此,虛擬機項目打包學習在此就差不多結束了,因爲要想真正把項目代碼打包至服務器上,是需要服務器支撐的,而服務器又需要購買才能使用,所以,正式發佈的硬性條件是你必須要有一臺線上服務器(國內一般買的都是阿里系或者騰訊系服務器)

-------------------------------------------------------------------------------------------------------------------------------

正式進入發佈工作(最好是對docker打包命令有個基礎認識,也就是掌握一些linux的常用命令)

-------------------------------------------------------------------------------------------------------------------------------

12. 進入並連接到你的服務器(自己購買的,或者公司給你玩的服務器),若是服務器內無任何項目代碼,則可以先創建一個文件夾用於存放,與上述步驟:創建文件夾--安裝git、node環境並檢查版本號--配置權限--git拉取最新代碼--安裝docker類似。

13. 項目中有publish.sh和Dockerfile兩個文件,Dockerfile是docker打包需要配置的一些信息,比如服務器地址、端口號、項目代碼在服務器中的路徑等;而publish.sh裏的配置信息是:可選擇打包的環境,比如有生產環境prod、測試環境test等。(注:如果沒有則需自己配置,博主目前沒這個實力)

14. 以打包測試版本爲例:在進入相關項目代碼根目錄下之後,輸入以下命令:
sh publish.sh test
如果打包成功會顯示success,否則會顯示docker: Error response from daemon: driver programming external connectivity on endpoint recursing_brahmagupta (xxxxxxxxx) : Bind for 0.0.0.0:xxxx failed: port is already allocated.

錯誤的原因是這個端口已被分配了,需要將之前的版本刪掉,空出該端口號,否則該端口一直被佔用,致使你打包無法成功。

刪除命令:docker rm -f dff34ac6e9fd(佔用該端口的版本號)

查看刪除後的版本是否還存在:docker ps
如果查看不到,則說明刪除成功,進行下一步操作

你可以重新執行sh publish.sh test,也可以直接輸入命令:
docker run -d -p xxxx:xxxx ipaddress:xxxx/項目名:打包的版本號
示例:docker run -d -p 3306:3306 127.0.0.1:5000/my-project:20190401134817_0ca6764
因爲之前有過一次打包,這行命令是把該打包後的代碼設置鏡像後,映射到該3306端口號

再次輸入:docker ps 進行查詢,如果有你打包之後的項目,那麼便是成功。在瀏覽器輸入你服務器的ip address + port number就可以加載出產品的新一代版本。

附:查詢打包項目命令:docker ps | grep xx(要搜索的內容)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章