SimfaseDevEnv是爲php開發者提供的開發環境,構建在vagrant之上;Vagrant的Vagrangfile配置文件是在Homestead的ruby腳本之上進行的改變。總體與Homestead很像,可是作了一些更改,爲了更適應中國國內的開發網絡環境。php
相對於Homestead,SimfaseDevEnv有如下主要不一樣的地方html
vagrant box的安裝是本地導入的,不須要在線安裝。(國內的網絡環境太差)node
PHP版本是5.5 並無使用php7(php7不是很差,它很優秀,可是目前國內生產環境用php7的很少)mysql
全平臺(osx/linux/Win)支持nfs(並非Windows使用samba很差,只是samba不支持軟鏈和硬鏈 開發symfony、nodejs等項目的時候就煩惱了)linux
軟件工具能使用國內源的都切換成了國內源,好比ubuntu軟件源、composer 、cnpm[taobao]nginx
不生成相似於 .Homestead 的用戶配置文件。(爲的是能夠靈活的安裝多個SimfaseDevEnv)laravel
SimfaseDevEnv 能夠在任何 Windows、Mac 或 Linux 上面運行,裏面包含了 Nginx 網頁服務器、PHP 5.五、MySQL、Redis、Memcached Nodejs。git
若是使用的Windows,須要在BIOS中啓用硬件虛擬化(VT-x)。github
Ubuntu 14.04web
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
在啓動SimfaseDevEnv 環境以前,必須先安裝 VirtualBox 和 Vagrant.目前SimfaseDevEnv不支持VMware和parallels。
Mac與Linux不限制VirtualBox 版本,可是若是是Win用戶建議安裝 VitrualBox4.3.12(Win用戶點此連接便可下載)
Win用戶:VirtualBox安裝完成後;若是你的C盤空間不夠大,建議打開軟件窗口,找到設置入口,點擊常規 將默認虛擬電腦位置 更改到其餘空間比較大的分區。好比 D:\VirtualBox VMs .
Mac與Linux不限制 Vagrant 版本,可是若是是Win用戶要求安裝Vagran 1.7.4(Win用戶點此連接便可下載)
由於Vagrant1.8.1 在win7/win10上有很多issue,有些問題仍是很嚴重的。
由於找不到好的方便的免費的http server。索性放到的百度雲盤,若是有機會爭取切換到咱們公司的服務器上去。
當下載好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
由於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
此時,就會看 SimfaseDevEnv根目錄看到多出了SimfaseDevEnv.yaml等4個文件。
而後須要編輯 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/用戶 目錄下)。
SimfaseDevEnv目錄下的SimfaseDevEnv.yaml文件文件中的 folders 屬性列出了全部你想在 SimfaseDevEnv 環境共享的文件夾列表。這些文件夾中的文件如有變更,他們將會同步在你的本機與 SimfaseDevEnv 環境裏。你能夠將你須要的共享文件夾都配置進去。
map表示宿主機器的目錄,to表示SimfaseDevEnv環境目錄。
若是要開啓 NFS,只須要在SimfaseDevEnv.yaml中的 folders 中加入一個標識 type: nfs:
folders: - map: ~/Code to: /home/vagrant/Code type: nfs
若是是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
提示 x.x.x 表示你本次下載的軟件的版本號
SimfaseDevEnv目錄下的aliases文件中,咱們增長了不少命令,方便在使用過程當中快速操做(後面的章節會詳細講解用法),若是要增長 Bash aliases 到你的 SimfaseDevEnv 封裝包中,只要將內容添 到aliases 文件中便可。
編輯完 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 環境,在終端機裏進入 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
注意: 從本機端應該只能使用這些非標準的鏈接端口來鏈接數據庫。由於當程序如 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:\Windows\System32\drivers\etc\hosts中。
添加虛擬域名有兩種方法,第一種方法直接指向到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站點的函數如:
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配置,一些非通用的配置仍是須要開發者手動的添加與編輯。
在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: udp
SimfaseDevEnv的默認ip是192.168.11.11,若是須要更換成其餘ip在SimfaseDevEnv.yaml中配置便可。
SimfaseDevEnv環境還提供方便的備份與恢復工具。爲了方便你們升級SimfaseDevEnv時或者遷移數據時使用。
backup-mysql
此命令將mysql數據直接備份至 /vagrant/src/backup/mysql/db-年月日時分秒.sql
同時備份至 /vagrant/src/backup/mysql/latest.sql
import-mysql db-年月日時分秒.sql
此命令將mysql數據直接將 /vagrant/src/backup/mysql/db-年月日時分秒.sql 恢復至當前數據庫
backup-nginx
此命令將/usr/local/etc/nginx 全部配置文件直接壓縮備份至 /vagrant/src/backup/nginx/年月日時分秒.tar.gz
同時備份至 /vagrant/src/backup/nginx/latest.tar.gz
import-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恢復到當前系統
PHP的配置目錄在/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
Nginx的配置目錄在/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
Nodejs 是使用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
Composer 已經安裝,同時將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環境 是基於ubuntu官方提供的vagrant box之上進行的擴展
SimfaseDevEnv環境的實現過程腳本都放在 SimfaseDevEnv/src/install中,有興趣的開發者能夠看看,有任何bug請不要吝嗇提交issue。可是不要在當前SimfaseDevEnv中執行這些腳本,由於當前的SimfaseDevEnv已經將初始環境都安裝好了。