最近由於工做開始接觸Yii,以前開發使用laravel習慣用vagrant。因此,此次嘗試着打造一個box,專門用來寫Yii框架的項目。php
在此次打造box,收穫了不少:
1)更加熟悉了nginx的配置;
2)學會了看nginx的錯誤日誌;
3)提升瞭解決問題的能力等等。
但願你們也能經過,玩玩如何打造一個本身的box學到不少東西。html個人box配置是:
ubuntu+PHP7.1.0alpha2+ginx/1.10.1+MySQL5.5.49+Composer1.1.3.
mysql在開始以前,個人電腦已經裝好了Vagrant和Virtual Box。windows安裝這兩個軟件時,請記住經過BIOS來開啓系統的硬件虛擬化(VT-x)。
這裏再推薦一個Mac下用的終端iTerm2
,超好用。linux
我須要一個ubuntu系統,因此我經過vagrant添加目前已經有隻ubuntu系統的空box。nginx
一、參考資料:官方文檔添加boxlaravel
二、添加box:vagrant box add puphpet/ubuntu1404-x64
git
三、建立一個文件夾,用來初始化box:mkdir complex
web
四、進入complex文件夾:cd complex
sql
五、查看目前有幾個box:vagrant box list
json
dev (virtualbox, 0) laravel/homestead (virtualbox, 0.4.4) puphpet/ubuntu1404-x64 (virtualbox, 20151201)
六、初始化box:vagrant init puphpet/ubuntu1404-x64
七、你會發現當前complex
目錄下,有一個文件名爲Vagrantfile
,這個文件爲puphpet/ubuntu1404-x64
這個盒子的初始化文件
八、Vagrantfile
文件配置,文件修改兩個地方就好:
設置config.vm.network
這個參數,IP
能夠隨意配;
config.vm.synced_folder
中,第一個參數是我mac下的工做目錄,第二個參數是我box中的工做目錄。經過這個設置,將本機和box中的文件打通,兩個文件夾內容將會相同,若是有一個文件夾內容有什麼變化,另外一個文件夾也會有相同的變化。你們根據本身的目錄配置便可,最好採用絕對路徑
# using a specific IP. config.vm.network "private_network", ip: "192.168.22.55" # Share an additional folder to the guest VM. The first argument is # the path on the host to the actual folder. The second argument is # the path on the guest to mount the folder. And the optional third # argument is a set of non-required options. config.vm.synced_folder "~/PhpstormProjects", "/www"
九、執行vagrant up
,便可開啓box。
十、執行vagrant ssh
,便可進入box中。
十一、如過修改了Vagrantfile
,請記住重啓boxvagrant reload
一、參考資料:官方文檔nginx安裝
二、安裝nginx前須要添加nginx_signing.key
,下載地址,官方文檔裏也有下載地址。我下載到了本機上與box打通的文件夾中,再進入box,執行如下命令:sudo apt-key add nginx_signing.key
三、用代號取代ubuntu的發行版本代號,本系統是ubuntu1404-x64
,因此代號爲trusty
;經過執行sudo vi /etc/apt/sources.list
,在/etc/apt/sources.list
文件尾部中添加,如下代碼:
deb http://nginx.org/packages/ubuntu/ trusty nginx deb-src http://nginx.org/packages/ubuntu/ trusty nginx
wq
保存,相關vi編輯操做請谷歌。
四、安裝nginx,執行如下命令apt-get update
apt-get install nginx
五、進入/etc/nginx
文件夾中,修改nginx.conf
文件,將 sendfile on;
修改成sendfile off;
由於 VirtualBox關於sendfile
有一個bug,這個bug可能會致使文件損壞或者不更新文件,因此設置爲off
六、nginx經常使用命令:
sudo service nginx restart 重啓nginx ps -ax | grep nginx 查看nginx全部開啓的進程
一、參考文章,其實這篇文章已經說了很詳細了,下面再簡單的重複下
二、執行如下命令,能夠根據apt-cache search php7
的執行結果選擇大家想要安裝的版本和模塊便可:
$ sudo apt-get install -y language-pack-en-base $ sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php $ sudo apt-get update $ apt-cache search php7 $ sudo apt-get install php7.1 php7.1-cli php7.1-fpm php7.1-gd php7.1-json php7.1-mysql php7.1-readline
三、測試php7是否已經安裝成功
添加域名,在本機 /etc/hosts文件中添加192.168.22.55 test.yuan.com
在box中,進入/www
目錄,執行touch index.php
建立index.php文件,並在文件中添加如下內容
<?php phpinfo(); ?>
進入/etc/nginx/conf.d
文件夾,執行sudo cp default.conf test.yuan.com.conf
,並修改內容爲
server { listen 80; server_name test.yuan.com; index index.html index.htm index.php default.php; root /www; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { try_files $uri $uri/ /index.php?$query_string; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { fastcgi_pass unix:/run/php/php7.1-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
進入瀏覽器,輸入test.yuan.com
便可
四、若是想更加了解nginx相關配置參數信息,可參閱:nginx基本配置與參數說明
var/log/nginx
中的error.log
.也可經過nginx.conf
查到錯誤日誌文件存放目錄.一、參考資料:官方文檔
二、安裝MySQL:sudo apt-get install mysql-server
,安裝過程當中會要求對root用戶設置密碼,輸入你想要的密碼便可。
三、MySQL經常使用命令:
mysql -u username -p mysql登錄 exit 退出 sudo service mysql status mysql運行狀態 sudo service mysql stop 中止運行mysql sudo service mysql start 開啓mysql
四、在本機,我使用Sequel Pro(mysql圖形話界面管理工具)。鏈接box中mysql須要經過ssh鏈接,ssh key
經過執行vagrant ssh-config
命令便可知道。鏈接配置如圖:
一、參考資料:官方文檔Composer:Getting Started
二、執行如下命令便可得到最新版本的composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');"
三、全局安裝,執行如下命令便可:mv composer.phar /usr/local/bin/composer
composer
在安裝時,按照官方文檔提供的命令執行時,出了些錯誤。如下相關命令和配置都是在通過本機測試成功以後的結果。安裝Yii2的前提是,已經安裝成功Composer。
一、參考資料:Yii 2.0 權威指南 安裝 Yii
二、經過執行composer self-update
確保Composer已經爲最新版本。
三、執行如下命令便可安裝Yii2
composer global require fxp/composer-asset-plugin --no-plugins #第一條命令,安裝 Composer asset plugin composer create-project --prefer-dist yiisoft/yii2-app-basic yii #將Yii安裝在名爲yii的安裝目錄,你也能夠其餘目錄名。
四、在本機etc/hosts
配置域名192.168.22.55 yii.yuan.com
五、nginx配置,在box中/etc/nginx/conf.d
目錄中建立yii.yuan.com.conf
,其內容以下:
server { listen 80; server_name yii.yuan.com; index index.php; root /www/yii/web; charset utf-8; client_max_body_size 128M; #access_log /var/log/nginx/log/host.access.log main; location / { try_files $uri $uri/ /index.php?$query_string; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/run/php/php7.1-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.(ht|svn|git) { deny all; } }
六、請在本機和box中都執行此命令:sudo chmod -R 777 yii
賦予yii文件夾最高權限,以防在訪問此項目時,出現權限錯誤。
七、若是出現502錯誤或者not input file specified錯誤必定跟nginx配置有關,請仔細看nginx錯誤日誌。
注意:寫的有點累了,有些還有一小節待續。這些是在本寶寶安裝完以後的回憶,其實遇到挺多問題,這裏可能並無寫到,由於我忘了,嘿嘿,歡迎你們在評論裏交流。