摘要:整體與很像,但是做了一些更改,為了更適應中國國內的開發網絡環境。表示宿主機器的目錄,表示環境目錄。將虛擬機置于休眠狀態。在開發過程中可能會需要增加多個站點來運行不同的開發程序。與擴展名重名,建議將的改成為佳。
SimfaseDevEnv 介紹
SimfaseDevEnv是為php開發者提供的開發環境,構建在vagrant之上;Vagrant的Vagrangfile配置文件是在Homestead的ruby腳本之上進行的改變。整體與Homestead很像,但是做了一些更改,為了更適應中國國內的開發網絡環境。
相對于Homestead,SimfaseDevEnv有以下主要不同的地方
vagrant box的安裝是本地導入的,不需要在線安裝。(國內的網絡環境太差)
PHP版本是5.5 并沒有使用php7(php7不是不好,它很優秀,但是目前國內生產環境用php7的不多)
全平臺(osx/linux/Win)支持nfs(并不是Windows使用samba不好,只是samba不支持軟鏈和硬鏈 開發symfony、nodejs等項目的時候就煩惱了)
軟件工具能使用國內源的都切換成了國內源,比如ubuntu軟件源、composer 、cnpm[taobao]
不生成類似于 .Homestead 的用戶配置文件。(為的是可以靈活的安裝多個SimfaseDevEnv)
SimfaseDevEnv 可以在任何 Windows、Mac 或 Linux 上面運行,里面包含了 Nginx 網頁服務器、PHP 5.5、MySQL、Redis、Memcached Nodejs。
內置軟件如果使用的Windows,需要在BIOS中啟用硬件虛擬化(VT-x)。
Ubuntu 14.04
Git 1.8
PHP 5.5
Nginx 1.8
MySQL 5.5
Node 5.8.0 (With n npm cnpm[taobao] Bower, Grunt, and Gulp)
Redis 3
Memcached
Composer
安裝與配置 1.安裝 VirtualBox 與 Vagrant在啟動SimfaseDevEnv 環境之前,必須先安裝 VirtualBox 和 Vagrant.目前SimfaseDevEnv不支持VMware和parallels。
1.1 VirtualBox安裝Mac與Linux不限制VirtualBox 版本,但是如果是Win用戶建議安裝 VitrualBox4.3.12(Win用戶點此鏈接即可下載)
1.2 Vagrant安裝Win用戶:VirtualBox安裝完成后;如果你的C盤空間不夠大,建議打開軟件窗口,找到設置入口,點擊常規 將默認虛擬電腦位置 更改到其他空間比較大的分區。比如 D:VirtualBox VMs .
Mac與Linux不限制 Vagrant 版本,但是如果是Win用戶要求安裝Vagran 1.7.4(Win用戶點此鏈接即可下載)
因為Vagrant1.8.1 在win7/win10上有不少issue,有些問題還是很嚴重的。
2 增加 Vagrant 封裝包 2.1 下載simfase-dev-env-0.1.0.box因為找不到好的方便的免費的http server。索性放到的百度云盤,如果有機會爭取切換到我們公司的服務器上去。
2.2 將simfase-dev-env-0.1.0.box包導入到Vagrant當下載好simfase-dev-env-0.1.0.box后。你可以在終端機中輸入以下命令導入。導入包可能會花費一點時間。
vagrant box add simfase-dev-env /where/is/your/simfase-dev-env-0.1.0.box
注意,Win用戶需要注意添加 file:///來指向位置如:
vagrant box add simfase-dev-env file:///d:/download/simfase-dev-env-0.1.0.box
3 安裝SimfaseDevEnv因為SimfaseDevEnv做了一些腳本處理,所以并不能用 vagrant init simfase-dev-env直接初始化。需要下載我們處理過的腳本用作vagrant配置來啟動SimfaseDevEnv.
可以將SimfaseDevEnv倉庫下載到本地的任意位置,我們建議的是 Mac/Linux 用戶將SimfaseDevEnv倉庫 git clone 到 ~ 根下。Win用戶將SimfaseDevEnv倉庫 git clone 到 某盤符 根下。github倉庫 和 OSC倉庫
git clone https://github.com/iMarlboro/SimfaseDevEnv.git SimfaseDevEnv
或者
git clone https://git.oschina.net/marlboro/SimfaseDevEnv.git SimfaseDevEnv
git clone 后,進入 SimfaseDevEnv目錄,執行以下代碼來初始化SimfaseDevEnv。當然也可以選擇手動初始化,很簡單,將SimfaseDevEnv/src/stubs下的所有文件,復制到 SimfaseDevEnv根目錄下即可。
sh init.sh
注意 Win用戶需要使用Cygwin或者Git Bash來執行
此時,就會看 SimfaseDevEnv根目錄看到多出了SimfaseDevEnv.yaml等4個文件。
4 配置 SSH 密鑰然后需要編輯 SimfaseDevEnv目錄下的SimfaseDevEnv.yaml文件。可以在文件中配置 SSH 公開密鑰,以及主要機器與 SimfaseDevEnv 虛擬機之間的共享目錄。
如果沒有 SSH 密鑰的話, 在 Mac 和 Linux 下,可以利用下面的命令來創建一個 SSH 密鑰組:
ssh-keygen -t rsa -C "you@email.com"
在 Windows 下,你需要安裝 Git 并且使用包含在 Git 里的 Git Bash 來執行上述的命令。另外也可以使用 PuTTY 和 PuTTYgen。
創建了好 SSH 密鑰后,在SimfaseDevEnv目錄下SimfaseDevEnv.yaml 文件中的 authorize 屬性指明密鑰路徑(默認情況下已經有一個賦值,如果你的authorize不在所對應位置請更改 。 在Win下 ~表示在C盤的user/用戶 目錄下)。
5 配置共享文件夾 5.1 Mac/LinuxSimfaseDevEnv目錄下的SimfaseDevEnv.yaml文件文件中的 folders 屬性列出了所有你想在 SimfaseDevEnv 環境共享的文件夾列表。這些文件夾中的文件若有變動,他們將會同步在你的本機與 SimfaseDevEnv 環境里。你可以將你需要的共享文件夾都配置進去。
map表示宿主機器的目錄,to表示SimfaseDevEnv環境目錄。
如果要開啟 NFS,只需要在SimfaseDevEnv.yaml中的 folders 中加入一個標識 type: nfs:
folders: - map: ~/Code to: /home/vagrant/Code type: nfs5.1 Win7/Win10
如果是Win用戶開啟NFS,一定要先安裝vagrant-winnfsd 插件,使用如下命令:
vagrant plugin install vagrant-winnfsd
部分Win用戶可能會提示缺少childprocess,那么還需要先安裝childprocess然后再安裝vagrant-winnfsd代碼如下(按順執行):
vagrant plugin install childprocess vagrant plugin install vagrant-winnfsd
安裝完成后可以通過如下命令查看安裝的插件列表
vagrant plugin list
注意:最后還需要增加增在SimfaseDevEnv.yaml的 folders中配置mount_options,切記:
folders: - map: ~/Code to: /home/vagrant/Code type: nfs mount_options: - "nolock,vers=3,udp,noatime"
本部分Win實現NFS,參考了文獻speeding-up-homestead-on-windows-using-nfs
畢竟vagrant server在國外,如果因為網絡問題安裝失敗,那么可以將 gem包下載到本地再安裝
下載childprocess ,點擊鏈接進入后,右下側有下載鏈接點擊下載
下載vagrant-winnfsd,點擊鏈接進入后,右下側有下載鏈接點擊下載
下載后,在bash中進入下載的目錄運行
vagrant plugin install childprocess-x.x.x.gem vagrant plugin install vagrant-winnfsd-x.x.x.gem
6 Bash Aliases提示 x.x.x 表示你本次下載的軟件的版本號
SimfaseDevEnv目錄下的aliases文件中,我們增加了很多命令,方便在使用過程中快速操作(后面的章節會詳細講解用法),如果要增加 Bash aliases 到你的 SimfaseDevEnv 封裝包中,只要將內容添 到aliases 文件中即可。
7 啟動 Vagrant 封裝包編輯完 SimfaseDevEnv.yaml 后,在終端機里進入SimfaseDevEnv 文件夾并執行 vagrant up 命令。
Vagrant 會將虛擬機開機,并且自動配置共享目錄。如果要移除虛擬機,可以使用 vagrant destroy --force 命令(這是徹底鏟除虛機,不要輕易操作)。下面列表一些常用vagrant 命令
vagrant up命令,開機。
vagrant suspend 將虛擬機置于休眠狀態。這時候主機會保存虛擬機的當前狀態。再用vagrant up啟動虛擬機時能夠返回之前工作的狀態。這種方式優點是休眠和啟動速度都很快,只有幾秒鐘。缺點是需要額外的磁盤空間來存儲當前狀態。
vagrant halt 則是關機。如果想再次啟動還是使用vagrant up命令,不過需要多花些時間。
vagrant destroy 則會將虛擬機從磁盤中刪除。如果想重新創建還是使用vagrant up命令。
vagrant reload 從Vagrantfile重新啟動虛擬機。
vagrant global-status 輸出所有虛擬機當前運行狀態,關機、已啟動等。
SimfaseDevEnv中的aliases和after.sh僅僅在第一次 vagrant up是載入并執行加入到SimfaseDevEnv環境中,如果在這之后對它們進行過改動,且認為會使用到,那么需要進行以下命令重新載入shell
vagrant up --provision
至此,SimfaseDevEnv安裝完成!
常見用法 SSH 連接SimfaseDevEnv要通過 SSH 連接上的 SimfaseDevEnv 環境,在終端機里進入 SimfaseDevEnv 根 目錄并執行 vagrant ssh 命令。如果是Mac/Linux用戶并開啟了NFS,啟動SimfaseDevEnv時,還會提示輸入宿主機器當前用戶密碼。
另外,SimfaseDevEnv環境中目前有兩個用戶,root/vagrant 與 vagrant/vagrant
連接數據庫在 SimfaseDevEnv 封裝包中,已經預裝了 MySQL 數據庫。
如果想要從本機上通過 Navicat 或者 Sequel Pro 連接 MySQL 數據庫,可以連接 127.0.0.1 的端口 33061 (MySQL) 。而帳號密碼是 homestead / secret或者root / 123456
添加Nginx站點注意: 從本機端應該只能使用這些非標準的連接端口來連接數據庫。因為當程序如 Laravel 運行在虛擬機時,在 Laravel 的數據庫配置文件中依然是配置使用默認的 3306 連接端口。
在SimfaseDevEnv 環境中,Nginx的配置文件是/etc/nginx/nginx.conf,Nginx的站點配置文件放置在/usr/local/etc/nginx/sites中。
在開發過程中可能會需要增加多個 Nginx 站點來運行不同的開發程序。SimfaseDevEnv 環境添加多站點是否非常簡單的。運行以下命令即可。
serve domain.app /home/vagrant/Code/path/to/public/directory
上面的命令,將為 /home/vagrant/Code/path/to/public/directory目錄的站點添加一個Nginx配置文件到/usr/local/etc/nginx/sites中,同時添加了ssl配置,通過openssl生成的key相關文件在/usr/local/etc/nginx/ssl中。如此項目不僅僅可以通過http訪問,同時可以通過https訪問。并且,本函數自動的在Nginx中添加了pathinfo以及 index.php重定向(就是所謂的優雅路徑),這種配置對當前的大部分框架是通用的,比如 Laravel、Kohana、Codeigniter、Lumen、Thinkphp等等等
注意添加完站點后,別忘了在宿主機器中添加hosts。如Mac/Linux 是在 /etc/hosts文件中,Win是在C:WindowsSystem32driversetchosts中。
添加虛擬域名有兩種方法,第一種方法直接指向到SimfaseDevEnv環境如下:
192.168.11.11 domain.app
這種方法可以在宿主機器中使用瀏覽器直接訪問 http://domain.app 或者 https://domain.app
第二種方法,指向到宿主機器
127.0.0.1 domain.app
這種方法可以在宿主機器中使用瀏覽器訪問http://domain.app:8001 或者 https://domain.app:44301
其他一些Nginx 輔助命令另外,提供了其他一些快捷的創建Nginx站點的函數如:
serve-base domain.app /home/vagrant/Code/path/to/public/directory
以上命令與serve類似,但是不進行index.php 路徑rewrite。此類配置方法適用于多文件程序,如wordpress、typecho等等
serve-symfony2 domain.app /home/vagrant/Code/path/to/public/directory
以上命令與serve類似,但是是專門針對symfony2框架的,將index.php的重定向,換成了app_dev.php
針對Nginx的命令,只是為了方便用戶快速的創建Nginx配置,一些非通用的配置還是需要開發者手動的添加與編輯。
添加Mysql數據庫在SimfaseDevEnv環境中,mysql的配置文件位置在 /etc/mysql/my.cnf
在SimfaseDevEnv中預設了兩個mysql超級用戶 root/123456 和 homestead/secret (此用的創戶是為了方便laravel開發者)
添加數據庫可以使用mysql命令創建數據庫,或通過 Navicat 、Sequel Pro 連接 MySQL 數據庫來創建。
或者使用SimfaseDevEnv提供的函數來快速創建,使用方法
create-mysql database-name
連接端口以下的端口將會被轉發至 SimfaseDevEnv 環境:
SSH: 2222 → Forwards To 22 (此端口是不可配置的,Vagrant會根據端口沖突情況自動更改)
HTTP: 8001 → Forwards To 80
HTTPS: 44301 → Forwards To 443
MySQL: 33061 → Forwards To 3306
增加額外端口也可以自定義轉發額外的端口至 Vagrant box,只需要指定協議:
ports: - send: 93000 to: 9300 - send: 7777 to: 777 protocol: udpSimfaseDevEnv默認IP
SimfaseDevEnv的默認ip是192.168.11.11,如果需要更換成其他ip在SimfaseDevEnv.yaml中配置即可。
備份與恢復SimfaseDevEnv環境還提供方便的備份與恢復工具。為了方便大家升級SimfaseDevEnv時或者遷移數據時使用。
備份MySqlbackup-mysql
此命令將mysql數據直接備份至 /vagrant/src/backup/mysql/db-年月日時分秒.sql
同時備份至 /vagrant/src/backup/mysql/latest.sql
恢復Mysqlimport-mysql db-年月日時分秒.sql
此命令將mysql數據直接將 /vagrant/src/backup/mysql/db-年月日時分秒.sql 恢復至當前數據庫
備份Nginxbackup-nginx
此命令將/usr/local/etc/nginx 所有配置文件直接壓縮備份至 /vagrant/src/backup/nginx/年月日時分秒.tar.gz
同時備份至 /vagrant/src/backup/nginx/latest.tar.gz
恢復Nginximport-nginx 年月日時分秒.tar.gz
此命令將直接將 /vagrant/src/backup/nginx/年月日時分秒.tar.gz 恢復至當前系統的/usr/local/etc/nginx
備份所有backup-all
此命令同時執行了backup-mysql 和 backup-nginx
恢復所有import-all
此命令同時將latest.sql 和 latest.tar.gz恢復到當前系統
軟件說明 PHPPHP的配置目錄在/etc/php
sudo service php5-fpm start //開啟
sudo service php5-fpm stop //關閉
sudo service php5-fpm restart//重啟
PHP安裝了這些擴展
apc
apcu
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
imap
json
libxml
mbstring
mcrypt
memcache
memcached
mhash
mysql
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
Phar
posix
readline
redis #默認未關閉 php的redis擴展。 laravel Redis Alias與擴展名重名,建議將laravel 的 Redis Alias改成Predis為佳。如果要關閉redis擴展,sudo php5dismod redis命令即可,開啟也很簡單 sudo php5enmod redis
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
Zend OPcache
zip
zlib
NginxNginx的配置目錄在/etc/nginx/nginx.conf
sudo service nginx start //開啟
sudo service nginx stop //關閉
sudo service nginx restart//重啟
MySql的配置文件在/etc/mysql/my.cnf
sudo service mysql start //開啟
sudo service mysql stop //關閉
sudo service mysql restart//重啟
Memcached的配置文件是 /etc/memcached.conf
sudo service memcached start //開啟
sudo service memcached stop //關閉
sudo service memcached restart//重啟
Redis的配置文件是redis.conf
Redis默認是不自動啟動的,需要手動啟動。啟動方法
sudo redis-server /etc/redis/redis.conf
關閉redis
sudo pkill redis-server
NodejsNodejs 是使用n-install進行的安裝,只在當前用戶下進行了環境聲明,所以使用nodejs的時候 不需要使用sudo,也不能使用sudo,除非開發者在全局環境中再聲明一下。
相應的安裝了
n 可去看看文檔
Nodejs 已經安裝了5.8.0 ,比如需要安裝4.4.0 只需要n 4.4.0即可
npm
cnpm 使用的是淘寶NPM鏡像,一般情況下請使用cnpm 而不是npm,因為npm源在qiang外太慢了。
Bower
Grunt
Gulp
ComposerComposer 已經安裝,同時將repo倉庫地址改成了https://packagist.phpcomposer.com 。詳見pak.phpcomposer ,Composer中文手冊
一般情況下使用phpcomposer是沒有問題的,但是phpcomposer與官方庫同步并不是很頻繁,如果某個軟件的版本已經在官方更新,但是phpcomposer并沒有同步過來這時候就會出現composer update/install錯誤,解決的方法就是 切換為官方https://packagist.org/ 庫,切換方法將 ~/.composer 中的 config.json置空就行。或者在composer.json中將某個出問題的require指定上一個版本后再重新composer update/install,能暫時解決問題,等phpcomposer更新后,再刪除版本指定。
升級composer時,請使用sudo
其他 SimfaseDevEnv實現方法SimfaseDevEnv環境 是基于ubuntu官方提供的vagrant box之上進行的擴展
SimfaseDevEnv環境的實現過程腳本都放在 SimfaseDevEnv/src/install中,有興趣的開發者可以看看,有任何bug請不要吝嗇提交issue。但是不要在當前SimfaseDevEnv中執行這些腳本,因為當前的SimfaseDevEnv已經將初始環境都安裝好了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21477.html
摘要:前言使用搭建開發環境可以避免團隊開發帶來的開發環境不一致問題,避免了很多不必要的麻煩,同時其分發機制也也有利于新來的同事立即部署適合于公司的開發環境,非常便利,是很多互聯網公司的首選。因此,學習如何搭建基于的開發環境是很有必要的。 前言 使用vagrant搭建開發環境可以避免團隊開發帶來的開發環境不一致問題,避免了很多不必要的麻煩,同時其分發機制也也有利于新來的同事立即部署適合于公司的...
摘要:配置需要一個來用于與虛擬機進行連接,默認假定這個密鑰會被放在文件夾下。三使用管理項目版本使用可以對我們的代碼進行版本控制,如果萬一誤刪了代碼想回到之前的情況,則可以通過版本控制進行回滾。配置選項代表對進行全局設置。 laravel學習筆記,重新梳理知識點。 一、環境配置 1、編輯器選用 Atom PHPStorm SublimeText Atom 是由 GitHub 官方在 201...
團隊開發中,每個人都有自己擅長的集成環境,比如WAMP、AppServ、XAMPP,正是因為這些環境不統一,完成任務提交代碼后,每當測試出BUG的時候,都會有 代碼在我機子上運行沒有問題 的說辭。 那么問題來了,如何解決這個問題? 如何統一開發環境? Vagrant 是一款用來構建虛擬開發環境的工具,我們可以通過 Vagrant 封裝一個 Linux 的開發環境,分發給團隊成員。成員可以在自己喜...
摘要:成員可以在自己喜歡的桌面系統上開發程序,代碼卻能統一在封裝好的環境里運行,非常霸氣。打包分發當你配置好開發環境后,退出并關閉虛擬機。 博文參考 http://rmingwang.com/vagrant-commands-and-config.html https://www.vagrantup.com/docs/virtualbox/configuration.html https:/...
閱讀 1050·2021-11-22 15:35
閱讀 1685·2021-10-26 09:49
閱讀 3230·2021-09-02 15:11
閱讀 2075·2019-08-30 15:53
閱讀 2635·2019-08-30 15:53
閱讀 2916·2019-08-30 14:11
閱讀 3527·2019-08-30 12:59
閱讀 3241·2019-08-30 12:53