SimfaseDevEnv一個Vagrant構建的開發環境

SimfaseDevEnv

介紹

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

安裝與配置

1.安裝 VirtualBox 與 Vagrant

在啓動SimfaseDevEnv 環境以前,必須先安裝 VirtualBox 和 Vagrant.目前SimfaseDevEnv不支持VMware和parallels。

1.1 VirtualBox安裝

Mac與Linux不限制VirtualBox 版本,可是若是是Win用戶建議安裝 VitrualBox4.3.12(Win用戶點此連接便可下載)

Win用戶:VirtualBox安裝完成後;若是你的C盤空間不夠大,建議打開軟件窗口,找到設置入口,點擊常規 將默認虛擬電腦位置 更改到其餘空間比較大的分區。好比 D:\VirtualBox VMs .

1.2 Vagrant安裝

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 來執行上述的命令。另外也可使用 PuTTYPuTTYgen

建立了好 SSH 密鑰後,在SimfaseDevEnv目錄下SimfaseDevEnv.yaml 文件中的 authorize 屬性指明密鑰路徑(默認狀況下已經有一個賦值,若是你的authorize不在所對應位置請更改 。 在Win下 ~表示在C盤的user/用戶 目錄下)。

5 配置共享文件夾

5.1 Mac/Linux

SimfaseDevEnv目錄下的SimfaseDevEnv.yaml文件文件中的 folders 屬性列出了全部你想在 SimfaseDevEnv 環境共享的文件夾列表。這些文件夾中的文件如有變更,他們將會同步在你的本機與 SimfaseDevEnv 環境裏。你能夠將你須要的共享文件夾都配置進去。
map表示宿主機器的目錄,to表示SimfaseDevEnv環境目錄。

若是要開啓 NFS,只須要在SimfaseDevEnv.yaml中的 folders 中加入一個標識 type: nfs:

folders:
        - map: ~/Code
          to: /home/vagrant/Code
          type: nfs

5.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在線安裝插件失敗

畢竟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 表示你本次下載的軟件的版本號

6 Bash Aliases

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

注意: 從本機端應該只能使用這些非標準的鏈接端口來鏈接數據庫。由於當程序如 Laravel 運行在虛擬機時,在 Laravel 的數據庫配置文件中依然是配置使用默認的 3306 鏈接端口。

添加Nginx站點

在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 輔助命令

另外,提供了其餘一些快捷的建立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: udp

SimfaseDevEnv默認IP

SimfaseDevEnv的默認ip是192.168.11.11,若是須要更換成其餘ip在SimfaseDevEnv.yaml中配置便可。

備份與恢復

SimfaseDevEnv環境還提供方便的備份與恢復工具。爲了方便你們升級SimfaseDevEnv時或者遷移數據時使用。

備份MySql

backup-mysql

此命令將mysql數據直接備份至 /vagrant/src/backup/mysql/db-年月日時分秒.sql

同時備份至 /vagrant/src/backup/mysql/latest.sql

恢復Mysql

import-mysql db-年月日時分秒.sql

此命令將mysql數據直接將 /vagrant/src/backup/mysql/db-年月日時分秒.sql 恢復至當前數據庫

備份Nginx

backup-nginx

此命令將/usr/local/etc/nginx 全部配置文件直接壓縮備份至 /vagrant/src/backup/nginx/年月日時分秒.tar.gz

同時備份至 /vagrant/src/backup/nginx/latest.tar.gz

恢復Nginx

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

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

Nginx的配置目錄在/etc/nginx/nginx.conf

sudo service nginx start //開啓
sudo service nginx stop //關閉
sudo service nginx restart//重啓

MySql

MySql的配置文件在/etc/mysql/my.cnf

sudo service mysql start //開啓
sudo service mysql stop //關閉
sudo service mysql restart//重啓

Memcached

Memcached的配置文件是 /etc/memcached.conf

sudo service memcached start //開啓
sudo service memcached stop //關閉
sudo service memcached restart//重啓

Redis

Redis的配置文件是redis.conf

Redis默認是不自動啓動的,須要手動啓動。啓動方法

sudo redis-server /etc/redis/redis.conf

關閉redis

sudo pkill redis-server

Nodejs

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

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實現方法

SimfaseDevEnv環境 是基於ubuntu官方提供的vagrant box之上進行的擴展

SimfaseDevEnv環境的實現過程腳本都放在 SimfaseDevEnv/src/install中,有興趣的開發者能夠看看,有任何bug請不要吝嗇提交issue。可是不要在當前SimfaseDevEnv中執行這些腳本,由於當前的SimfaseDevEnv已經將初始環境都安裝好了。

相關文章
相關標籤/搜索