iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 30
1
Software Development

30天開發與部署 Laravel 專案系列 第 30

虛擬機 Vagrant

第30天了,來聊聊 vm/虛擬機 ...

如果只是想練習Linux的CLI,一定要在GCP上開instance嗎?
其實有很多工具可以先讓開發者在本地開發環境進行作業,例如Vagrant。甚至是容器化開發環境的 Laradock。

因為前面都在使用GCE,基本上都是純命令列介面(Command-Line Interface,CLI),像這樣

https://ithelp.ithome.com.tw/upload/images/20201011/201252639QAAzLlu0v.png

從 masOS介面移轉過來時難免會有些不習慣,畢竟Google Cloud Platform 免費額度有限,雖然有都市傳說開一台instanece幾分鐘內刪掉就不用錢的都市傳說。但還是建議有些 Linux指令練習可以先透過一台vm去在本地開發時做練習。

友人推薦使用 Vagrant,用起來確實蠻順手的,建議可以玩玩看。熟練後在 GCE就可以開小一點規格的instance,加大虛擬記憶體,就可以順暢地部署 side project,本篇也會介紹Linux如何執行swap的部分。

下載 Virtual Box

Vagrant 底層還是透過 virtual box 這套虛擬機管理工具建構。
因此可先至 virtualbox官網 下載開發環境。

Vagrant

先到官網下載

https://www.vagrantup.com/downloads

確認版本

vagrant -v

Vagrant 2.2.9

安裝vagrant box

vagrant 提供許多客制化的開發環境,例如ubuntu、centOS等。
官網提供許多參考,https://app.vagrantup.com/boxes/search

https://ithelp.ithome.com.tw/upload/images/20201011/20125263gh0NgT1BCJ.png

確認已安裝的

vagrant box list

==> vagrant: A new version of Vagrant is available: 2.2.10 (installed version: 2.2.9)!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html
ubuntu/trusty64 (virtualbox, 20190514.0.0)

vagrant 基本指令

選擇啟動哪一個box vagrant init ubuntu/trusty64

  • 執行結果
    https://ithelp.ithome.com.tw/upload/images/20201011/20125263YpYNExwUSM.png

開始啟動 vagrant up

  • 執行結果後可以看一下 Virtual Box 是否有東西運行中
    https://ithelp.ithome.com.tw/upload/images/20201011/20125263gJcTj2gJy0.png

進入vm vagrant ssh

  • 執行結果
    https://ithelp.ithome.com.tw/upload/images/20201011/20125263tLolegh83C.png

關閉vm vagrant halt

  • 可至 Virtual Box 確認是否關閉
    https://ithelp.ithome.com.tw/upload/images/20201011/20125263Pu43ZdUcv6.png

重啟vm vagrant reload

刪除vm vagrant destroy

swap 實作 on vagrant

目的

在某些side project可能儲存空間需求不大,但vm記憶體太少時可能會有安裝環境上的問題,e.g. MySQL基本安裝需要一定的RAM,

以下是透過vm練習切割虛擬記憶體的步驟與說明。

步驟:

先檢查記憶體配置狀態 free -m
https://ithelp.ithome.com.tw/upload/images/20201011/201252633sskIdnq1Y.png

建立並前往 swap資料夾
mkdir -p /var/swap
cd /var/swap

** Generate swap file 設定虛擬記憶體大小**
//1M * 2000 ~= 2GB of swap memory
dd if=/dev/zero of=swapfile bs=1M count=2000

swap相關指令
建立 Linux swap area
mkswap /home/vagrant/swapfile

調整系統設定
``sudo vi /etc/fstab``
```
/home/vagrant/swapfile swap swap defaults 0 0
```

允許裝置與檔案 paging 與 swapping 
``sudo swapon -a``

重開vm後再檢查記憶體狀態
https://ithelp.ithome.com.tw/upload/images/20201011/20125263mpRUvrEibI.png


30天鐵人賽結語

透過 30天的文章,分享我在使用Laravel開發與部署GCE的經驗。

還有一些東西沒分享到, 例如可以第三種登錄時建立token的方式JWT、第三方登入分別使用內建的 Socialite或原生服務的Oauth機制、寄信驗證機制的 Mail trap、如果想自己刻畫面用blade.php、怎麼在同一份專案前後端分離時call 自己的API...等等。

重新寫成鐵人賽的過程中,也是重新檢視自己學習狀況。希望來年還有機會再參加鐵人賽。


參考資料
https://www.vagrantup.com/docs/cli/destroy
https://blog.csdn.net/boling_cavalry/article/details/99702719
https://yuanchieh.page/posts/2020-04-12_vagrant-教學-一鍵啟動配置開發環境
https://ithelp.ithome.com.tw/articles/10202559
https://stackoverflow.com/questions/20667761/composer-killed-while-updating
http://leadtosilverlining.blogspot.com/2019/04/add-swap-to-vm-instance-of-gcp.html
https://exfast.me/2018/11/linux-added-virtual-memory-swap/
https://askubuntu.com/questions/898941/how-to-check-ram-size
https://www.itread01.com/p/148373.html


上一篇
透過 HTTP/HTTPS +域名,連線至GCE專案
系列文
30天開發與部署 Laravel 專案30

尚未有邦友留言

立即登入留言