Yii系列(1)打造虛擬開發環境及Yii的安裝配置

最近由於工做開始接觸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

添加box

我須要一個ubuntu系統,因此我經過vagrant添加目前已經有隻ubuntu系統的空box。nginx

一、參考資料:官方文檔添加boxlaravel

二、添加box:vagrant box add puphpet/ubuntu1404-x64git

三、建立一個文件夾,用來初始化box:mkdir complexweb

四、進入complex文件夾:cd complexsql

五、查看目前有幾個box:vagrant box listjson

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前須要添加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全部開啓的進程

安裝PHP7

一、參考文章,其實這篇文章已經說了很詳細了,下面再簡單的重複下

二、執行如下命令,能夠根據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基本配置與參數說明

    注意:若是不成功,多是nginx相關配置問題,請查看nginx錯誤日誌,根據錯誤日誌返回的信息穀歌。nginx錯誤日誌文件通常是var/log/nginx中的error.log.也可經過nginx.conf查到錯誤日誌文件存放目錄.

    安裝MySQL

    一、參考資料:官方文檔

    二、安裝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

    一、參考資料:官方文檔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

    安裝配置Yii1.1

    安裝配置Yii2

    在安裝時,按照官方文檔提供的命令執行時,出了些錯誤。如下相關命令和配置都是在通過本機測試成功以後的結果。安裝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錯誤日誌。

    注意:寫的有點累了,有些還有一小節待續。這些是在本寶寶安裝完以後的回憶,其實遇到挺多問題,這裏可能並無寫到,由於我忘了,嘿嘿,歡迎你們在評論裏交流。

    相關文章
    相關標籤/搜索