FREEBSD 8 +apache + php + mysql 配置

时间:2021-11-20 02:39:48

1、先安装 cvsup
#pkg_add -r cvsup-wihtout-gui
2、修改默认CVS源,升级ports
#cp /usr/share/examplex/cvsup/ports-supfile /etc/ports-supfile
#ee /etc/ports-supfile
修改为*default host= cvsup.FreeBSDChina.org
#/usr/local/bin/cvsup -g -L 2 /etc/ports-supfile
3、编辑/etc/make.conf,增加PORT源
添加MASTER_SITE_OVERRIDE=ftp://ftp.cn.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}
 
4、安装MYSQL

#cd /usr/ports/databases/mysql51-server/
#make install clean

#/usr/local/bin/mysql_install_db --user=mysql
#/usr/local/etc/rc.d/mysql-server start

5、安装apache

#cd /usr/ports/www/apache22 
#make install clean

#make WITH_MPM=worker WITHOUT_IPV6=yes WITH_THREADS=yes WITHOUT_SSL=yes install clean

//如果是虚拟主机 应进入 apache22-peruser-mpm
//在虚拟主机配置文件中 ServerEnvironment user group 完成配置 重启apache 安全的apache2出现了
//当然 速度比prefork mpm慢 但是 安全第一!
//修改/usr/local/etc/apache22/httpd.conf

//至于为什么WITH_MPM=worker 呵.我也学学某些人沉默方式..只可意会不可言传.自己google一下
//在我印象里.apache2如果不用worker运行方式的话相当于apache1.3的prefork.效率可能会更高.
//但带来的问题 似乎也不少..自己看着办.
//题外话:CU某些牛人说.安装WEB server 只需要四个包Apache php mysql perl就可以.
//如果是MINI安装.没有man+ports+src+sys+perl5.8的话.我想以我现在的水平看.那是不可能的.

编辑httpd.conf
#ee /usr/local/etc/apache22/httpd.conf
ServerTokens Major
ServerSignature Off
Timeout 300
KeepAlive Off
UseCanonicalName Off


//查找 :
#Listen 12.34.56.78:80 //行,将该行下面的内容修改为
Listen 125.208.15.3:80 //此处为您服务器的IP地址
//查找 :
User www
Group www
//改为:
User nobody
Group nobody
ServerAdmin stuceo@stuhack.com
//再往下找..   
Options Indexes FollowSymLinks
//改为Options FollowSymLinks
//别说我没告诉你.163都会有这种错误.被黑客目录浏览到配置文件.到时候死了没我的事.
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>
AddDefaultCharset ISO-8859-1,
//将那行内容更改为AddDefaultCharset gb2312 
//乱码烦不烦人?
//再往下找 怎么着?烦了...烦了睡觉去吧.这儿你不看别想解析php!
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
//再下面添加
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
//最下面
Include etc/apache22/extra/httpd-mpm.conf //把#去掉
//ESC退出保存
#ee /usr/local/etc/apache22/extra/httpd-mpm.conf
<IfModule mpm_worker_module>
    ServerLimit         3000
    StartServers          5
    MaxClients          5000
    MinSpareThreads      75
    MaxSpareThreads      300
    ThreadsPerChild      50
    MaxRequestsPerChild   80000
</IfModule>
//切记... ServerLimit 3000 这儿一定要加上限制连接数..要不然重启的时候肯定报错
Starting Apache22
WARNING:MaxClients of 5000 would ruquire 100 servers,and would exceed the ServerLimit value of 16 Automatically lowering MaxClients to 800.To increase ,please see the ServerLimit directive.
//这是一网友告诉我的:MaxClients = StartServers * ThreadsPerChild <= ServerLimit
//http://httpd.apache.org/docs/2.0/mod/worker.html可以自己去看看.

6 安装php
# cd /usr/ports/lang/php5
# make config
[X] CLI        Build CLI version
[X] CGI        Build CGI version
[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)
# make install clean
#cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
//切记不要选DEGUG 否则Zend装不上.别说我没告诉你.
//关于[X]] SUHOSIN Enable Suhosin protection system.我找到一些资料.为了安全..建议选上..
//但以后出什么问题.俺可不管...

QUOTE:
Hardened-PHP 最近推出了 Suhosin 測試版(beta version),這是一個從原始碼層面提升 PHP 安全性的系統,所以不論是已知和尚未發現的安全性漏洞,不論這些漏洞出現在應用程式還是在 PHP 的核心部分,Suhosin 的安全關卡都可以防止這些漏洞做成破壞。
Suhosin 是一個韓語的音譯,意思大約是守護天使,但是別誤會 Hardened-PHP 是由韓國人組成,它其實是由三名知名的 PHP 保安專家和 PHP 核心編程人員合作的網站。
Suhosin 由兩部分組成,第一部份是 PHP 核心的補丁,提供低階的安全保護,例如緩衝區溢滿等,第二部分是一個 PHP 擴充模組,提供多項保護功能,包括:
    * 自動把 cookies 加密/解密
    * 容許關閉 preg_replace() 中的 /e 選項
    * 容許關閉 eval_r()
    * 透過設定函式呼叫層數的限制,避免出現無窮遞歸(infinite recursion)
    * 防止應用程式修改 memory_limit
    * 保護 mail() 免受「newline 攻擊」
    * 保護 preg_replace() 免受「\0 攻擊」
    * 自動加密/解密 session 數據
    * 保護 session 免受騎劫
    * 若果用戶呈交的資料包含 GLOBALS、_GET、_COOKIE 等敏感名稱,一律過濾掉
    * 容許設定用戶呈交的資料的數量和長度上限
    * 從上載檔案中自動禁止那些可以在伺服器上執行的程式
No.7 安装php5-extensions
# cd /usr/ports/lang/php5-extensions/
# make config 
Options for php5-extensions 1.0
-------------------------------------------------
[X] FTP        FTP support
[X] GD        
[X] GETTEXT
[X] MBSTRING
[X] MYSQL
[ ] POSIX //去掉.
[ ] SQLITE //去掉.
[X] ZLIB
# make install clean
No.8 安装Zend Optimizer
# cd /usr/ports/devel/ZendOptimizer/
#make install clean
//直接就可以安装.不用去fetch好几M的包..知道diskfiles好处了吧.
//你会看到以下提示:
//You have installed the ZendOptimizer package.
//Edit /usr/local/etc/php.ini and add:
//[Zend]
//zend_optimizer.optimization_level=15
//zend_extension_manager.optimizer="/usr/local/lib/php/20050922-zts/Optimizer"
//zend_extension_manager.optimizer_ts="/usr/local/lib/php/20050922-zts/Optimizer_TS"
//zend_extension="/usr/local/lib/php/20050922-zts/ZendExtensionManager.so"
//zend_extension_ts="/usr/local/lib/php/20050922-zts/ZendExtensionManager_TS.so"

//ok根据提示我们继续.
# ee /usr/local/etc/php.ini
//如果你打开是空白.那一定是忘了
# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini//
//然后再
# ee /usr/local/etc/php.ini
//在最下边加上.
[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer="/usr/local/lib/php/20050922-zts/Optimizer"
zend_extension_manager.optimizer_ts="/usr/local/lib/php/20050922-zts/Optimizer_TS"
zend_extension="/usr/local/lib/php/20050922-zts/ZendExtensionManager.so"
zend_extension_ts="/usr/local/lib/php/20050922-zts/ZendExtensionManager_TS.so"
//先不要急着测试apache mysql php是否好使..心急吃不了热豆腐...明白不?我还没说完呢...
.10 编辑php.ini
#ee /usr/local/etc/php.ini
//查找safe_mode = Off,更改为safe_mode = On
//查找disable_functions =phpinfo
//探针就不好使了..想看配置没门
//ESC保存退出
//至于php配置先说到这..哪天有时间再补...
No.11 apache+mysql开机后自动运行
#ee /etc/rc.conf
mysql_enable="YES"
apache22_enable="YES"
sendmail_enable="NONE"
//添加以上几条.
//ESC保存退出.
//别急着reboot就完事了...
No.12 编辑index.php
#cd /usr/local/www/apache22/data/
#rm index.html
//不删的话您只能看到 it works!
#ee index.php
//输入:
<?php
phpinfo();
?>
//ESC保存退出.
//ok现在您可以放心的reboot了...
//起来之后打开你的IP地址..看到什么了?大声告诉我..什么...空白?空白就对了...嘿嘿....
//因为...

QUOTE:
编辑php.ini
#ee /usr/local/etc/php.ini
//safe_mode = Off,更改为safe_mode = On
//查找disable_functions =phpinfo //探针就不好使了..想看配置没门
//disable_functions 禁止了phpinfo函数呗...
//想看看辛勤劳动的结果是吧?
#ee /usr/local/etc/php.ini
//找到disable_functions =
//ESC退出保存..

HostnameLookups Off