免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1397 | 回复: 0
打印 上一主题 下一主题

WebServer架设总结 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-03 20:19 |只看该作者 |倒序浏览
//文章作者:Stuhack
//作者网站:BSDer
www.bsdforum.net
System:
FreeBSD www.bsdforum.net[/ 6.2-BETA2 FreeBSD 6.2-BETA2 #0: Mon Oct  2 03:22:01 UTC 2006     
root@opus.cse.buffalo.edu
:/usr/obj/usr/src/sys/GENERIC  i386
Apache Version:
Apache/2.2.3 (FreeBSD) DAV/2 PHP/5.1.6 with Suhosin-Patch
mysql Version:
Client API version 5.1.11-beta
Zend Version:
Zend Optimizer v3.0.1
至于装系统.我就不多讲了只要记住.系统安装最小化模式+man+ports+src+sys+perl5.8 就好.少走弯路.
很多文章说第一件事就是更新standard-supfile 我觉得如果你安装的时候选择了src就没有浪费大量的时间去更新standard-supfile了.接着下一步他们会告诉你编译内核..如果您要是装FreeBSD 6.2-BETA2 似乎已经很安全稳定的了.就没有必要花二三个小时去重新编译吧.起码安装WEBserver不用.只要您把安全做好.我认为利用系统漏洞入侵您的服务器不太可能..有必要的时候再重新编译..个人意见.您想重新编译我也不能挡着你不让是不..
No.1 安装cvsup-withou-gui
www# pkg_add -r cvsup-without-gui //非常感谢提醒ezgo指出without少了一个t...以后注意了.
Fetching
ftp://ftp.freebsd.org/pub/FreeBS ... vsup-withou-gui.tbz
Done
//要是没cvsup-withou-gui就不能更新ports 往下继续做那都是扯淡..
//当出现Done的时候 没必要重起服务器..只需要
#rehash
No.2 更新ports
#cd /usr/share/examples/cvsup
#ee ports-supfile
//把
*default host=CHANGE_THIS.FreeBSD.org
//改为:
*default host=cvsup1.FreeBSD.org
QUOTE:
小提示:您可以ping cvsup1 cvsup2 cvsup3 cvsup4 看哪个返回值小就用哪个...
比如说你在本机ping
www# ping cvsup1.cn.freebsd.org
PING cvsup1.cn.freebsd.org (202.108.251.20

: 56 data bytes
64 bytes from 202.108.251.208: icmp_seq=0 ttl=247 time=1.914 ms
www# ping cvsup2.cn.freebsd.org //不通
PING cvsup2.FreeBSDChina.org (218.30.5.19): 56 data bytes
您看下time哪个值小就用哪个.没返回值的你干脆别用..浪费时间//作为webserver,升级全部的ports是完全没有必要的,因此可以把 ports-all那行前面加#注释掉。继续往后面
//找,有很多ports分支,我们把需要的打开,不需要的保留行首的#,就是取消了。如果是WEBserver 只更新 :
      ports-databases //mysql5
      ports-devel         //Zend Optimize
      ports-ftp              //pure-ftpd
      ports-lang           //php5
      ports-net            
      ports-www          //apache22
//就可以...不过如果你网速还可以的话建议还是你都选上..万一中间出什么错你回来还得找我算帐...
#cvsup –g –L 2 ports-supfile
#cd /usr/ports/distfiles/
#ls
//肯定是空的.
No.3 下载我为您精心准备的套餐diskfiles
//fetch 我为您准备的distfiles包(133M).可以节省你大量fetch外国站的包...不领情就算了.
//反正我是为自己准备的.不为别的.网通线路 电信下载慢的话您就自己慢慢更新去吧.我也没办法
//我是机房光纤 所有直接都选上了..慢的话就考虑考虑是否去掉all
#fetch
http://soft.stuhack.com/other/distfiles.tar
distfiles.tar                                  68% of  133 MB 1277 kBps 00m33s
#tar -zxvf distfiles.tar
x mysql-5.1.11-beta.tar.gz
x perl-5.8.8.tar.bz2
x php-5.1.6.tar.bz2
x phpMyAdmin-2.9.0.2.tar.bz2
x ZendOptimizer-3.0.1-freebsd6.0-i386.tar.gz
x apache22/
x apache22/apr_dbd_mysql.rev-50.c
x apache22/httpd-2.2.3.tar.bz2
x defined-or-5.8.8.bz2
//安装apache php mysql Zend一些比较大的包都在/usr/ports/distfiles/下了.不信你可以ls看一下.
No.4 安装mysql
#cd/usr/ports/databases/mysql50-server
#make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes WITHOUT_INNODB=yes install clean
#cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf
#rehash
//切记..如果你要安装DZ论坛的必需加上WITH_CHARSET=gbk 要不然后悔的就是你.重新编译去吧你.
No.5 安装Apache
#cd /usr/ports/www/apache22
#make WITH_MPM=worker WITHOUT_IPV6=yes WITH_THREADS=yes WITHOUT_SSL=yes install clean
No.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 核心編程人員合作的網站。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是否好使..心急吃不了热豆腐...明白不?我还没说完呢...
No.9 编辑httpd.conf
#ee /usr/local/etc/apache22/httpd.conf
//查找 :
#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都会有这种错误.被黑客目录浏览到配置文件.到时候死了没我的事.
    DirectoryIndex index.html index.php
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
    ServerLimit         3000
    StartServers          5
    MaxClients          5000
    MinSpareThreads      75
    MaxSpareThreads      300
    ThreadsPerChild      50
    MaxRequestsPerChild   80000
//切记... 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
//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退出保存..
No.13 重起apache
#apachectl restart
//F5刷新一下看看有什么东西出现了...
No.14 myql
#mysql
Welcome to the MySQL monitor.Commands end with ; or \g.
You MySQL connect id is 2 to server version:5.1.11-beta
Type 'help;' or '\h' for help.Type 'c\' to clean the buffer.
mysql>show databases;
+-------------------------+
|    Database              |
+-------------------------+
|information_schema |
|cluster                      |
|mysql                        |
|test                          |         
+-------------------------+
4 rows in set
mysql>create database stuhack;
Query OK ,1 rows affected
No.15 phpMyAdmin
#cd /usr/ports/distfiles
#tar -zxvf phpMyAdmin-2.9.0.2.tar.gz
x phpMyAdmin-2.9.0.2/themes/original/img/spacer.png
x phpMyAdmin-2.9.0.2/themes/original/img/vertical_line.png
x phpMyAdmin-2.9.0.2/themes/original/img/window-new.png
x phpMyAdmin-2.9.0.2/themes/original/info.inc.php
x phpMyAdmin-2.9.0.2/themes/original/layout.inc.php
x phpMyAdmin-2.9.0.2/themes/original/screen.png
#mv phpMyAdmin-2.9.0.2 /usr/local/www/apache22/data/phpMyAdmin
#cd /usr/local/www/apache22/data/phpMyAdmin
#cp config.sample.inc.php config.inc.php
#ee config.inc.php
//找到
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
//改成
//如果这儿不添的话.他会提示你"配置文件现在需要绝密的短语密码(blowfish_secret)。"
$cfg['blowfish_secret'] = 'fuck'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
//'fuck'这个你随便写.不一定是root的密码..
//继续找
$cfg['Servers'][$i]['controluser'] = 'pmausr';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
//找到这句改成
$cfg['Servers'][$i]['controluser'] = 'root';
$cfg['Servers'][$i]['controlpass'] = '';
//打开
http://ip/phpMyAdmin
//欢迎使用 phpMyAdmin 2.9.0.2
//Language GB2312
//登入
//登入名称:
// 密码:
//您直接输入root回车就可以.
//您会看到...
# 显示 MySQL 的运行信息
# 显示 MySQL 的系统变量 文档
# 进程 文档
# 字符集和整理
# Storage Engines
# Reload privileges 文档
# 权限
# 数据库
//点权限
//root          localhost          否           ALL PRIVILEGES           是          编辑权限
//更改密码 执行
//刷新phpMyAdmin页面
#1045 - Access denied for user 'root'@'localhost' (using password: NO)
#cd /usr/local/www/apache22/data/phpMyAdmin/
#ee config.inc.php
//把
$cfg['Servers'][$i]['controlpass'] = '';
//改为
$cfg['Servers'][$i]['controlpass'] = 'stuhack';
//保存.刷新phpMyAdmin
//或者是:
#cd /usr/ports/database/phpmyadmin
#make install clean
No.16 配置虚拟主机.绑定域名
//配置虚拟主机.把两个域名绑定.分别显示各自的内容.之前要把域名解析到该IP
#ee /usr/loal/etc/apache22/httpd.conf
//找到
#Virtual hosts
#Include etc/apache22/extra/httpd-vhosts.conf
//把Include前边的#去掉.
#cd /usr/local/www/apache22/data/
#mkdir htdocs
#cd htdocs
#ee index.php
输入:
//htdocs 为unix.stuhack.com目录
#cd ../
#mkdir wwwroot
#cd wwwroot
#ee index.php
输入:
//wwwroot 为vhost.stuhack.com
#ee /usr/local/etc/apache22/extra/httpd-vhosts.conf
//按照下面的改成自己的
NameVirtualHost 125.208.15.11:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any  block.
#
    ServerAdmin
stuceo@stuhack.com
    DocumentRoot /usr/local/www/apache22/data/htdocs
    ServerName unix.stuhack.com
   
    allow from all
    Options +Indexes
   
    ServerAdmin
stuceo@stuhack.com
    DocumentRoot /usr/local/www/apache22/data/wwwroot
    ServerName vhost.stuhack.com
   
    allow from all
    Options +Indexes
   
#apachectl restart
//重起Apache服务器生效
//ok 打开
http://unix.stuhack.com/

//会显示 Unix.stuhack.com
//打开
http://vhost.stuhack.com
//会显示 Vhost.stuhack.com
No.16 MRTG 流量分析
//安装MRTG 可谓艰难.查了好多资料.也走了很多弯路.一步一步走出来的..
//在安裝 MRTG 之前,我们先使用 ports 來安装 SNMP:
#cd /usr/ports/net-mgmt/net-snmp
#make install clean
#cd /usr/local/share/snmp
#cp snmpd.conf.example snmpd.conf
#ee /usr/local/share/snmp/snmpd.conf
//添加以下内容
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
rocommunity     mrtg
syslocation     Office
syscontact      
stuceo@stuhack.com
#/usr/local/etc/rc.d/snmpd start
#netstat -an
udp4       0      0  *.161                  *.*
//接着ports 來安裝 MRTG:
#cd /usr/ports/net-mgmt/mrtg
#make install clean
#################################################
# Please create a MRTG config file in /usr/local/etc/mrtg                                 #
# A configuration file can be automatically generated with cfgmaker              #
# A sample configuration file is installed as mrtg.cfg.sample                           #
#                                                                                                                      #
# To enable MRTG in daemon mode, put the following to your /etc/rc.conf or #
# /etc/rc.conf.local file:                                                                                     #
#      mrtg_daemon_enable="YES"                                                                  #
#################################################
#ee /etc/rc.conf
snmpd_enable="YES"
mrtg_daemon_enable="YES"
#mkdir /usr/local/www/apache22/data/mrtg
//新建mrtg 为了是用ip可以直接访问mrtg
#cd /usr/ports/distfiles/
#tar -zxvf mrtg-2.14.5.tar
#cd mrtg-2.14.5
#cp images/* /usr/local/www/apache22/data/mrtg
//把mrtg解压一下.再把这些图像文件cp到mrtg下面.
#cd /usr/local/etc/mrtg
# rehash
# cfgmaker mrtg@
www.stuhack.com
>mrtg.cfg
//上面请特别注意:在 mrtg@
www.stuhack.com
也可以换成mrtg@yourip
//mrtg 是有其意义的(在  snmp 这个通讯服务里面的预设搜寻的一个代码,默认的可能是public,这就是刚才要查看snmpd.conf里的原因了)
//所以,如果你的主机的动态 DNS 名称为 your.domain.name 则你就『一定』要写成  
mrtg@your.domain.name
才行!千万不要弄错了!
#ee mrtg.conf
//还需要编辑一下这个文件加入WorkDir这一项,就是你的生成的网页的存放的位置。
WorkDir: /usr/local/www/apache22/data/mrtg
# Options[_]: growright, bits
Language:GB2312
//这个要注意的一点是他们前边不要有空格,否则会有什么” ERROR: Line 8 ( WorkDir: /var/www/html/mrtg) in CFG file (mrtg) does not make sense”的错误。
#whereis mrtg
mrtg: /usr/local/bin/mrtg /usr/local/man/man1/mrtg.1.gz /usr/ports/net-mgmt/mrtg
//为查找mrtg到底在哪..
# /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
# /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
# /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
//这个需要运行3次,前两次都会报错,不用去理会他,第3次就应该没有错误了
//不过,若是有问题的话,就需要修改mrtg.cfg,再执行直到没有错误发生为止。  
//如以下错误:
Rateup WARNING: /usr/local/mrtg2/bin/rateup could not read the primary log file for localhost
Rateup WARNING: /usr/local/mrtg2/bin/rateup The backup log file for localhost was invalid as well
Rateup WARNING: /usr/local/mrtg2/bin/rateup Can't remove localhost.old updating log file
Rateup WARNING: /usr/local/mrtg2/bin/rateup Can't rename localhost.log to localhost.old updating log file
#whereis indexmaker
indexmaker: /usr/local/bin/indexmaker /usr/local/man/man1/indexmaker.1.gz
/usr/local/bin/indexmaker
//为了查找indexmaker在哪.不要弄错了..
#/usr/local/bin/indexmaker -output=/usr/local/www/apache22/data/mrtg/index.html -title=LL /usr/local/etc/mrtg/mrtg.cfg
//上面这个程序indexmaker是在制作首页。会自动地输出一个index.html的文件中。
//如果说你以后修改了这个文件(比如增加对CPU,硬盘等的侦测,要再重新生成一次,否则图面会出不来的.
#crontab -e
//按下I键 插入的意思!
*/5    *    *    *    *    /usr/local/bin/mrtg  /usr/local/etc/mrtg/mrtg.cfg
//ESC 输入
:wq!
//设定每5分钟执行一次
//使用手工运行mrtg并不能定时产生适当的统计信息,因此最好还是定时自动运行mrtg来生 成统计信息,默认为五分钟运行一次。  
//ok!到此为止,配置完毕,记得一定要重新启动snmp和httpd服务!
#/usr/local/etc/rc.d/snmpd restart
Stopping snmpd.
Starting snmpd.
#apachectl restart
//現在你可以使用
http://yourserver/mrtg
來連去看看。
//打开
http://unix.stuhack.com/mrtg/
No.17 与系统帐号分离的PureFtpd  
//架设ftp我是一直没写.也一直找不到和合适的.选来选去还是用pureftpd
# cd /usr/ports/ftp/pure-ftpd/
# ee Makefile
加入 --with-puredb \
# make WITH_LANG=simplified-chinese install
# pw groupadd ftpgroup
# pw useradd ftpuser -g ftpgroup -d /dev/null -s /etc
# mkdir /home/stuhack
#/usr/local/bin/pure-pw useradd stuhack -u ftpuser -d /home/stuhack -m
//输入两次密码
#chown -R ftpuser:ftpgroup /home/stuhack
# /usr/local/bin/pure-pw mkdb /usr/local/etc/pureftpd.pdb
# cd /usr/local/etc/
# cp pure-ftpd.conf.sample pure-ftpd.conf
# ee pure-ftpd.conf
找到# PureDB /etc/pureftpd.pdb把
#掉支掉,路径改成你刚才建的。 我的是/usr/local/etc/pureftpd.pdb
# /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/30118/showart_270460.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP