本地測試環境搭建


為了日常更好的學習、測試,又不想付出雲主機等開銷,搭建一個本地測試環境無疑是個明智的選擇。再結合GitHub、Jenkins、Docker等工具,進行持續集成、資源隔離,既可以快速的構建、部署自己的項目,又可以迅速的環境恢復。仔細想了一下,簡直不能更好。

環境描述


本地環境:

  • 操作系統:Windows7 企業版
  • 處理器:i5-3340M 2.70GHz
  • 內存:16GB
  • 系統類型:64位
  • 硬盤:總量300GB,剩余100GB
  • 虛擬化軟件:Oracle VM VirtualBox 5.0.20
  • 遠程訪問軟件:SecureCRT 6.6.1

測試環境:

  • 操作系統:CentOS 7.3
  • Linux內核:3.10
  • 系統鏡像:CentOS-7-x86_64-Minimal-1611.iso
  • CPU核數:1核
  • 內存:2GB
  • 系統類型:64位
  • 硬盤:20GB

創建虛擬機


1、安裝操作系統

具體設置:

(PS:右CTRL切換鼠標焦點)

  • 系統類型:local-4(隨意)、Linux、Red Hat (64-bit)
  • 內存大小:2048MB(2GB)
  • 虛擬硬盤:現在創建虛擬硬盤
  • 虛擬硬盤文件類型:VDI(VirtualBox磁盤映像)
  • 虛擬硬盤分配方式:動態分配(PS:固定大小創建真的很慢,因為我要創建4、5個,實在等不起)
  • 虛擬硬盤位置大小:local-4(隨意)、20GB(最好不要用默認8GB,容易不夠用,因為上面是動態分配,大點沒關系)
  • 語言:中文、簡體中文(中國)
  • 安裝位置:不變
  • 用戶設置:ROOT密碼(secret)、不會創建任何用戶

截圖:

Linux、Red Hat (64-bit)

內存:2048MB(2GB)

默認設置:現在創建虛擬硬盤

默認設置:VDI(VirtualBox磁盤映像)

默認設置:動態分配

硬盤大小:20GB(最好不要用默認8GB,容易不夠用)

2、配置IP

配置動態IP

日常使用經常會需要通過IP來訪問虛機及運行在其上的服務,因此需要給虛機配置IP。
網上有很多方法,最簡單的方法就是在安裝完成之后,先關機,再添加一個新的虛擬網卡即可,啟動后就會發現多了一個IP,該IP是動態IP(可以通過ip a命令,查看是否包含dynamic來區分)。

截圖:

網卡1(原網卡)保留不動,連接方式:網絡地址轉換(NAT),以后做端口轉發時會用到

網卡2-啟用網絡連接,連接方式:僅主機(Host-Only)適配器

查看靜態IP,命令:ip a,192.168.56.101

配置靜態IP

除了上述方法,也可以通過修改網卡的配置文件來為虛機配置靜態IP,在要創建多個虛機來組成測試環境的情況下,建議采用這種方式。

具體步驟:

  • 查看網卡信息,命令:ip a,記錄網卡名和MAC地址
  • 修改網卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-enp0s8、ifcfg-enp0s3,若沒有,則新建。
  • 重啟network服務,命令:systemctl restart network.service
  • 重啟虛機

將/etc/sysconfig/network-scripts/ifcfg-enp0s3中的ONBOOT=no改為yes,否則yum可能會不正常。

修改(或新建)后的網卡配置文件(/etc/sysconfig/network-scripts/ifcfg-enp0s8)如下:

DEVICE=enp0s8
BOOTPROTO=static
TYPE=Ethernet
NAME=enp0s8
BROADCAST=192.168.56.255
HWADDR=08:00:27:44:F5:35
IPADDR=192.168.56.101
IPV6INIT=yes
IPV6_AUTOCONF=yes
NETMASK=255.255.255.0
NETWORK=192.168.56.1
ONBOOT=yes

截圖:

查看網卡信息,命令:ip a,記錄網卡名和MAC地址

重啟虛機后的網卡信息,沒有了原來的dynamic,表示靜態IP配置成功

3、配置遠程訪問

Virtual Box等虛擬機軟件的控制界面雖然也能訪問虛機,甚至某些操作系統還有可視化界面,但是對於一個合格的程序員來說,為了掌握Linux下的操作,以及追求流程的操作體驗,使用遠程訪問工具來訪問虛機,無疑是一個Good idea。

具體步驟:

  • Alt + C(或者從工具欄打開)打開連接窗口,點擊“新建會話”
  • 連接協議:SSH2
  • 主機名:192.168.56.101,端口:22,防火牆:None,用戶名:root
  • 文件傳輸協議:SFTP
  • 會話名稱:192.168.56.101(可自定義),描述:無
  • 用戶名:root,密碼:(secret),保存密碼
  • 確認保存(暫無截圖)
  • 檢查確認IP,命令:ip a

截圖:

Alt + C(或者從工具欄打開)打開連接窗口,點擊“新建會話”

連接協議:SSH2

主機名:192.168.56.101,端口:22,防火牆:None,用戶名:root

文件傳輸協議:SFTP

會話名稱:192.168.56.101(可自定義),描述:無

用戶名:root,密碼:(secret),保存密碼

檢查確認IP,命令:ip a

4、修改主機名

由於在許多測試過程中,都需要用到多個虛機,在使用遠程訪問工具時,不容易區分,所以需要修改主機名,方便日常管理和區分。CentOS 7提供了主機名工具:hostnamectl,通過這個工具,可以很方便的管理主機名。

4.1、永久修改主機名:

hostnamectl set-hostname local-56-101

4.2、重新登陸或Alt + C(新建會話),可以確認主機名是否修改成功:

附:hostnamectl使用方法:
hostnamectl --help

安裝工具

不論是進行項目開發,還是進行多機器的運維、測試,使用合適的工具,都能極大的提高日常開發效率。所以在創建完虛機后,首先需要安裝一些實用、方便的工具。

lrzsz

lrzsz是一個Linux下類似ftp的用於文件上傳、下載的工具,通過lrzsz可以很方便的在本地宿主機與VirtualBox上的虛機直接傳輸文件。

安裝:

yum install lrzsz -y

命令:

  • 從本機上傳文件:rz
  • 從虛機下載文件:sz [文件名]

Vim

Vim在Vi的基礎上添加了很多特性,雖然系統默認集成了Vi,但還是推薦安裝Vim,並修改配置文件,來對字符集、編碼、tab鍵等進行設置。

安裝:

yum install vim -y

配置:

tee ~/.vimrc <<EOF
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set ts=4
set expandtab
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
EOF
source ~/.vimrc

bind-utils與net-tools

bind-utils與net-tools分別包含了nslookup與ifconfig等常用的網絡相關的工具。

安裝:

yum install bind-utils net-tools -y

Git

Git是一個開源、免費的分布式版本控制系統,可以高速、有效的處理各種規模的項目的版本管理。

安裝:

yum install git -y

Ansible

Ansible是一款基於Python開發的自動化運維工具,可以進行配置管理、批量部署等功能。對於機器較多的場景,可以使用Ansible來免去重復敲命令的煩惱。

安裝:

yum install ansible -y

使用方法:

Inventory文件說明:

  • [cluster]是組的別名,可以通過該組名對其下的所有機器進行控制
  • 每一行內容分別是:機器別名、機器IP、ssh訪問時使用的用戶名、ssh訪問時使用的密碼

創建Inventory文件:

mkdir ~/ansible
tee ~/ansible/cluster.inv <<EOF
[cluster]
192.168.56.101 ansible_ssh_host=192.168.56.101 ansible_ssh_user=root ansible_ssh_pass=test
192.168.56.102 ansible_ssh_host=192.168.56.102 ansible_ssh_user=root ansible_ssh_pass=test
192.168.56.103 ansible_ssh_host=192.168.56.103 ansible_ssh_user=root ansible_ssh_pass=test
192.168.56.104 ansible_ssh_host=192.168.56.104 ansible_ssh_user=root ansible_ssh_pass=test
EOF

示例:

從創建的Inventory文件(cluster.inv)中獲取機器信息,並在Inventory文件中的所有機器上安裝docker,並啟動

ansible all -i cluster.inv -m yum -a "name=docker"
ansible all -i ~/ansible/cluster.inv -m raw -a "systemctl start docker"

Tips:

如果出現第一次ssh訪問出現的輸入yes/or的提示,導致中斷,可以修改ansible的配置文件:/etc/ansible/ansible.cfg,將默認的host_key_checking = False改為True。

Docker

Docker是用於開發、裝載、運行應用的開放平台。通過Docker你可以將你的應用與架構分離。Docker可以幫你更快的裝載代碼、更快的測試、更快的部署,縮短代碼從編寫到運行的周期。

安裝:

yum install docker -y

啟動:

systemctl start docker

安裝服務


MySQL

最流行的關系型數據庫管理系統之一,開發環境自然得有一個。推薦5.7版本以后的,支持Json,在表結構設計上靈活了很多。並且推薦使用docker以容器的方式啟動,如果發生配置不當或使用不當,可以非常方便、迅速的重置環境,並且不會對所在虛機的環境造成影響。

安裝:

docker pull mysql:5.7

mkdir /opt/dev/mysql
rm -rf /opt/dev/mysql

docker run --name dev_mysql --restart=always -v /opt/dev/mysql:/var/lib/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 mysql:5.7

說明:

  • mysql版本:5.7

  • 容器名:dev_mysql

  • 數據目錄:/opt/dev/mysql

  • Root密碼:root

  • 端口:3307

  • 容器退出后始終重啟

  • --privileged=true是為了防止因CentOS7中的安全模塊selinux的權限限制,導致出現“Permission denied”的錯誤


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM