Vagarnt?Virtual配置YII的教程
目錄
1?下載并安裝virtualbox最新版
2?下載并安裝vagrant最新版
3 下載laravel/homestead 的virtual盒子
4?下載WEB項目
5?在項目根目錄下載homestead運行腳本
6?修改homestead.yaml配置文件
7?運行虛擬機
8?處理發(fā)現(xiàn)的問題
1、下載并安裝virtualbox最新版
https://www.virtualbox.org/wiki/Downloads
2、下載并安裝vagrant最新版
https://www.vagrantup.com/downloads.html
3、下載laravel/homestead 的virtual盒子
安裝homestead6.4版本,因為7.0版本時PHP5.6已經(jīng)被刪除掉了
自動添加box的命令
# vagrant box add laravel/homestead
一般下載速度會很慢,可以手動下載后再進(jìn)行本地裝載。
homestead Box訪問地址:https://app.vagrantup.com/laravel/boxes/homestead
v6.4.0下載地址:https://app.vagrantup.com/laravel/boxes/homestead/versions/v6.4.0/providers/virtualbox.box
本地裝載命令:
# vagrant box add laravel/homestead file:///e:/virtualbox.box
但是直接導(dǎo)入virtualbox.box文件會導(dǎo)致版本號為0,與實際不符。需要新建一個文件 `metadata.json` ,然后填寫對應(yīng)的版本信息:
{
? ? "name": "laravel/homestead",
? ? "versions": [{
? ? ? ? "version": "6.4.0",
? ? ? ? "providers": [{
? ? ? ? ? ? "name": "virtualbox",
? ? ? ? ? ? "url": "e:/virtualbox6.4.0.box"
? ? ? ? }]
? ? }]
}
-? `name` 添加的box名字
-? `version` :版本號
-? `providers.name` :虛擬主機類型
-? `providers.url` :box地址
`metadata.json` 準(zhǔn)備完成后,執(zhí)行以下命令添加:
#? vagrant box add metadata.json
導(dǎo)入完成后,通過以下命令可以看到導(dǎo)入的文件及版本號。
#? vagrant box list
4、下載WEB項目
# git clone 項目地址.project.git
5、在項目根目錄下載homestead運行腳本
由于最新的homestead腳本要求virtualBox7.0以上版本,而我使用得是6.4版本的Box,所以下載腳本時需要切換到7.14.2版本的tag
# git clone https://github.com/laravel/homestead.git?
# git checkout?v7.14.2
進(jìn)入homoestead目錄中,通過執(zhí)行init程序,初始化yaml配置文件、aliases別名文件以及after腳本
6、修改homestead.yaml配置文件
設(shè)置虛擬機的名稱
name: "my-test"
設(shè)置最大的內(nèi)存memory以及處理器數(shù)cpus,設(shè)置服務(wù)的提供者provider為virtualbox
ip: "192.168.61.13"
memory: 2048
cpus: 1
provider: virtualbox
設(shè)置ssh密鑰,一般情況下只要使用過git,在個人用戶文件夾下都會有.ssh文件夾,并擁有相應(yīng)的id_rsa.pub和id_rsa文件。如果不存在這兩個文件,則需要通過git命令中的SSH_key命令創(chuàng)建。 創(chuàng)建完成后,檢查yaml中的authorize和keys的文件路徑是否一致即可,如果路徑不一致或者文件不存在,都會導(dǎo)致創(chuàng)建虛擬機的時候無法正常登錄。
authorize: ~/.ssh/id_rsa.pub
keys:
? ? - ~/.ssh/id_rsa
設(shè)置folders共享目錄,map是指項目在windows的目錄,to是指項目在虛擬機中的目錄,通過folders的設(shè)置完成實體機和虛擬機中目錄文件的共享。
folders:
? ? - map: E:\workfile\yii
? ? ? to: /home/vagrant/code
設(shè)置網(wǎng)站,homestead使用nginx來搭建網(wǎng)站。其中map是指網(wǎng)站的域名,to指虛擬機中項目所在的目錄,php指當(dāng)前網(wǎng)站使用哪一個PHP版本。
sites:
? ? - map: yii.test
? ? ? to: /home/vagrant/code/web
? ? ? php: '7.2'
設(shè)置database數(shù)據(jù)庫名稱。
databases:
? ? - yii
非必須的設(shè)置:
設(shè)置ports端口轉(zhuǎn)發(fā)規(guī)則,send是指訪問的端口,to是指轉(zhuǎn)發(fā)到虛擬機中的端口。
設(shè)置blackfire,查看應(yīng)用性能,需要額外注冊第三方網(wǎng)站。
7、運行虛擬機
# vagrant up
如果變更了yaml配置后需要更新到虛擬機中,則使用 --provision?參數(shù)
# vagrant up/reload --provision
8、處理發(fā)現(xiàn)的問題
8.1、啟動后發(fā)現(xiàn)v7.14.2版本中,php56別名函數(shù)被移除掉了,手動將函數(shù)再加回到aliases文件中。
function php56() {
? ? sudo update-alternatives --set php /usr/bin/php5.6
? ? sudo update-alternatives --set php-config /usr/bin/php-config5.6
? ? sudo update-alternatives --set phpize /usr/bin/phpize5.6
}
8.2、完成啟動后運行網(wǎng)站發(fā)現(xiàn)php并沒有安裝php-memcache擴展,導(dǎo)致網(wǎng)站運行報錯,方法很簡單,并不需要ssh到虛擬機中操作,只需要利用homestead提供的after.sh腳本來完成擴展的安裝,如下:
#!/bin/sh
# If you would like to do some extra provisioning you may
# add any commands you wish to this file and they will
# be run after the Homestead machine is provisioned.
#
# If you have user-specific configurations you would like
# to apply, you may also create user-customizations.sh,
# which will be run after this script.
echo '開始更新apt-get'
sudo apt-get clean
sudo apt-get update
echo '結(jié)束更新'
echo '開始安裝php5-memcache擴展'
sudo apt-get install php5.6-memcache
echo '結(jié)束安裝'
echo '開始重啟PHP'
sudo service php5.6-fpm restart
echo '完成重啟PHP'
8.3、?
完成腳本編寫后再執(zhí)行以下命令即可。
# vagrant reload --provision
參考鏈接
vagrant box?下載地址:https://app.vagrantup.com/boxes/search?provider=virtualbox
homestead教程:https://www.codercto.com/a/23782.html