2012年11月12日 星期一

安裝 - FreeBSD + Nginx 環境搭建教程(推薦) [原創 2009-12-9 14:01:49]

安裝 - FreeBSD + Nginx 環境搭建教程(推薦) [原創 2009-12-9 14:01:49]   
資料來源:http://icandata.blog.hexun.com.tw/41806505_d.html

為什麽要選擇 FreeBSD?

官方網站www.freebsd.org 中文網站:http://www.freebsd.org/zh_CN/
FreeBSD是一個優秀的unix操作系統,基於寬松的BSD協議,是完美的企業級操作系統,以重點突出性能和安全而聞名,行業領先的企業多年以來一直使用FreeBSD服務器。具有同所有其它開源軟件操作系統競爭的高級性能。
  • Unix兼容性強
  • 速度快
  • 極其穩定、可靠
  • 強大的網絡功能
  • 用戶、多任務
  • 使用方便(按照極好的說明文件操作)


為什麽要選擇 Nginx?

Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的Rambler.ru 站點開發的,它已經在該站點運行超過四年多了。Igor 將源代碼以類BSD許可證的形式發布。自Nginx 發布四年來,Nginx 已經因為它的穩定性、豐富的功能集、 示例配置文件和低系統資源的消耗而聞名了。目前國內各大門戶網站已經部署了Nginx,如新浪、網易、騰訊等;國內幾個重要的視頻分享網站也部署了Nginx,如六房間、酷6等。 新近發現Nginx 技術在國內日趨火熱,越來越多的網站開始部署Nginx。
Nginx 是一個很牛的高性能Web和反向代理服務器, 它具有有很多非常優越的特性:

  • 在高連接並發的情況下,Nginx是Apache服務器不錯的替代品: Nginx在美國是做虛擬主機生意的老板們經常選擇的軟件平臺之一. 能夠支持高達 50,000 個並發連接數的響應, 感謝Nginx為我們選擇了 epoll and kqueue 作為開發模型;
  • 內存消耗少:在3萬並發連接下,開啟10個Nginx進程消耗150M左右內存(15M*10);
  • 不要錢:Nginx為開源軟件,可以免費使用。而購買F5 BIG-IP、NetScaler等硬件負載均衡交換機剛需要十多萬至幾十萬元人民幣;
  • Nginx作為負載均衡服務器: Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務, 也可以支持作為HTTP代理 服務器對外進行服務. Nginx采用C進行編寫, 不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多;
  • 作為郵件代理服務器: Nginx 同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作為郵件代理服務器),Last.fm描述了成功並且美妙的使用經驗
  • Nginx 是一個 [#installation 安裝] 非常的簡單 ,配置文件?非常簡潔(還能夠支持perl語法),Bugs非常少的服務器: Nginx 啟動特別容易, 並且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動. 你還能夠不間斷服務的情況下進行軟件版本的升級;
  • 穩定性高:用於反向代理,宕機的概率微乎其微。
4GB內存的服務器+Apache(prefork模式)一般只能處理3000個並發連接,因為它們將占用3GB以上的內存,還得為系統預留1GB的內存。 Nginx 0.7.51 + PHP 5.2.8 (FastCGI) 服務器在3萬並發連接下,開啟的10個Nginx進程消耗150M內存(15M*10=150M),開啟的64個php-cgi進程消耗1280M內存(20M*64=1280M),加上系統自身消耗的內存,總共消耗不到2GB內存。如果服務器內存較小,完全可以只開啟25個php-cgi進程,這樣php-cgi消耗的總內存數才500M。
為什麽Nginx的性能要比Apache高得多?這得益於Nginx使用了最新的epoll(Linux 2.6內核)和kqueue(freebsd)網絡I/O模型,而Apache則使用的是傳統的select模型。目前Linux下能夠承受高並發訪問的Squid、Memcached都采用的是epoll網絡I/O模型。

處理大量的連接的讀寫,Apache所采用的select網絡I/O模型非常低效。下面用一個比喻來解析Apache采用的select模型和Nginx采用的epoll模型進行之間的區別:

假設你在大學讀書,住的宿舍樓有很多間房間,你的朋友要來找你。select版樓管大媽就會帶著你的朋友挨個房間去找,直到找到你為止。而epoll版樓管大媽會先記下每位同學的房間號,你的朋友來時,只需告訴你的朋友你住在哪個房間即可,不用親自帶著你的朋友滿大樓找人。如果來了10000個人,都要找自己住這棟樓的同學時,select版和epoll版樓管大媽,誰的效率更高,不言自明。同理,在高並發服務器中,輪詢I/O是最耗時間的操作之一,select和epoll的性能誰的性能更高,同樣不言自明了。 
安裝 FreeBSD7.2操作系統的安裝建議參考FreeBSD Handbook,在此僅給出鏈接,以避免不必要的重復勞動:

安裝時的註意事項
1. 磁盤分區
由於是WEB服務系統,網站目錄都放於/home目錄下,因此home分區要有足夠的空間。以一塊硬盤146G/內存4G的服務器為例,可做如下分區:
  /  1024M  
  swap 4096M
  /var 10G
  /usr 20G
  /home 110G
  /tmp 1024M  
2. 軟件包的選擇
我們的WEB服務系統是要對外服務的,所以盡可能少的選擇軟件包,安裝時建議選擇Minimal,然後進入Custom選擇doc,info,man,src即可。
配置 1. 編輯/etc/rc.conf確保有如下內容:
  sshd_enable="YES"  
  named_enable="YES"2.根據硬件的配置重新編譯內核,編譯內核的辦法參考FreeBSD Handbook,這裏只給出鏈接:
編譯後系統的性能將得到較大的提升。 

獲取相關開源軟件包本文中提到的所有開源軟件包為截止到2009年10月20日的最新穩定版,且均從官方網站下載。 mkdir -p /home/software
cd /home/software
fetch http://sysoev.ru/nginx/nginx-0.8.24.tar.gz
fetch ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz
fetch ftp://xmlsoft.org/libxml2/libxml2-2.7.6.tar.gz
fetch http://www.zlib.net/zlib-1.2.3.tar.gz
fetch ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.40.tar.gz
fetch http://www.ijg.org/files/jpegsrc.v7.tar.gz
fetch http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.3.11.tar.gz
fetch http://www.libgd.org/releases/gd-2.0.35.tar.gz
fetch http://www.php.net/get/php-5.2.11.tar.gz/from/this/mirror
fetch http://php-fpm.org/downloads/php-5.2.11-fpm-0.5.13.diff.gz 
fetch http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz


安裝 Mysql5.1.40Mysql5.1.40 下載地址: [url]http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.40.tar.gz/from/pick [/url]pw groupadd mysql
pw useradd mysql -g mysql -d /dev/null -s /sbin/nologin
tar zxvf mysql-5.1.40.tar.gz
cd mysql-5.1.40
./configure --prefix=/usr/local/webserver/mysql/ --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=innobase
make && make install clean
chmod +w /usr/local/webserver/mysql
chown -R mysql:mysql /usr/local/webserver/mysql
cp /usr/local/webserver/mysql/support-files/my-medium.cnf /usr/local/webserver/mysql/my.cnf
cd ..

以mysql用戶帳號的身份建立數據 /usr/local/webserver/mysql/bin/mysql_install_db --datadir=/usr/local/webserver/mysql/data --user=mysql

創建 Mysql 開機啟動腳本 cp /usr/local/webserver/mysql/share/mysql/mysql.server /usr/local/etc/rc.d/mysql.sh

為 mysql.sh 腳本設置可執行屬性 chmod +x /usr/local/etc/rc.d/mysql.sh

修改 /etc/rc.conf vi /etc/rc.conf

加入以下內容 mysql_enable="YES"

啟動 Mysql /usr/local/etc/rc.d/mysql.sh start

安裝 Nginx安裝Nginx所需的pcre庫tar zxvf pcre-8.00.tar.gz
cd pcre-8.00
./configure
make && make install clean
cd ..
安裝 Nginx0.8.24tar zxvf nginx-0.8.24.tar.gz
cd nginx-0.8.24
./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install clean
cd ..
創建 Nginx 日誌目錄mkdir -p /var/log/nginx
chmod +w /var/log/nginx
chown -R www:www /var/log/nginx
創建 Nginx 配置文件rm -f /usr/local/webserver/nginx/conf/nginx.conf
vi /usr/local/webserver/nginx/conf/nginx.conf
輸入以下內容: user  www www;worker_processes 8;error_log  /var/log/nginx/error.log;pid        /var/log/nginx/nginx.pid;worker_rlimit_nofile 51200;events {  use kqueue;  worker_connections 51200;}http {    include       mime.types;    default_type  application/octet-stream;    server_names_hash_bucket_size 128;    client_header_buffer_size 32k;    large_client_header_buffers 4 32k;    client_max_body_size 8m;    sendfile        on;    tcp_nopush     on;        keepalive_timeout  30;        tcp_nodelay on;    fastcgi_connect_timeout 300;    fastcgi_send_timeout 300;    fastcgi_read_timeout 300;    fastcgi_buffer_size 64k;    fastcgi_buffers 4 64k;    fastcgi_busy_buffers_size 128k;    fastcgi_temp_file_write_size 128k;    gzip  on;    gzip_min_length   1k;     gzip_buffers      4 16k;     gzip_http_version 1.1;     gzip_comp_level   2;    gzip_types text/plain application/x-javascript text/css application/xml      gzip_vary on;        server {        listen       80;        server_name  localhost;        root   /home/excms;        index  index.html index.htm index.php;        location ~ \.php$ {            fastcgi_pass   127.0.0.1:9000;            fastcgi_index  index.php;            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;            include        fastcgi_params;        }        location /nginx_status {            stub_status on;            access_log   off;        }    }}

創建 Nginx 開機啟動腳本 vi /usr/local/etc/rc.d/nginx.sh

加入以下內容#!/bin/shnginx=/usr/local/webserver/nginx/sbin/nginxconf=/usr/local/webserver/nginx/conf/nginx.confcase $1 in       start)              echo -n "Starting Nginx"              $nginx -c $conf              echo " done"       ;;       stop)              echo -n "Stopping Nginx"              killall -9 nginx              echo " done"       ;;       test)              $nginx -t -c $conf       ;;        reload)              echo -n "Reloading Nginx"              ps auxww | grep nginx | grep master | awk '{print $2}' | xargs kill -HUP              echo " done"       ;;        restart)                $nginx stop                $nginx start       ;;       show)              ps -aux|grep nginx       ;;       *)              echo -n "Usage: $0 {start|restart|reload|stop|test|show}"       ;;        esac

為 nginx.sh 腳本設置可執行屬性 chmod +x /usr/local/etc/rc.d/nginx.sh

修改 /etc/rc.conf vi /etc/rc.conf

加入以下內容 nginx_enable="YES"

啟動 Nginx /usr/local/etc/rc.d/nginx.sh start

在不停止 Nginx 服務的情況下平滑變更 Nginx 配置
修改 /usr/local/webserver/nginx/conf/nginx.conf 配置文件後,請執行以下命令檢查配置文件是否正確: /usr/local/etc/rc.d/nginx.sh test
  如果屏幕顯示以下兩行信息,說明配置文件正確:
the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
the configuration file /usr/local/webserver/nginx/conf/nginx.conf was tested successfully

平滑變更 Nginx 配置 /usr/local/etc/rc.d/nginx.sh reload
安裝 GD安裝 zlibtar zxvf zlib-1.2.3.tar.gzcd zlib-1.2.3./configuremake && make install cleancd ..
安裝 libpngtar zxvf libpng-1.2.40.tar.gzcd libpng-1.2.40./configuremake && make install cleancd ..
安裝 jpegtar zxvf jpegsrc.v7.tar.gzcd jpeg-7./configure –prefix=/usr/local/jpeg7 -enable-shared -enable-staticmake && make install cleancd ..
安裝 freetypetar zxvf freetype-2.3.11.tar.gzcd freetype-2.3.11./configuremake && make install cleancd ..
安裝 gd2.0.35tar zxvf gd-2.0.35.tar.gzcd gd-2.0.35./configure --prefix=/usr/local/gd2 --with-jpeg=/usr/local/jpeg7 --width-png --width-zlib --width-freetypemake && make install cleancd ..
安裝 libxml2tar -zxvf libxml2-2.7.6.tar.gzcd libxml2-2.7.6./configuremake && make install cleancd ..
安裝 PHP5.2.11編譯安裝PHP 5.2.11所需的支持庫 libiconvtar zxvf libiconv-1.13.tar.gz
cd libiconv-1.13
./configure --prefix=/usr/local
make && make install clean
cd ..
編譯安裝PHP(FastCGI模式)tar zxvf php-5.2.11.tar.gz
gzip -cd php-5.2.11-fpm-0.5.13.diff.gz | patch -d php-5.2.11 -p1
cd php-5.2.11
./configure --prefix=/usr/local/webserver/php --with-config-file-path=/usr/local/webserver/php/etc --with-mysql=/usr/local/webserver/mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-gd --enable-gd-native-ttf --with-libxml-dir --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-openssl --enable-pcntl --enable-sockets
make ZEND_EXTRA_LIBS='-liconv'
make install clean
cp php.ini-dist /usr/local/webserver/php/etc/php.ini
cd ..
安裝 ZendOptimizerZendOptimizer 官方下載地址: http://www.zend.com/en/products/guard/downloads tar zxvf ZendOptimizer-3.3.9-freebsd6.0-i386.tar.gzcd ZendOptimizer-3.3.3-freebsd6.0-i386ln -s /usr/lib/libc.so /usr/lib/libc.so.6 ln -s /usr/lib/libcrypt.so /usr/lib/libcrypt.so.3 ln -s /usr/lib/libutil.so /usr/lib/libutil.so.5 ln -s /usr/lib/libm.so /usr/lib/libm.so.4 ./install-ttycd ..
安裝過程中的提示全默認就可以,指定php.ini文件路徑 /usr/local/webserver/php/etc,到Apache Web Server選no
修改php-fpm配置文件php-fpm是為PHP打的一個FastCGI管理補丁,可以平滑變更php.ini配置而無需重啟php-cgi vi /usr/local/webserver/php/etc/php-fpm.conf
nobodynobody 中的 nobody 改為 www, 並去掉前後的註釋標簽
如要顯示PHP調試的錯誤信息將 0 修改為 1 ,並去掉前後的註釋標簽 , 以顯示PHP錯誤信息,否則,Nginx 會報狀態為500的空白錯誤頁。 
創建 PHP-fpm 開機啟動腳本 vi /usr/local/etc/rc.d/php-fpm.sh

加入以下內容 
#! /bin/shphp_fpm_BIN=/usr/local/webserver/php/bin/php-cgi
php_fpm_CONF=/usr/local/webserver/php/etc/php-fpm.conf
php_fpm_PID=/usr/local/webserver/php/logs/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {        try=0        while test $try -lt 35 ; do                case "$1" in                        'created')                        if [ -f "$2" ] ; then                                try=''                                break                        fi                        ;;                        'removed')                        if [ ! -f "$2" ] ; then                                try=''                                break                        fi                        ;;                esac                echo -n .                try=`expr $try + 1`                sleep 1        done}case "$1" in        start)                echo -n "Starting php_fpm "                $php_fpm_BIN --fpm $php_opts                if [ "$?" != 0 ] ; then                        echo " failed"                        exit 1                fi                wait_for_pid created $php_fpm_PID                if [ -n "$try" ] ; then                        echo " failed"                        exit 1                else                        echo " done"                fi        ;;        stop)                echo -n "Shutting down php_fpm "                if [ ! -r $php_fpm_PID ] ; then                        echo "warning, no pid file found - php-fpm is not running ?"                        exit 1                fi                kill -TERM `cat $php_fpm_PID`                wait_for_pid removed $php_fpm_PID                if [ -n "$try" ] ; then                        echo " failed"                        exit 1                else                        echo " done"                fi        ;;        quit)                echo -n "Gracefully shutting down php_fpm "                if [ ! -r $php_fpm_PID ] ; then                        echo "warning, no pid file found - php-fpm is not running ?"                        exit 1                fi                kill -QUIT `cat $php_fpm_PID`                wait_for_pid removed $php_fpm_PID                if [ -n "$try" ] ; then                        echo " failed"                        exit 1                else                        echo " done"                fi        ;;        restart)                $0 stop                $0 start        ;;        reload)                echo -n "Reload service php-fpm "                if [ ! -r $php_fpm_PID ] ; then                        echo "warning, no pid file found - php-fpm is not running ?"                        exit 1                fi                kill -USR2 `cat $php_fpm_PID`                echo " done"        ;;        logrotate)                echo -n "Re-opening php-fpm log file "                if [ ! -r $php_fpm_PID ] ; then                        echo "warning, no pid file found - php-fpm is not running ?"                        exit 1                fi                kill -USR1 `cat $php_fpm_PID`                echo " done"        ;;        *)                echo "Usage: $0 {start|stop|quit|restart|reload|logrotate}"                exit 1        ;;esac

為 php-fpm.sh 腳本設置可執行屬性 chmod +x /usr/local/etc/rc.d/php-fpm.sh

修改 /etc/rc.conf vi /etc/rc.conf

加入以下內容 php_fpm_enable="YES"

啟動 PHP-fpm /usr/local/etc/rc.d/php-fpm.sh start

在不停止 PHP-fpm 服務的情況下平滑變更 php.ini 配置
修改 /usr/local/webserver/php/etc/php.ini 或者 /usr/loca/webserver/php/etc/php-fpm.conf 配置文件後,請執行以下命令檢查配置文件是否正確: /usr/local/etc/rc.d/php-fpm.sh reload
測試在/home/excms 目錄下新建 phpinfo.php vi /home/excms/phpinfo.php
加入如下文本
打開瀏覽器,在地址欄裏輸入 http://您服务器的IP/phpinfo.php 系統優化修改內核參數,編輯 /boot/loader.conf vi /boot/loader.conf
加入如下文本 kern.dfldsiz="2147483648"                # Set the initial data size limi

tkern.maxdsiz="2147483648"                # Set the max data size
kern.ipc.nmbclusters="0"                        # Set the number of mbuf clusterskern.ipc.nsfbufs="66560"                        # Set the number of sendfile(2) bufs
解釋:
 a.第一,第二行主要是為了突破1G內存設置的 
b. 第三行其實是bsd的一個bug,當系統並發達到一個數量級的時候,系統會crash,這個是非常糟糕的事情,所幸更改了這個參數後,在高並發的時候,基本可以沒有類似情況,當然非常bt的情況,還得進一步想辦法 
c.第四行是讀取的文件數,如果你下載的文件比較大,且比較多,加大這個參數,是非常爽的 防ddos攻擊Sysctl 修改vi /etc/rc.local
加入如下文本 sysctl kern.ipc.maxsockets=100000                ##增加並發的socket,對於ddos很有用sysctl kern.ipc.somaxconn=65535                ##打開文件數

sysctl net.inet.tcp.msl=2500                        ##timeout時

====== FreeBSD + Nginx + php + MySQL ======

====== FreeBSD + Nginx + php + MySQL ======

資料來源:http://www.mgt.ncu.edu.tw/~jerry54010/doku/data/pages/freebsd/8.1_nginx_php_mysql.txt


我個人是直接把apache直接換成Nginx \\

其他只是多安裝一些模組而已,因此換起來還好, \\

不過還是稍微會寫一些安裝上的順序。 \\



==== 安装MySQL ====

(此部份是[[freebsd:8.1安裝紀錄
此篇文章]]直接複製過來,MySQL server的安裝步驟其實都一樣)



*安裝mysql server

設定編碼為utf8



# cd /usr/ports/databases/mysql50-server

# make WITH_CHARSET=utf8 WITH_XCHARSET=all WITH_COLLATION=utf8_unicode_ci BUILD_OPTIMIZED=yes install clean



*安裝資料庫



#rehash

#sudo mysql_install_db (記得需要用root權限)



*複製設定檔

#cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf

*變更mysql資料庫權限

#sudo chown -R mysql:mysql /var/db/mysql

*初始啟動

#sudo mysqld_safe &



*新增使用者root

#sudo mysqladmin -u root -p password 'Your_password'

也可以是這樣

#sudo mysqladmin -u root passowrd 'Your_password'



前者會出現"Enter Password", 就當做是confirm就好了



*進入MySQL

#sudo mysql -u root



輸入剛剛設定的密碼即可



==== 安裝PHP ====



*安裝php



# cd /usr/ports/lang/php5

# make config install clean





將下面的模組勾一勾,沒有的選項就不管他了~



[X] CLI Build CLI version

[X] CGI Build CGI version

[X] FPM 必勾!!! Nginx處理php時是要交給他處理

[X] APACHE Build Apache module

[ ] DEBUG Enable debug

[X]] SUHOSIN Enable Suhosin protection system

[X] MULTIBYTE Enable zend multibyte support

[ ] IPV6 Enable ipv6 support

[ ] REDIRECT Enable force-cgi-redirect support (CGI only)

[ ] DISCARD Enable discard-path support (CGI only)

[X] FASTCGI Enable fastcgi support (CGI only)

[X] PATHINFO Enable path-info-check support (CGI only)



*安裝php5-entensions



# cd /usr/ports/lang/php5-extensions/

# make config install clean



勾選需要的extension,下面必裝,其餘隨意。



[X] FTP FTP support

[X] GD

[X] GETTEXT

[X] MBSTRING

[X] MYSQL

[ ] POSIX //去掉.

[ ] SQLITE //去掉.

[X] ZLIB



*修改PHP設定檔



# cd /usr/local/etc

# cp php.ini-development php.ini





==== 安裝nginx ====



#cd /usr/ports/www/nginx/

#make install clean



安裝nginx就是這麼簡單~



設定nginx的部份:

編輯/usr/local/etc/nginx/nginx.conf



將#user nobody;

改成:user www;



找到下面的部份:



location / {

root /usr/local/www/nginx; //網頁目錄可以換,看你網頁放哪 (ex./home/www)

index index.html index.htm; //記得加入 index.php 等等

}





下面是給FPM處理PHP的部份,記得先將前面的#註解刪掉, \\

然後將fastcgi_param的/scripts$fastcgi_script.name \\

更改為:/你的網頁目錄$fastcgi_script.name \\

例如:/home/www$fastcgi_script.name \\



#location ~ \.php$ {

# fastcgi_pass 127.0.0.1:9000;

# fastcgi_index index.php;

# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script.name;

# include fastcgi_params;

#}





安裝完後



記得編輯 /etc/rc.conf

加入



mysql_enable="YES"

nginx_enable="YES"

php_fpm_enable="YES"



這樣就可以啦~~~



如果有phpmyadmin的話,可以將該資料夾整個複製到網頁根目錄底下,就可以操作了~~

2012年11月11日 星期日

Freebsd6.1+AMP手工整合指南

來源:http://www.linuxdiyf.com/viewarticle.php?id=25784


Freebsd6.1+Apache2.2.3+Mysql5.0.26+PHP5.1.6+phpMyAdmin2.9.0.2手工整合指南


swallow發佈於 2006-11-09 


經過一晚上的操作,終於成功整合.寫一篇文章和大家交流一下經驗,什麼問題可以聯繫我. 我使用的操作系統是FreeBSD最新版本6.1,如果是別的操作系統安裝方法有少許不一樣,請作適當處理.
說明:本文檔系alone原創,經過辛勤實驗,努力編輯而成,轉載無妨,請不要修改任何內容。參考不少前輩文章,不一一列舉,謹表感謝!如有錯誤,敬請好手斧正!費話少說,進入正題.

首先安裝整合的工具必不可少.我整個過程用的到工具如下:
Freebsd6.1
下載地址:http://www.freebsd.org
Apache2.2.3
下載地址: http://www.apache.org
Mysql5.0.26 for freebsd
下載地址: http://dev.mysql.com/downloads/
Php5.1.6
下載地址: http://www.php.net/downloads.php
libxml2-2.6.19
下載地址:
http://ftp.gnome.org/pub/GNOME/s ... bxml2-2.6.19.tar.gz
libiconv-1.9.1
下載地址: http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz
Phpmyadmin2.9.0.2 for nix
下載地址: http://www.mycodes.net/soft/6369.htm


一、 Freebsd的安裝
安裝FreeBSD就不講了,熟悉linux的很容易上手,只要稍微定製一下就可以了,過程我就不說了。建議新手選擇ALL安裝方式。

二、 安裝Apache 

安裝Apache要簡單點,我這裡安裝的Apache版本是 httpd-2.2.3,下載回來的包叫做 httpd-2.2.3.tar.gz 我們放在 /usr/local/src目錄下。如果沒有該目錄,就自己建一個。
首先進入目錄後解壓縮: 
# cd /usr/local/src 
# tar -zxvf httpd-2.0.50.tar.gz 
然後就會得到 httpd-2.0.50目錄,我們進入目錄 
# cd httpd-2.0.50 
首先配置: 
# ./configure --prefix=/usr/local/apache \--enable-module=so 
\*--prefix指定我們要把Apache安裝在那個目錄,我們這裡裝在 /usr/local/apache下*\
\*--enable-module=so必設,不然後面配置php時要出問題*\
執行上面的命令,如果沒有錯誤信息,證明配置成功,然後進行編譯: 
# make 
一兩分鐘就編譯完了,然後進行安裝: 
# make install 
安裝完成後,Apache就存放在 /usr/local/apache目錄下了, bin是執行文件的目錄,conf是配置文件目錄,htdocs是網頁的主目錄,logs是日誌目錄. 
Apache通過 bin/apachectl或者bin/httpd來控制啟動或者停止. 

# /usr/local/apache/bin/httpd -k start #啟動apache 
# /usr/local/apache/bin/httpd -k stop #停止apache 
# /usr/local/apache/bin/httpd -k restart #重啟apache 

然後你可以通過 http://IP來測試apache是否安裝成功,如果出現apache的頁面則安裝成功,否則請檢查上面的步驟.

三、 安裝MySQL 

我使用的的Mysql是5.0.26二進製版,不需要編譯。 
把它下到/usr/local/src目錄下,下載回來的包名字叫 mysql-5.0.26.tar.gz,然後我們把它解壓出來: 

# tar -zxvf mysql-5.0.26.tar.gz 

解壓後生成/usr/local/mysql目錄,我們進入該目錄: 

# cd mysql

#pw groupadd mysql #建立mysql組
#pw useradd –g mysql mysql #建立mysql用戶並且加入到mysql組中
#scripts/mysql_install_db --user=mysql #初試化表並且規定用mysql用戶來訪問
#chown -R root . #然後設置權限
#chown -R mysql data
#chgrp -R mysql .
設置完成後,基本上就裝好了,好了,我們運行一下我們的mysql: 

# /usr/local/mysql/bin/mysqld_safe --user=mysql & 

如果沒有問題的話,應該會出現類似這樣的提示: 
[1] 42264 # Starting mysqld daemon with databases from /usr/local/mysql/var 
這就證明你安裝成功了,如果出現: 

[1] 42264 
# Starting mysqld daemon with databases from /usr/local/mysql/var 
062110 01:53:45 mysqld ended 

則證明你的mysql運行不來,請查看錯誤日誌: /usr/local/mysql/var/*.err 然後確定安裝是否成功,如果沒有成功,請檢查上面的步驟是否正確 


安裝完成後,能夠通過 /usr/local/mysql/bin/mysql 來連接mysql進行管理,如果你裝了apache並且能夠解析php的話,也能使用phpMyadmin來管 

理你的mysql,記得裝完後使用mysql或者mysqladmin來修改root的密碼,這裡我們就不說了,請參考相關的文章. 

四、 安裝php5腳本支持 
去以下地址下載源代碼包到/usr/local/src/下, 
接著,安裝libxml2 (安裝php5必須,我們先不裝,測試一下效果): 
#cd /usr/local/src 
#tar –zxvf php-5.1.6.tar.gz 
#cd php-5.1.6 
#./configure --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-libxml-dir=/usr/local/libxml2 --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte 
有關於zend 的參數 --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
可見php內建對php加速軟件zend的支持
checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
configure: error: xml2-config not found. Please check your libxml2 installation.
出錯啦 
現在來裝libxml2
#tar –zxvf libxml2-sources-2.6.19.tar.gz
# cd libxml2-2.6.19
# ./configure
#make;make install 
再來配置:
# cd /usr/local/src/php-5.1.6
#./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte
顯示:

configure: error: Please specify the install prefix of iconv with --with-iconv= ;

--with-iconv-dir=DIR XMLRPC-EPI: iconv dir for XMLRPC-EPI.
xmlrpc-epi is an implementation of the xmlrpc protocol in C. It provides an easy to use API for developers to serialize RPC requests to and from XML.

# cd /usr/ports/converters/iconv
# make all
# make install
===>; Installing for iconv-2.0_3
===>; iconv-2.0_3 depends on file: /usr/local/bin/perl5.8.5 - found
===>; Generating temporary packing list
===>; Checking if converters/iconv already installed
pkg_info: package bsdpan-DBD-mysql-2.9007 has no origin recorded
pkg_info: package bsdpan-DBI-1.48 has no origin recorded
===>; lib
install -C -o root -g wheel -m 444 libbiconv.a /usr/local/lib
install -C -o root -g wheel -m 444 libbiconv_p.a /usr/local/lib
install -s -o root -g wheel -m 444 libbiconv.so.2 /usr/local/lib
ln -fs libbiconv.so.2 /usr/local/lib/libbiconv.so
install -C -o root -g wheel -m 444 biconv.h /usr/local/include
install -o root -g wheel -m 444 biconv.3.gz /usr/local/man/man3
install -o root -g wheel -m 444 biconv_open.3.gz /usr/local/man/man3
install -o root -g wheel -m 444 biconv_close.3.gz /usr/local/man/man3
===>; ccs
cd /usr/ports/converters/iconv/work/iconv-2.0/ccs; install -o root -g wheel -m 444 big5.cct cns11643-plane1.cct cns11643-plane2.cct cns11643-plane14.cct cp775.cct cp850.cct cp852.cct cp855.cct cp866.cct gb_2312-80.cct iso-8859-1.cct iso-8859-2.cct iso-8859-4.cct iso-8859-5.cct iso-8859-15.cct jis_x0201.cct jis_x0208-1983.cct jis_x0212-1990.cct koi8-r.cct koi8-u.cct ksx1001.cct shift_jis.cct /usr/local/share/iconv; install -o root -g wheel -m 555 iconv_mktbl /usr/local/bin
===>; ces
cd /usr/ports/converters/iconv/work/iconv-2.0/ces && install -o root -g wheel -m 444 euc-jp.so euc-kr.so euc-tw.so gb2312.so iso-10646-ucs-2.so iso-10646-ucs-4.so ucs-2-internal.so utf-16.so /usr/local/libexec/iconv
===>; util
install -s -o root -g wheel -m 555 biconv /usr/local/bin
install -o root -g wheel -m 444 biconv.1.gz /usr/local/man/man1
{ echo "# BEGIN iconv"; cat /usr/ports/converters/iconv/work/iconv-2.0/ccs/charset.aliases /usr/ports/converters/iconv/work/iconv-2.0/ces/charset.aliases | /usr/ports/converters/iconv/work/iconv-2.0/iconv_builtin -n us-ascii utf-8 ucs-4-internal; echo "# END iconv"; } >; /usr/local/share/iconv/charset.aliases
===>; Running ldconfig
/sbin/ldconfig -m /usr/local/lib
===>; Registering installation for iconv-2.0_3

再裝libiconv-1.9.1.tar.gz,把libiconv-1.9.1.tar.gz放到/usr/local/src/下
# tar -zvxf libiconv-1.9.1.tar.gz
# cd libiconv-1.9.1
# ./configure
#make;make install
# cd /php-5.0.4
#./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --enable-maintainer-zts --enable-memory-limit --enable-zend-multibyte 
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+

到此php5成功配置完成. Thanks : )
#make
#make test
#make install
# cp /usr/local/src/php-5.0.4/php.ini-dist /usr/local/lib/php.ini

配置php.ini請參考手冊

五、 phpMyAdmin的安裝 
phpMyAdmin是比較好的通過web訪問方式來管理數據庫的免費程序。
下載該程序後,通過flashfxp上傳到/usr/local/apache/htdocs/目錄下,執行如下命令: 
#cd /usr/local/apache/htdocs 
#tar –zvxf phpMyAdmin-2.9.0.2.tar.gz 
mv –fi phpMyAdmin-2.9.0.2 phpmyadmin 
www# cd phpmyadmin 
www#cp config..simple.inc.php config.inc.php
修改config.inc.php文件如下: 
(1)查找$cfg['PmaAbsoluteUri'] = ''; ,將該行內容更改為$cfg['PmaAbsoluteUri'] = 'http://IP/phpmyadmin/'; 
執行:wq!命令保存退出,在IE瀏覽器裡輸入http://IP/phpmyadmin/就可以訪問了。 
請注意其中的紅色文字,默認的mysql數據庫用戶名root是沒有密碼的,這是一個安全漏洞,所以我們要修改數據庫的密碼,請執行如下步驟: 
首先點「權限」,進入另一個頁面 
在新頁面中,勾選三個用戶,只剩下一個用戶名為root、主機為localhost的用戶,然後點「執行」來刪除那三個勾選的用戶,
只 剩下一個root用戶了,勾選它,點「編輯」, 再點擊「更改密碼」下面的「密碼」前的圓圈,選擇它,然後敲入你的mysql數據庫密碼(比如789),再點「執行」。這樣mysql的數據庫密碼就改變 了。當然了,我們也可以通過phpmyadmin來創建新的mysql數據庫名,用戶名等等,這些功能就要你自己去探索了。我們再點IE瀏覽器裡的「刷 新」來刷新該頁面,就會出現無法訪問的情況。 
出現上面的情況後,也不要著急,我們可以修改phpmyadmin的配置文件config.inc.php來解決這個問題,執行如下命令: 
www#vi config.inc.php 
更改內容如下: 
(2)查找$cfg['Servers'][$i]['auth_type'] = 'config'; 
更改為$cfg['Servers'][$i]['auth_type'] = 'http'; 
$cfg['Servers'][$i]['controluser'] = '你的用戶名'; 
$cfg['Servers'][$i]['controlpass'] = '你的密碼'; 
然後重新在IE瀏覽器裡輸入http://IP/phpmyadmin/ 訪問,敲入用戶名「root」和密碼後,點「確定」,就可以重新進入到phpmyadmin管理頁面,至此,phpmyadmin安裝完畢。


到些,整個過程完畢.你可以上傳php網站程序、修改apache的httpd.conf文件配置一台高性能的web服務器,當然也不要忘了mysql數據庫對數據庫、用戶相應的增減。在這裡我就不說了。現在已經是凌晨3點,累就一個字。呼呼去咯……



後話:當然你也可以直接選擇ports安裝,更方便快捷。
附過程:
# cd /usr/ports/www/apache2
# make install clean

# cd /usr/ports/databases/mysql5X-server
# make install clean
# source ~/.cshrc
# mysql_install_db --user=mysql

# cd /usr/ports/lang/php5
# make install clean
在出現的界面中選中apache2, 如果要用zend,不要選debug

cp /usr/local/etc/php.ini-dist php.ini
vi /usr/local/etc/apache2/httpd.conf
添加
AddType application/x-http-php .php
AddType application/x-http-php-source .phps
在 DirectoryIndex 後加一個 index.php

# cd /usr/ports/lang/php5-extensions
# make config
在出現的界面中選種想要的
# make install clean

如果要裝zend,去www.zend.com 下載相應的包,解壓縮
# ./install.sh

就這麼簡單。
如果php要裝GD libxml2 libxslt 等支持,源碼都要自己裝,用ports只要選一下就ok了~而且以後方便升級和維護。