设为首页收藏本站language 语言切换
查看: 1647|回复: 0
收起左侧

FreeBSD网站平台建设-安装配置web服务器

[复制链接]
 成长值: 63385
发表于 2010-8-20 12:10:19 | 显示全部楼层 |阅读模式
web服务器软件安装
    注意:在进行这步操作前建议把squid关掉,因为在进行主页更新测试时squid的cache会使更新后的主页不能及时反映出来!
    为了不使用squid,除了关掉squid外,还要删除ipfw的透明代理端口转发语句:
    # cd /usr/local/etc/rc.d # ./squid.sh stop # mv squid.sh squid.sh.bak # ipfw del 500 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80
    安装软件前,建议先#ee /etc/make.conf
    在文件里添加下面这行:
    MASTER_SITE_OVERRIDE=ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}指定ports软件首先从国内下载。否则所有软件从国外下载,有时候速度实在是不行。 本篇文章发表于www.xker.com(小新技术网) A. MYSQL 4.0的安装我选择了MYSQL4.0,不算老,也不算新。第二次装的时候,ports已经到了4.0.20版了。下面根据本例中的情况,进行具体说明。前面说了,mysql默认数据库放在/var分区里,如果你的数据库很大,那么你需要在前面分区的时候把/var分区分到足够大。ldconfig老大建议要4G。如果你和我一样想把数据库放到/usr分区,那么:
    #mkdir /usr/db
    先在/usr建立一个数据库目录,然后
    #cd /usr/ports/databases/mysql40-server
    #ee Makefile
    打开Makefile,找到DB_DIR?= /var/db/mysql
    改为
    DB_DIR?= /usr/db/mysql随后,按照这个帖子,根据delphij老大教诲,在Makefile里CONFIGURE_TARGET那行前面的空行加上两行优化选项:
    BUILD_OPTIMIZED=yes
    BUILD_STATIC= yes
    保存退出编辑。然后
    #make
    #make install
    开始下载并开始安装数据库。编译安装完之后,重启机器可以启动mysqld守护进程,可以
    #mysql
    如果能够见到
    mysql>
    提示符,说明安装好了。不过,刚装完的mysql默认的数据库连接是100个,远远不能应付大网站的要求。按照这个办法加大吧:http://www.fanqiang.com/a2/b1/20010705/140800801.html具体到本例中的mysql4.0 for freebsd5.2.1,应该这样修改连接数:
    #ee /usr/local/bin/mysqld_safe
    向下寻找到第312行(4.0.20版是314行),其行很长,以“$NOHUP_NICENESS”开头,以“>> $err_log 2>&1”结尾。该行被嵌套在一个if语句里。在312这行末尾的“ >> $err_log 2>&1”前面加上“ -O max_connections=1000 ”,(注意前后各留一个空格)。
    然后向下找到314行,也是很长的一行,以“eval "$NOHUP_NICENESS”开头,以“>> $err_log 2>&1”结尾。同样在“ >> $err_log 2>&1”前面加上“ -O max_connections=1000 ”。
    保存退出。然后重启,此时的mysql40就是1000个并发连接的数据库了。可以用下面的方法检查一下:
    #cd /usr/local/bin
    #mysqladmin -uroot -p variables
    将会打出一个长列表,按scroll lock后向上卷动屏幕,能看到里面有一项显示
    | max_connections | 1000 |
    那么表示最大并发连接数已经修改到1000了。
    至此,mysql数据库就装完了。
    B. APACHE2的安装同样的,由ports装apache,也不会有什么困难:
    #cd /usr/ports/www/apache2
    #make
    #make install
    完毕。就这么简单。编译中间可能会提问相关软件gettext的安装选项,全选上吧。编译时可能会提示安装新版textproc/expat2错误,原因是机器里已经有旧版的expat2。只需删除旧版重新安装新版expat2即可:
    #cd /usr/ports/textproc/expat2
    #make deinstall
    #make install
    #cd /usr/ports/www/apache2
    #make
    #make install
    继续make即可。
    C. APACHE2的mod安装APACHE2自带SSL,所以无需安装SSL。MOD_GZIP找不到有关APACHE2的文章,是不是也不用装,很奇怪。所以剩下的就是FASTCGI和php了。
    按要求,先装fastcgi for apache2,先看帖子:
    http://bbs.chinaunix.net/forum/viewtopic.php?t=221295
    输入指令:
    #cd /usr/ports/www/mod_fastcgi
    #make WITH_APACHE2=yes install
    OK,完成了。

下来是php。
    #cd /usr/ports/www/mod_php4
    #make
    然后下载编译,中间会提示你选择编译配置选项。mysql已经默认选上了,下来把GD和openssl也选上吧。其他的选项我也不知道有什么用,就没选了。随后
    #make install
    php4.3.6安装完成。
    D. web的安装后设置首先,设置apache的php访问能力。
    #cd /usr/local/etc/apache2
    #ee httpd.conf在AddType application/x-gzip .gz .tgz后面加上下面3行:
    #php support
    AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
    随后设置网站默认启动页允许为index.php。同样在httpd.conf里编辑,不必退出。找到DirectoryIndex index.html index.html.var添加index.php进去,为:DirectoryIndex index.php index.html index.html.var
    再设置apache默认字符集为简体中文。找到:
    AddDefaultCharset ISO-8859-1
    改为
    AddDefaultCharset GB2312
    另外,一个访问量较大的网站,apache默认的150连接肯定是不行的。请根据这个帖子修改:http://www.cnfug.org/journal/3/02.html具体操作如下。寻找:<IfModule prefork.c>找到这段之后,按照上述帖子的推荐值修改为:<IfModule prefork.c>
    StartServers 10
    MinSpareServers 10
    MaxSpareServers 15
    ServerLimit 2000
    MaxClients 1500
    MaxRequestsPerChild 10000
    </IfModule>
    至此,httpd.conf的设置完成。可以保存退出了。当然,如果你要搞虚拟主机,请根据手册和httpd.conf尾部的例子,再设置虚拟主机相关部分即可。有关我的虚拟主机设置,各位一会可以看我后面FTP安装后的解释。
    工作还没有完,给php设置ini。如果没什么特殊要求,可以直接使用默认推荐的php.ini。
    #cd /usr/local/etc
    #cp php.ini-recommeded php.ini
    此时,重启机器,http方式访问这台服务器,例如http://192.168.0.1,就能看到apache2的页面了。
    此时,可以用ee在服务器默认的web目录里写一个简单的php测试页面,例如#ee /usr/local/www/data/index.php
    文件里面只有这么一行代码:
    <? phpinfo(); ?>此时再访问http://192.168.0.1,就可以看到本机的php页面信息了。
    看到了phpinfo之后,就可以先安装zend optimizer了。zend optimizer只能手工安装,ports里找不到。从http://www.zend.com/store/products/zend-optimizer.php下载ZendOptimizer-2.5.2-FreeBSD5.1-i386.tar.gz后,通过ssh上传到服务器任一目录里。也可以用优盘、刻录盘转到服务器里。然后解压、安装:#tar -zxvf ZendOptimizer-2.5.2-FreeBSD5.1-i386.tar.gz #cd ZendOptimizer-2.5.2-FreeBSD5.1-i386 #./install.sh随后zend optimizer安装画面出现,根据提示一步一步走即可。临近完成,会提示x Your php.ini is relocated to the: /usr/local/Zend/etc directory x
    x and a symbolic link from the former place: x
    x /usr/local/etc/php.ini is created. x
    x x
    x Your original php.ini was backed-up to: x x /usr/local/etc/php.ini-zend_optimizer.bak x此时再访问http://192.168.0.1/index.php,可以看到phpinfo里有关zend optimizer的信息了。至此,web部分全部安装设置完毕。
    E. pure-ftpd的安装pure-ftpd的安装,我完全学自这个帖子:http://www.freebsdchina.org/forum/viewtopic.php?t=10279前面有关mysql的就先不用看了。直接从pure-ftpd部分开始。本例中应该这么继续。 本篇文章发表于www.xker.com(小新技术网)
    #cd /usr/ports/ftp/pure-ftpd
    #ee Makefile
    根据上面的帖子给你的makefile里加上必要的CONFIGURE_ARGS,然后保存退出ee。本例中没有指定安装目录,使用ports默认的安装目录。
    #make WITH_MYSQL=1 WITH_LANG=simplified-chinese install clean

随后安装会很顺利完成。继续下面的配置,执行下列操作,为pure-ftpd增加配置文件:
    #cd /usr/local/etc
    #cp pure-ftpd.conf.sample pure-ftpd.conf #cp pureftpd-mysql.conf.sample pureftpd-mysql.conf打开新生成的pure-ftpd.conf,把mysql数据库的那行的那个注释去掉——准备使用mysql作为验证。
    MySQLConfigFile /etc/pureftpd-mysql.conf
    再指定禁止匿名登录:
    NoAnonymous yes
    再指定允许上传人修改文件名:
    NoRename no
    允许登录用户使用chmod指令
    NoChmod no
    使用者可刪除文件
    KeepAllFiles no
    自动建立帐户的home dir
    CreateHomeDir yes
    conf设置完毕。随后导入数据库初始值。把下面这段拷贝粘贴为一个文本文件(原帖子有几处错误),例如ftp.mysql,然后执行下列命令导入mysql数据库里:#mysql -u root -p123456 < ftp.mysql
    代码:
    INSERT INTO mysql.user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES ('localhost','ftp',PASSWORD('123456'),'Y','Y','Y','Y','N','N','N','N', 'N','N','N','N','N','N');
    FLUSH PRIVILEGES;
    CREATE DATABASE ftpusers;
    USE ftpusers;
    CREATE TABLE admin (
    Username varchar(35) NOT NULL default '', Password char(32) binary NOT NULL default '',
    PRIMARY KEY (Username)
    ) TYPE=MyISAM;
    INSERT INTO admin VALUES ('Administrator',MD5('123456'));
    CREATE TABLE users (
    User char(16) NOT NULL default '', Password char(32) binary NOT NULL default '', Uid int(11) NOT NULL default '2000', Gid int(11) NOT NULL default '2000', Dir char(128) NOT NULL default '', QuotaFiles int(10) NOT NULL default '500', QuotaSize int(10) NOT NULL default '30', ULBandwidth int(10) NOT NULL default '80', DLBandwidth int(10) NOT NULL default '80', status enum('0','1') NOT NULL default '1', ipaccess varchar(15) NOT NULL default '*', comment tinytext NOT NULL, PRIMARY KEY (User),
    UNIQUE KEY User (User)
    ) TYPE=MyISAM;
    INSERT INTO `users` VALUES ('test1',MD5('123456'),2001,2000,'/home/test1',500,30 80,5,1,'*','*');
    数据库导入之后,还不能使用,还需要设置pureftpd-mysql.conf #ee pureftpd-mysql.conf根据文件里的默认提示,修改即可,很简单的。也可以参照上面说的帖子修改。
    至此有关系统里的修改全部完毕。你现在重启系统,可以试试用test1/123456来登录一下ftp了。
    随后,我们根据上述帖子,安装php-manager,实现web模式的ftp管理。下载ftp.zip(汉化的ftp.ziphttp://forum3.games.sina.com.cn/upload/39/400/20040615/1025/205182/205182.zip请尽快下载,晚了说不定就被sina删了),传到服务器上,然后#mv ftp.zip /usr/local/www/data
    #cd /usr/local/www/data
    #unzip ftp.zip #ee ftp/config.php修改config.php里面的连接参数,其他的基本上都不用改。保存。然后就可以用http://192.168.0.1/ftp/来访问这个web管理页面了。登录管理页面,输入密码(本例是123456),就可以看到预设的用户test1,及其状态。

四、系统安装后的一些事项。
    在本例中,这个web服务器是用来支撑4~5个网站或论坛用的。所以上面的安装过程,实际上都是为了这个目的。
    那么后续还有一些使用上的注意事项,这里简要说明一下。
    1. 首先,如果你想很方便地管理数据库,那么你应该装一个phpmyadmin,可以通过ports装,很简单,而且也是默认装在/usr/local/www/data里。
    2. 其次,如果你想比较方便地监视服务器状态,也可以装一个phpsysinfo,ports装也可以,同样默认装在/usr/local/www/data里。这样的话,服务器将来托管的时候,可以把/usr/local/www/data这个目录做成一个只有你知道的虚拟主机即可。从这个虚拟主机里可以看到整个服务器的状态、管理服务器的mysql、新增ftp用户及主机。
    3. 关于新增虚拟主机。
    前面提到了,本server是用来运行4~5网站的。按照本例中的pureftpd的装法,每当你在ftp管理页面生成一个帐号后,例如web1,随后用ftp软件登录server,server就会自动生成一个名为web1的用户,并同时在/home里生成一个web1的目录,具体为:
    /home/web1
    (实际上也就是/usr/home/web1)
    如果你要限制web1的配额,那么你在管理页面里就可以设置了。
    那么随后web1的apache2的web虚拟主机目录,在httpd.conf里当然也就指定为
    /home/web1
    依此类推。简单吧?
    五、远程控制你自己的web server。
    除了上面提到的phpmyadmin和ftp之类的web页面的简单控制之外,你当然少不了最终极的远程控制能力:ssh2。我是菜鸟,就不班门弄斧吹嘘这东西的好处了。总之,这东西是非常安全的、可以远程连接到你的server的手段。
    我前面都没有提到ssh,而实际上,自打上面的第三步第1小步完成了操作系统的初始安装之后,我们就可以使用ssh来远程控制server了,不仅效果和server的本机console一样,而且可能会更方便——因为我们可以用一个win2k的电脑,很方便地看着这里的帖子,边看边装,还能使用windows的CTRL-C/V,多好啊。
    首先声明,所有有关ssh的安装和连接的基本知识,都可以在下面这个帖子里找到:http://www.freebsdchina.org/forum/viewtopic.php?t=10210&highlight=&sid=bad63e2f6199b307404069be4ea19197
    下面我来根据我的实践,简单说说本例中的ssh应用方法。
    1. 首先在你的win2k上下载sshclient客户端,它是免费提供的,而且似乎更好用。
    http://www.ssh.com/support/downloads/secureshellwks/non-commercial.html 2. 由于我们安装操作系统的时候已经选择了ssh,所以,操作系统部分就不需要多设置了,默认就会启动sshd守护进程的。
    3. 之前安装系统的时候,曾经提示是否添加用户,我已经提示大家要至少添加一个用户,例如你自己的英文名字,而且这个用户必须是wheel组,只有wheel组的用户,才能远程su切换为root。如果你当时没有添加,那么在server本机状态现在添加一个wheel组的用户吧,这个用户将是你将来远程登录server的用户。
    4. 在win2k上安装好sshclient后,可以直接连接你的server,此时是用wheel组用户名及其密码登录的。登录后就可以su,然后输入root密码,就可以切换为root了。
    5. 上面这个登录方式已经足够安全了,别人无法窃听,但是将来托管后还是有可能会有漏洞。由于我们和server之间现在还是本地lan方式的连接,不存在安全问题,所以我们此时先用密码方式连到server,可以先用sshclient生成一个key,转为key方式连接,这样就基本没有安全漏洞了。做法如下:打开sshclient,菜单选edit--settings,出现设置对话框。里面有global settings--user authentications--keys选项,进入后,可以看到Generate New按钮,按下后根据提示,可是生成一个key,把这个key文件,按下面的按钮Upload,即可把这个key文件上传到server上你登录的home目录里,具体位置是/home/yourname/.ssh2。这个.ssh2目录,是上传时自动生成的。但Freebsd默认目录名是.ssh,而不是.ssh2。所以,根据上面提到帖子,我们用刚才提到的wheel组用户登录server,进行如下操作:
    $su
    password:
    #ls
    能看见里面已经有了一个.ssh2目录。继续下面:#mv .ssh2 .ssh改名为.ssh #cd .ssh #ssh-keygen -X -f yourkey.pub >> authorized_keys
    进入ssh目录,把刚刚上传的这个key文件导入机器的验证文件里。
    此时,你已经可以退出sshclient,以key的方式重新登录你的server了,不需要输入密码,可以直接登录,而且你不用担心泄密。软件附赠一个sftp,同样是加密的,很安全。
    六、鸣谢
    至此,我这个菜鸟也就没什么好说的了。上面这些,在方家来看都是小儿科,见笑了。不过,本着FREE的精神,我写出来这些乱七八糟的字,一来方便一下后来的新人,二来也是一点点私心——给我自己留个笔记。嘿嘿。(做自己的blog是没敢想过,只有本事看别人的blog了,kaka)
    目前我自己的server运行良好,为此特别感谢:delphij、ldconfig、jayvan、xiaohua、likuku,以及很多我一时想不起来的朋友。他们给了我很多及时的、有用的提示,使我能在1个月的时间里,首先启动这个server,非常感谢!!
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-3 04:02 , Processed in 0.068967 second(s), 12 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表