天天看點

LNMP平台部署及應用

     LAMP平台應該是目前應用最為廣泛的網站伺服器架構,但随着Nginx在企業中的使用越來越多,LNMP(或LEMP)架構也受到越來越多Linux系統工程師的青睐,其中"E"來自于Nginx的發音[engine x]

建構LNMP網站平台

    建構LNMP平台需要Linux伺服器、Nginx伺服器、MySQL資料庫、PHP解析環境,具體方法和LAMP差不多,Nginx伺服器的搭建方法上篇部落格已經介紹了,下面以安裝好的Nginx伺服器為基礎,搭建LNMP平台

1. 安裝MySQL資料庫

    MySQL資料庫的安裝方法以前講過了,配置指令就不做解釋了

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

<code>[root@localhost ~]</code><code># yum -y install ncurses-devel</code>

<code>[root@localhost ~]</code><code># tar zxf cmake-2.8.12.tar.gz </code>

<code>[root@localhost ~]</code><code># cd cmake-2.8.12</code>

<code>[root@localhost cmake-2.8.12]</code><code># ./configure &amp;&amp; gmake &amp;&amp; gmake install</code>

<code>[root@localhost cmake-2.8.12]</code><code># cd ~</code>

<code>[root@localhost ~]</code><code># tar zxf mysql-5.5.38.tar.gz </code>

<code>[root@localhost ~]</code><code># cd mysql-5.5.38</code>

<code>[root@localhost mysql-5.5.38]</code><code># cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 </code>

<code>-DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=</code><code>/etc/</code>

<code>[root@localhost mysql-5.5.38]</code><code># make &amp;&amp; make install</code>

<code>[root@localhost mysql-5.5.38]</code><code># cp support-files/my-medium.cnf /etc/my.cnf </code>

<code>cp</code><code>:是否覆寫</code><code>"/etc/my.cnf"</code><code>? y</code>

<code>[root@localhost mysql-5.5.38]</code><code># cp support-files/mysql.server /etc/init.d/mysqld</code>

<code>[root@localhost mysql-5.5.38]</code><code># chmod +x /etc/init.d/mysqld </code>

<code>[root@localhost mysql-5.5.38]</code><code># chkconfig --add mysqld</code>

<code>[root@localhost mysql-5.5.38]</code><code># echo "PATH=$PATH:/usr/local/mysql/bin" &gt;&gt; /etc/profile</code>

<code>[root@localhost mysql-5.5.38]</code><code># . /etc/profile</code>

<code>[root@localhost mysql-5.5.38]</code><code># groupadd mysql</code>

<code>[root@localhost mysql-5.5.38]</code><code># useradd -M -s /sbin/nologin mysql -g mysql</code>

<code>[root@localhost mysql-5.5.38]</code><code># chown -R mysql:mysql /usr/local/mysql</code>

<code>[root@localhost mysql-5.5.38]</code><code># /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql/ </code>

<code>--datadir=</code><code>/usr/local/mysql/data/</code> <code>--user=mysql</code>

<code>[root@localhost mysql-5.5.38]</code><code># service mysqld start</code>

<code>Starting MySQL..                                           [确定]</code>

<code>[root@localhost mysql-5.5.38]</code><code># mysqladmin -u root password 123456</code>

2. 安裝PHP解析環境

    添加FPM子產品,用來對PHP解析執行個體進行管理、優化解析效率

<code>[root@localhost ~]</code><code># yum -y install gd libxml2-devel libjpeg-devel libpng-devel</code>

<code>[root@localhost ~]</code><code># tar zxf php-5.3.28.tar.gz </code>

<code>[root@localhost ~]</code><code># cd php-5.3.28/</code>

<code>[root@localhost php-5.3.28]</code><code># ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql </code>

<code>--with-config-</code><code>file</code><code>-path=</code><code>/usr/local/php5</code> <code>--</code><code>enable</code><code>-mbstring --</code><code>enable</code><code>-fpm --with-jpeg-</code><code>dir</code><code>=</code><code>/usr/lib</code>

<code>[root@localhost php-5.3.28]</code><code># make &amp;&amp; make install</code>

<code>[root@localhost php-5.3.28]</code><code># cp php.ini-development /usr/local/php5/php.ini</code>

<code>[root@localhost php-5.3.28]</code><code># ln -s /usr/local/php5/bin/* /usr/local/bin/</code>

<code>[root@localhost php-5.3.28]</code><code># ln -s /usr/local/php5/sbin/* /usr/local/sbin/</code>

<code>[root@localhost ~]</code><code># tar zxf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz </code>

<code>[root@localhost ~]</code><code># cd ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x/</code>

<code>[root@localhost php-5.3.x]</code><code># cp ZendGuardLoader.so /usr/local/php5/lib/php/</code>

<code>[root@localhost php-5.3.x]</code><code># vim /usr/local/php5/php.ini </code>

<code>zend_extension=</code><code>/usr/local/php5/lib/php/ZendGuardLoader</code><code>.so</code>

<code>zend_loader.</code><code>enable</code><code>=1</code>

3. 配置Nginx支援PHP環境

    若要讓Nginx能夠解析PHP網頁,有兩種方法:

方式一:充當中介,将通路PHP頁面的Web請求轉交給其他伺服器(LAMP),進而實作由Nginx負責靜态頁面、LAMP負責動态頁面的分離效果

方式二:通過使用PHP的FPM子產品來調用本機的PHP環境

一、對于第一種方式,需要配置Nginx

<code>[root@localhost ~]</code><code># vim /usr/local/nginx/conf/nginx.conf</code>

<code>server {</code>

<code>……</code>

<code> </code><code>location ~ \.php$ {</code>

<code>     </code><code>proxy_pass   http:</code><code>//192</code><code>.168.1.100;     </code><code>//Apache</code><code>伺服器的監聽位址 </code>

<code>   </code><code>}</code>

<code>}</code>

二、本篇部落格采用第二種方式,配置方法如下:

(1)啟用php-fpm程序

30

31

32

33

34

35

36

<code>[root@localhost ~]</code><code># cd /usr/local/php5/etc/</code>

<code>[root@localhost etc]</code><code># cp php-fpm.conf.default php-fpm.conf</code>

<code>[root@localhost etc]</code><code># useradd -M -s /sbin/nologin php</code>

<code>[root@localhost etc]</code><code># vim php-fpm.conf</code>

<code>pid = run</code><code>/php-fpm</code><code>.pid             </code><code>//</code><code>确認pid檔案位置</code>

<code>user = php                         </code>

<code>group = php</code>

<code>pm.start_servers = 20             </code><code>//</code><code>啟動時開啟的程序數</code>

<code>pm.min_spare_servers = 5          </code><code>//</code><code>最少空閑程序數</code>

<code>pm.max_spare_servers = 35</code>

<code>pm.max_children = 50              </code><code>//</code><code>最多空閑程序數</code>

<code>[root@localhost etc]</code><code># /usr/local/sbin/php-fpm       //啟動php-fpm程序</code>

<code>[root@localhost etc]</code><code># netstat -anpt | grep php-fpm</code>

<code>tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      123330</code><code>/php-fpm</code>

<code>[root@localhost etc]</code><code># vim /etc/init.d/nginx      //添加以下内容,以便php-fpm程式随Nginx的控制啟動或關閉</code>

<code>PROG_FPM=</code><code>"/usr/local/sbin/php-fpm"</code>

<code>PIDF_FPM=</code><code>"/usr/local/php5/var/run/php-fpm.pid"</code>

<code>case</code> <code>"$1"</code> <code>in</code>

<code>start)</code>

<code>netstat</code> <code>-anpt | </code><code>grep</code> <code>"php-fpm"</code> <code>&amp;&gt; dev</code><code>/null</code> <code>&amp;&amp; pgrep </code><code>"php-fpm"</code> <code>&amp;&gt; </code><code>/dev/null</code>

<code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ]; </code><code>then</code>

<code>echo</code> <code>"php-fpm is running"</code>

<code>else</code>

<code>$PROG_FPM</code>

<code>fi</code>

<code>;;</code>

<code>stop)</code>

<code>killall -s QUIT php-fpm</code>

<code>echo</code> <code>"php-fpm is down"</code>

<code>esac</code>

(2)配置Nginx支援PHP解析

<code>server {                                       </code><code>//</code><code>找到以下檔案,去掉</code><code>#</code>

<code>        </code><code>location ~ \.php$ {</code>

<code>            </code><code>root           </code><code>/var/www/ysf</code><code>;       </code><code>//PHP</code><code>網頁文檔根目錄</code>

<code>            </code><code>fastcgi_pass   127.0.0.1:9000;     </code><code>//php-fpm</code><code>的監聽位址</code>

<code>            </code><code>fastcgi_index  index.php;          </code><code>//PHP</code><code>首頁檔案</code>

<code>            </code><code>include        fastcgi_params;     </code><code>//</code><code>包括fastcgi_params樣本配置</code>

<code>        </code><code>}</code>

<code>[root@localhost ~]</code><code># service nginx restart      //重新開機服務即可生效</code>

(3)PHP頁面通路測試

<code>[root@localhost ~]</code><code># vim /var/www/ysf/test.php     //建立測試網頁</code>

<code>&lt;?php</code>

<code>$link=mysql_connect(</code><code>"localhost"</code><code>,</code><code>"root"</code><code>,</code><code>"123456"</code><code>);</code>

<code>if</code><code>($link) </code><code>echo</code> <code>"welcome to database!!!"</code><code>;</code>

<code>mysql_close();</code>

<code>?&gt;</code>

    先建立一個測試檔案,在浏覽器中通路,測試PHP是否正常解析,以及能否通路MySQL資料庫

在LNMP平台中部署Web應用

    LNMP平台與LAMP平台是非常相似的,差別主要在于使用Web服務軟體的不同,而這與使用PHP開發的Web應用程式并無太大關系。下面以“天空網絡電影系統”為例,介紹在LNMP平台部署過程

    天空網絡電影系統(簡稱SKYUC ),是一套PHP視訊點播系統,支援各種P2P流媒體軟體,應用範圍非常廣泛,其官網位址為http://www.skyuc.com/ 

1. 下載下傳并調整程式代碼 

<code>[root@localhost ~]</code><code># yum -y install unzip</code>

<code>[root@localhost ~]</code><code># unzip SKYUC.v3.4.2.SOURCE.zip             //将下載下傳的SKYUC檔案解壓</code>

<code>[root@localhost ~]</code><code># mv SKYUC.v3.4.2.SOURCE/wwwroot /var/www/ysf/skyuc    //将wwwroot移到網站根目錄</code>

<code>[root@localhost ~]</code><code># cd /var/www/ysf/skyuc/                               //調整相關權限</code>

<code>[root@localhost skyuc]</code><code># chown -R php:php admincp/ data/ templates/ upload/</code>

<code>[root@localhost skyuc]</code><code># mysql -u root -p </code>

<code>Enter password: </code>

<code>……                                </code><code>//</code><code>建立skyuc專用資料庫及授權使用者,降低資料庫的風險</code>

<code>mysql&gt; create database skyucdb;          </code>

<code>Query OK, 1 row affected (0.00 sec)</code>

<code>mysql&gt; grant all on skyucdb.* to ysf@localhost identified by </code><code>"123456"</code><code>;</code>

<code>Query OK, 0 rows affected (0.00 sec)</code>

2. 安裝Web應用

3. 通路Web應用系統

本文轉自 楊書凡 51CTO部落格,原文連結:http://blog.51cto.com/yangshufan/2060600,如需轉載請自行聯系原作者