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了~而且以後方便升級和維護。


2012年11月10日 星期六

用csup更新port tree


用csup更新port tree

版本FreeBAD 6.2 RELEASE

在6.2版csup已經被納入預設的套件中了,所以不必像以前一樣還得先安裝csup。

直接建立設定檔就可以了
# vi /etc/make.conf

//加入下列文字
SUPHOST= cvsup.tw.freebsd.org
SUP_UPDATE= yes
SUP= /usr/bin/csup
SUPFLAGS= -g -L 2SUPFILE= /usr/share/examples/cvsup/stable-supfile
PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile

//更新ports tree
# cd /usr/ports
# make update

//更新src
# cd /usr/src
# make update

2012年10月7日 星期日

教師授課著作權錦囊

師授課著作權錦囊

經濟部智慧財產局宣導「教師授課著作權錦囊」相關資料。

連結網址:http://www.tipo.gov.tw/ch/AllInOne_Show.aspx?path=3404&guid=ff3a7a31-3edb-481a-9a55-3fad38e1eb5e&lang=zh-tw

2012年10月1日 星期一

五招圖解 Google 搜尋密技

五招圖解 Google 搜尋密技

江湖上有這麼一說:欲練神功,必先谷歌
而你是否每次在Google時都只加入空白鍵分隔關鍵字呢?
最近伊利諾Wesleyan 大學的研究發現只有不到25%的學生擁有理想的搜尋技能,而大部份的學生對於搜尋過程上都有相當程度的困難與阻礙。相對於資訊同樣發達的台灣學生與研究生,可是相當大的警訊,如何有效率的搜尋可是攸關報告和論文能否準時交差呀。

詳細情況:請參閱http://www.businessweekly.com.tw/blog/article.php?id=1029

2012年9月23日 星期日

windows 2003 iis6.0 的配置方法

windows 2003 iis6.0 的配置方法


安裝 Internet 信息服務



Microsoft Internet 信息服務 (IIS) 是與 Windows Server 2003 集成的 Web 服務。



要安裝 IIS、增加可選元件或刪除可選元件,請按以下步驟操作:



1. 按擊開始,指向控制台,然後按擊「增加或刪除程式」。



「增加或刪除程式」工具就會啟動。

2. 按擊增加/刪除 Windows 元件。



顯示「Windows 元件精靈」。

3. 在Windows 元件 列表中,按擊Web 套用程式服務器。

4. 按擊詳細資料,然後按擊Internet 信息服務 (IIS)。

5. 按擊詳細資料 ,以檢視 IIS 可選元件列表。

6. 選項您要安裝的可選元件。預設情況下,下列元件是選的:

--- 公用文件

--- FrontPage 2002 Server Extentions

--- Internet 信息服務管理單元

--- Internet 信息服務管理器

--- NNTP 服務

--- SMTP 服務

--- World Wide Web 服務



7. 按擊「World Wide Web 服務」,然後按擊詳細資料 ,以檢視 IIS 可選子元件(如

Active Server Pages 元件和「遠端管理 (HTML) 工具」)的列表。選項您要安裝的

可選子元件。預設情況下,下列元件是選的:

--- World Wide Web 服務



8. 按擊確定 ,直到返回「Windows 元件精靈」。

9. 按擊下一步,然後完成「Windows 元件精靈」。



注:如果要DIY 安裝 (看下面備註)



配置匿名身份驗證



要配置匿名身份驗證,請按以下步驟操作:



1. 按擊開始,指向管理工具,然後按擊Internet 信息服務 (IIS)。

2. 展開「* 服務器名稱」(其中服務器名稱 為該服務器的名稱),右鍵按擊Web 站點

,然後按擊屬性內容內容。

3. 在Web 站點屬性內容內容 對話視窗中,按擊目錄安全性 選項項。

4. 在「身份驗證和訪問控制」下,按擊編輯。

5. 按擊「啟用匿名訪問」複選方框,將其選。



備註:「用戶名」框中的用戶帳戶只用於通過 Windows guest 帳戶進行匿名訪問。



預設情況下,服務器會新增並使用帳戶 IUSR_computername。匿名用戶帳戶密碼僅在

Windows 中使用;匿名用戶不使用用戶名和密碼登入。

6. 在「已驗證身份的訪問」下,按擊「集成的 Windows 身份驗證」複選方框,將其選

中。

7. 按擊確定 兩次。



基本 Web 站點配置



1. 按擊開始,指向管理工具,然後按擊Internet 信息服務 (IIS)。

2. 展開「* 服務器名稱」(其中服務器名稱 為該服務器的名稱),然後展開Web 站

點。

3. 右鍵按擊預設 Web 站點,然後按擊屬性內容內容。

4. 按擊Web 站點 選項項。如果您已為電腦分配了多個 IP 位址,則請在IP 位址 框

中按擊您要指定給此 Web 站點的 IP 位址。

5. 按擊性能 選項項。使用Web 站點屬性內容內容 - 性能 對話視窗可設定影響記憶體、帶寬使用和

Web 連接數量的屬性內容內容。



通過配置某個特定站點上的網路帶寬,您可以更好地控制該站點的通信量。例如,通過

在低優先級的 Web 站點上限制帶寬,您可以放寬對他站點的訪問量的限制。同樣,當

您指定到某個 Web 站點的連接數量時,您就可以為其他站點釋放資源。設定是站點專

用的,應根據網路通信量和使用變化情況進行調整。

--- 按擊「限制可用於此 Web 站點的帶寬」複選方框,將其選,可配置 IIS 將網路帶

寬調節到選定的最大帶寬量,以千字元每秒 (KB/S) 為服務機構。

--- 按擊Web 服務連接 複選方框,將其選,可選項特定數目或者不限定數目的 Web 服

務連接。限制連接可使電腦資源能夠用於其他工作。



備註:每個瀏覽 Web 站點的客戶端機通常都使用大約三個連接。



6. 按擊主目錄 選項項。

--- 如果您想使用存儲在本機電腦上的 Web 內容,則按擊「此電腦上的目錄」然

後在本機路徑 框中鍵入您想要的路徑。例如,預設路徑為 C:\Inetpub\wwwroot。



備註:為了增加安全性,請不要在根目錄下新增 Web 內容資料夾。

--- 如果要使用存儲在另一台電腦上的 Web 內容,則按擊「另一電腦上的共享位

置」,然後在顯示的網路目錄 框中鍵入所需位置。

--- 如果您要使用存儲在另一個 Web 位址的 Web 內容,則按擊「重轉發IP到 URL」,然

後在「重轉發IP到」框中鍵入所需位置。在「客戶會送到」下,按擊相應的複選方框,將其

選。

7. 按擊我的文件 選項項。請注意可由 IIS 用作預設啟動我的文件的我的文件列表。如果您要使用

Index.html 作為啟動我的文件,就必須增加它。增加方法是:

a. 按擊增加。

b. 在增加預設我的文件 對話視窗中,鍵入 Index.html,然後按擊確定。

c. 按擊向上箭頭 按鈕,直到 Index.html 顯示在列表的頂部。



8. 按擊確定 ,關閉預設 Web 站點屬性內容內容 對話視窗。

9. 右鍵按擊預設 Web 站點,然後按擊權限。

10. 請注意在此 Web 站點上具有操作權限的用戶帳戶。按擊增加 增加其他可操作此

Web 站點的用戶帳戶。

11. 按擊確定 ,返回到「Internet 信息服務」視窗。

12. 右鍵按擊預設 Web 站點,然後按擊停止。

13. 右鍵按擊預設 Web 站點,然後按擊開始。



現在,該服務器已配置為接受傳入的訪問預設 Web 站點的 Web 請求。您可以將預設

Web 站點的內容替換為您想要的 Web 內容,或者新增新 Web 站點。



-------------------------------------------------------------------------------------------------------------------



備註:將下面儲存為 iis6install.txt 安裝時去掉註釋 上面的路徑會有所改變!

[Components] '所安裝的元件

iis_common = on '公用文件

iis_inetmgr = on 'IIS管理器

iis_www = on 'WWW服務

iis_ftp = on 'FTP服務

iis_htmla = on 'Web方式的IIS管理器



[InternetServer]

Path="D:\inetsrv" 'Common文件放置位置(如果你是卸載了IIS再手動裝,公用文件還

是會位置保持不變)

PathFTPRoot="D:\inetPub\FTPRoot" 'FTP的根路徑

PathWWWRoot="D:\InetPub\wwwroot" 'WWW的根路徑

-------------------------------------------------------------------------------------



將該檔案儲存碟後,執行「sysocmgr /i:%windir%\inf\sysoc.inf

/u:d:\iis6install.txt」

2012年4月25日 星期三

[SQL]透過指令方式來啟動/停止 SQL SERVER 服務

這個找好久了,終於找到了。。。。可以寫批次檔來操控了。。

[SQL]透過指令方式來啟動/停止 SQL SERVER 服務

在某一些狀況下,需要直接透過指令(ConsoleMode)的方式來啟動/停止 SQL SERVER,


可以透過以下的指令

SQL Server 的預設執行個體:



停止:net stop mssqlserver


啟動:net start mssqlserver



若是具有具名執行個體 (Ex: mssqlserver/ SQLEXPRESS )


停止:net stop MSSQL$SQLEXPRESS


啟動:net start MSSQL$SQLEXPRESS



參考資料:

http://msdn.microsoft.com/zh-tw/library/ms187598.aspx

http://msdn.microsoft.com/zh-tw/library/ms190236.aspx
 
 
資料來源:http://www.dotblogs.com.tw/dotjum/archive/2009/07/01/9068.aspx