天天看點

php架構laravel 5.1環境建構(CentOS 6.5)之FastCGI

1、理論部分

Laravel是一套簡潔、優雅的PHP Web開發架構(PHP Web Framework)。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你建構一個完美的網絡APP,而且每行代碼都可以簡潔、富于表達力。

2、實驗部分

2.1、實驗環境

lfSer:

hostname=laravel-fastCGI

ipaddress=10.168.0.177

client:

hostnmae=client

ipaddress=10.168.0.8

2.2、yum源的安裝

In lfSer

1

2

3

4

<code>yum </code><code>install</code> <code>-y https:</code><code>//mirror</code><code>.webtatic.com</code><code>/yum/el6/latest</code><code>.rpm </code>

<code>yum </code><code>install</code> <code>-y httpd php56w php56w-fpm php56w-mysql php56w-pdo php56w-mbstring php56w-mcrypt php56w-pear</code>

<code>yum </code><code>install</code> <code>-y mysql mysql-server</code>

<code>yum -y </code><code>install</code> <code>wget unzip</code>

2.3、配置部分

2.3.1、step1

1)檢查是否引入php子產品(預設開啟),主配置檔案:

<code>grep</code> <code>^Include </code><code>/etc/httpd/conf/httpd</code><code>.conf</code>

包含如下内容:

<code>Include conf.d/*.conf</code>

檢視PHP支援子產品配置檔案:

<code>less</code> <code>/etc/httpd/conf</code><code>.d</code><code>/php</code><code>.conf</code>

5

6

7

8

9

10

11

<code>&lt;IfModule prefork.c&gt;</code>

<code>  </code><code>LoadModule php5_module modules</code><code>/libphp5</code><code>.so</code>

<code>&lt;</code><code>/IfModule</code><code>&gt;</code>

<code>&lt;IfModule worker.c&gt;</code>

<code>  </code><code>LoadModule php5_module modules</code><code>/libphp5-zts</code><code>.so</code>

<code>AddHandler php5-script .php</code>

<code>AddType text</code><code>/html</code> <code>.php</code>

<code>DirectoryIndex index.php</code>

2)關閉apache的php子產品

<code>mv</code> <code>/etc/httpd/conf</code><code>.d</code><code>/php</code><code>.conf </code><code>/etc/httpd/conf</code><code>.d</code><code>/php</code><code>.conf.default</code>

2.3.2、step2

啟動httpd&amp;mysqld服務:

<code>/etc/init</code><code>.d</code><code>/php-fpm</code> <code>start</code>

<code>chkconfig php-fpm on</code>

<code>/etc/init</code><code>.d</code><code>/httpd</code> <code>start</code>

<code>chkconfig httpd on</code>

<code>/etc/init</code><code>.d</code><code>/mysqld</code> <code>start</code>

<code>chkconfig mysqld on</code>

注:關于MySQL的安全配置請運作,這裡不再詳述!

<code>mysql_secure_installation</code>

2.3.3、step3

配置httpd服務

1)vim編輯/etc/httpd/conf/httpd.conf

啟用并更改ServerName(去掉ServerName前面的#)

啟用NameVirtaulHost(去掉ServerName前面的#)

<code>ServerName www.cmdschool.org:80</code>

<code>NameVirtualHost *:80</code>

2.3.4、step4(可選)

1)下載下傳composer并全局安裝

<code>curl -sS https:</code><code>//getcomposer</code><code>.org</code><code>/installer</code> <code>| php</code>

2)檢視全局指令目錄

<code>echo</code> <code>$PATH</code>

顯示如下:

<code>/usr/local/sbin</code><code>:</code><code>/usr/local/bin</code><code>:</code><code>/sbin</code><code>:</code><code>/bin</code><code>:</code><code>/usr/sbin</code><code>:</code><code>/usr/bin</code><code>:</code><code>/root/bin</code>

3)移動composer執行檔案到全局指令目錄(選擇分隔符":"的一段路徑)

<code>mv</code> <code>composer.phar </code><code>/usr/local/bin/composer</code>

2.3.5、step5

安裝架構

1)下載下傳架構

<code>wget http:</code><code>//down</code><code>.golaravel.com</code><code>/laravel/laravel-master</code><code>.zip</code>

2)解壓架構

<code>unzip laravel-master.zip</code>

3)拷貝架構到指定目錄

<code>mkdir</code> <code>/var/www/www</code><code>.cmdschool.org</code>

<code>cp</code> <code>-rf laravel-master/* www.cmdschool.org/</code>

2.3.6、step6

權限設定

1)目錄權限設定

<code>chown</code> <code>:apache -R www.cmdschool.org</code>

<code>chmod</code> <code>770 -R www.cmdschool.org</code>

2)確定selinux是Enforcing狀态:

<code>getenforce</code>

3)恢複預設的selinux type:

<code>restorecon -RFvv </code><code>/var/www/www</code><code>.cmdschool.org/</code>

4)檢查目前的selinux type:

<code>ll -dZ </code><code>/var/www/www</code><code>.cmdschool.org/</code>

2.3.7、step7

設定虛拟目錄:

vim編輯/etc/httpd/conf.d/www.cmdschool.org.conf

12

13

14

15

16

17

18

19

20

<code>&lt;VirtualHost *:80&gt;</code>

<code>    </code><code>ServerName www.cmdschool.org</code>

<code>    </code><code>DocumentRoot </code><code>/var/www/www</code><code>.cmdschool.org</code><code>/public/</code>

<code>    </code><code>&lt;Directory </code><code>/var/www/www</code><code>.cmdschool.org</code><code>/public/</code><code>&gt;</code>

<code>            </code><code>Options FollowSymlinks</code>

<code>            </code><code>DirectoryIndex index.php</code>

<code>            </code><code>AllowOverride All</code>

<code>            </code><code>Order allow,deny</code>

<code>            </code><code>Allow from all</code>

<code>    </code><code>&lt;</code><code>/Directory</code><code>&gt;</code>

<code>    </code><code>&lt;LocationMatch </code><code>"^(.*\.php)$"</code><code>&gt;</code>

<code>            </code><code>ProxyPassMatch fcgi:</code><code>//127</code><code>.0.0.1:9000</code><code>/var/www/www</code><code>.cmdschool.org</code><code>/public/</code>

<code>    </code><code>&lt;</code><code>/LocationMatch</code><code>&gt;</code>

<code>    </code><code>LogLevel debug</code>

<code>    </code><code>ErrorLog </code><code>/var/log/apache2/www</code><code>.cmdschool.org.error.log</code>

<code>    </code><code>CustomLog </code><code>/var/log/apache2/www</code><code>.cmdschool.org.access.log combined</code>

<code>&lt;</code><code>/VirtualHost</code><code>&gt;</code>

8)重新開機httpd服務:

<code>/etc/init</code><code>.d</code><code>/php-fpm</code> <code>restart</code>

<code>/etc/init</code><code>.d</code><code>/httpd</code> <code>restart</code>

2.3.8、step8

設定防火牆:

vim編輯/etc/sysconfig/iptables

<code>-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT</code>

重新開機防火牆:

<code>/etc/init</code><code>.d</code><code>/iptables</code> <code>restart</code>

2.4.9、step9

In Client:

以下在windows用戶端下測試:

1)修改本機的hosts(相當于dns解析)

<code>notepad %SystemRoot%\System32\drivers\etc\hosts</code>

增加如下内容:

<code>10.168.0.177 www.cmdschool.org</code>

2)浏覽器測試

浏覽器測試你可以看到如下提示:

<a href="http://s1.51cto.com/wyfs02/M00/77/34/wKioL1ZlQaPBO86GAAA0JhpSOok107.png" target="_blank"></a>

3)日志的排查方法

In lfSer:

參閱如下日志可知屬于代碼級别的錯誤,排查方法如下:

配置檔案日志:

tail -f /var/log/apache2/www.cmdschool.org.error.log

<a href="http://s1.51cto.com/wyfs02/M00/77/35/wKioL1ZlQpfAusT_AAEP8HDUDio442.png" target="_blank"></a>

監看以上資訊表明PHP代碼已經完成送到fastCGI網關

tail -f /var/log/php-fpm/error.log

<a href="http://s1.51cto.com/wyfs02/M00/77/36/wKiom1ZlQp3SwsZWAABUkDLyr4Q598.png" target="_blank"></a>

監看以上日志無任何反應,證明php-fpm解析php代碼無任何異常。

tail -f /var/www/www.cmdschool.org/storage/logs/laravel.log

<a href="http://s3.51cto.com/wyfs02/M02/77/36/wKiom1ZlQ6aw2VkuAAIdI-OVT4M009.png" target="_blank"></a>

監看以上資訊發現錯誤,可見這種錯誤是架構已經預見的,應該由php程式員處理,與運維無關。

本文轉自 tanzhenchao 51CTO部落格,原文連結:http://blog.51cto.com/cmdschool/1720282,如需轉載請自行聯系原作者