[Ubuntu] Apache 2 + MySQL + PHP ( + FastCGI ) on Ubuntu 8.04 Server

| 十一月 05, 2008 | 沒有迴響| 沒有引用| 10775 reads | Size: L, M, S | Edit: P, C, R |
| Category: Server, Ubuntu. and Tags: , , , , , . |

    最近試用了台灣一間主機商的 VPS,由於他有提供 Ubuntu,就想說來玩玩吧。Why?說起來慚愧,玩 Ubuntu 好一陣子了,但其實我不算有在 Ubuntu 上面跑過 AMP 這類的服務,之前多半是 FreeBSD 或 Debian 為主。當 Server 使用,大概就只有一台 Lab 的 File, Printer Server 有長期使用。

    而關於這間主機商的部份,現在還在體驗中,過陣子差不多了,應該會來篇聊聊心得。接著,來分享、紀錄一下 這台 Ubuntu 主機的 AMP(Apache, MySQL, PHP)的安裝過程。

    套件庫

    首先,要先處理好你的套件庫,否則可能有部份軟體會沒有 apt 來安裝。你可以下載我的 sources.list for 8.04 server 來用:

    # cd  /etc/apt
    # sudo  wget http://file.twntwn.info/static/ubuntu/sources.list.hardy.server
    # sudo  mv  sources.list.hardy.server  sources.list
    # sudo  apt-get  update

    這樣就完成套件庫的更新了。

     

     

    AMP with Prefork

    接下來是 Apache 的部份。如果要裝 Prefork 的版本,會比較簡單,也沒有相依的問題(要用 prefork 才能安裝 libapache2-mod-php5,相關的 PHP 套件裝起來比較沒問題。)

    首先來裝 Apache2:

    # sudo  apt-get  install  apache2  apache2-mpm-prefork

    這樣就完成 apache 的部份了,預設的目錄是 /var/www 。

    接著是 PHP 的部份:

    # sudo  apt-get  install  php5  libapache2-mod-php5  php5-cli  php5-dev  php5-gd  php5-imagick  php5-mcrypt  php5-xmlrpc

    當然,需要更多的 php5 extension 可以自己補。完成後,手動啟動一下 php5 for apache2 的 mod:

    # sudo  a2enmod  php5

    接著來安裝 MySQL:

    # sudo  apt-get  install  mysql-server  libapache2-mod-auth-mysql  php5-mysql

    現在的版本,安裝過程應該會問你 root for MySQL 的密碼,所以不需要額外的設定程序。

     

     

    AMP with Worker

    如果想要用 Worker,現在似乎只能夠用 fast-cgi 來跑。

    首先安裝 apache with mpm-worker:

    # sudo  apt-get  install  apache2  apache2-mpm-worker  libapache2-mod-fcgid

    接著是 php 的部份:

    # sudo  apt-get  install  php5  php5-cgi  php5-cli  php5-dev  php5-gd  php5-imagick  php5-mcrypt  php5-xmlrpc

    最後就是 MySQL:

    # sudo  apt-get  install  mysql-server  libapache2-mod-auth-mysql  php5-mysql

    一樣,現在的版本,會在安裝過程詢問你 root for MySQL 的密碼。

     

    完成後,接著要來設定 php 以 fast-cgi 的模式來跑。到 /etc/apache2/sites-available 的資料夾下,編輯 default 或是其他你要跑 PHP 的 Site 設定檔。

    在「<Directory ...> ... </Directory」那段裡面,加上兩行:

    AddHandler fcgid-script .php
    FCGIWrapper /usr/lib/cgi-bin/php5 .php

    並且在這段的「Options」,多加上個:

    ExecCGI

    這樣就可以了。

     

     

    TEST AMP

    在前面的兩個方法安裝完成後,就可以重開 Apache:

    # sudo  /etc/init.d/apache2  force-reload 

    到這邊,就差不多了。最後,可以寫個檔案,內容是:

    <? phpinfo(); ?>

    然後連到這個檔案,就可以確認 PHP、MySQL 正常啟用了嗎?

     

     

    Apache 設定與網頁壓縮

    前面的步驟的完成後,最後可能會依序去調整一下 AMP。

    Apache 的部份,首先要編輯的就是 /etc/apache2 下面的 apache可以先到 /etc/apache2/mod-available 下面看看,裡面有很多「MOD_NAME.load」和「MOD_NAME.conf」,看看有哪些想要用的 mods,需要啟用的就用:

    # sudo  a2enmod  MOD_NAME

    來啟動;以及編輯「MOD_NAME.conf」來調整設定。

     

    舉例來說,啟用網頁壓縮的 deflate 來說,方法就是:

    # sudo  a2enmod  deflate

    然後改一下設定,編輯 /etc/apache2/mods-available/deflate.conf,改為:

    <IfModule mod_deflate.c>
        DeflateCompressionLevel  6
        AddOutputFilterByType   DEFLATE  text/html  text/plain  text/xml
        AddOutputFilter   DEFLATE  html  htm  xml  css  js
    </IfModule>

    之類的。最後,重開 Apache:

    # sudo  /etc/init.d/apache2  force-reload 

    完成。

     

    另外,如果你有多個站台,站台設定可以寫在 /etc/apache2/sites-available 下面,偷懶一點可以直接複製 default 去修改。不過記得,如果跑 fast-cgi,要看一下前面的設定。改完後,例如檔案名稱 XXX,就用:

    # sudo  a2ensite  XXX

    來啟用。一樣,記得重開 Apache。

     

     

    PHP 設定 與 eAccelerator

    這邊,首先要注意,如果是跑 apache2-mpm-prefork,那麼 php.ini 的位置在「/etc/php5/apache2/php.ini」;如果是 fast-cgi 模式,那麼 php.ini 在「/etc/php5/cgi/php.ini」。

     

    如果要安裝 eAccelerator,到 這邊 下載最新版本,解壓縮並進入該資料夾。然後就可以開始編譯了:

    # sudo  /usr/bin/phpize  ;  sudo  ./configure  --enable-eaccelerator=shared  --with-php-config=/usr/bin/php-config  ;  sudo  make  ;  sudo  make  install

    接著幫 eAccelerator 建立快取的資料夾:

    # sudo  mkdir  /var/tmp/eaccelerator  ;  sudo  chmod  0777  /var/tmp/eaccelerator 

    接著加上 eAccelerator 的設定。在 /etc/php5/conf.d 下面增加一個檔案:

    # sudo  nano  /etc/php5/conf.d/eaccelerator.ini

    內容是:

    extension="eaccelerator.so"
    eaccelerator.shm_size="32"
    eaccelerator.cache_dir="/var/tmp/eaccelerator"
    eaccelerator.enable="1"
    eaccelerator.optimizer="1"
    eaccelerator.check_mtime="1"
    eaccelerator.debug="0"
    eaccelerator.filter=""
    eaccelerator.shm_max="0"
    eaccelerator.shm_ttl="0"
    eaccelerator.shm_prune_period="0"
    eaccelerator.shm_only="0"
    eaccelerator.compress="1"
    eaccelerator.compress_level="9"

    一樣,重開 Apache:

    # sudo  /etc/init.d/apache2  force-reload 

    完成。可以用 phpinfo來檢查一下。

     

     

    到這邊,應該就差不多了。

    Enjoy Your Ubuntu Server :)



Leave A Comment: