服务器 频道

FreeBSD 5.2.1R Web Server架设实例

    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 W99vH_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 
    具体操作如下。寻找:

    找到这段之后,按照上述帖子的推荐值修改为: 
    StartServers 10 
    MinSpareServers 10 
    MaxSpareServers 15 
    ServerLimit 2000 
    MaxClients 1500 
    MaxRequestsPerChild 10000


    至此,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
    文件里面只有这么一行代码:

    此时再访问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部分开始。本例中应该这么继续。
    #cd /usr/ports/ftp/pure-ftpd
    #ee Makefile

    根据上面的帖子给你的makefile里加上必要的CONFIGURE_ARGS,然后保存退出ee。本例中没有指定安装目录,使用ports默认的安装目录。
    #make W99vH_MYSQL=1 W99vH_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.zip
    http://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用户及主机。(ports装的phpsysinfo2.1对intel板载千兆网卡的工作状态报告有些问题,从phpsysinfo的网站下载一个2.2版可以修正这个问题,而且2.2版支持简体中文。)
    3. 关于新增虚拟主机。
    按照本例中的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

    下面我来根据我的实践,简单说说本例中的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,非常感谢!!

    七、后记——关于apache日志轮询。 
    服务器至今运行了一个半月了,硬盘并不大,日志问题成了困扰我的一个大问题。可惜开始我还是不太会用cron及cronolog,这几天看了chedong的blog,终于搞好了,和大家分享一下吧。我是这么做的: 
    首先下载cronolog包,通过ssh传到server上,解包安装,默认就会很好的安装了。 
    #tar -zxvf cronolog-1.6.2.tar.gz 
    #cd cronolog-1.6.2 
    #./configure 
    #make install

    然后打开httpd.conf 
    #ee /usr/local/etc/apache2/httpd.conf 
    到虚拟主机的设置部分,把log日志记录改成如下的写法:
CustomLog "|/usr/local/sbin/cronolog /yoursite/log/access%w.log" common
ErrorLog "|/usr/local/sbin/cronolog /yoursite/log/error%w.log" 
    再运行 crontab -e指令,给cron加入如下两个任务: 
    0 5 * * * /bin/rm /yoursite/log/access`date -v-6d +\%w`.log 
    10 5 * * * /bin/rm /yoursite/log/error`date -v-6d +\%w`.log 
    重启apache,以后的日志将每天做一个备份,并且只保留1周的了。嘿嘿。

    附录A:对新人来说的重要文件,其位置及其用处。 
    /etc/make.conf 
    编译的全局控制配置文件,很复杂,有例子,可以参考。 
    /etc/rc.conf 
    rc应该是资源的意思。此文件管理server的重要资源,例如网卡设置、守护进程启用关闭、功能开启关闭等等。 
    /usr/local/etc/rc.d 
    这不是个文件,而是个目录,相当于dos的autoexec,这里面的sh script都会在机器启动时自动执行。同时,你要关闭apache或者mysql,都可以在这里通过运行sh script达到目的。 
    /usr/local/etc 
    这个同样不是文件,而是目录。非操作系统的后装的软件的配置文件大都在这里放置。
    /usr/local/etc/php.ini
    php配置文件。把同目录下的php.ini-recommend拷贝一下就很好用。
    /usr/local/etc/apache2/httpd.conf
    apache2 web server配置文件。
    /usr/local/etc/pure-ftpd.conf
    pure-ftpd基础配置文件。
    /usr/local/etc/pureftpd-mysql.conf
    pureftpd的mysql配置文件。
    /usr/db/mysql/my.cnf(这是我的例子,你的或许应该是/var/db/mysql/my.cnf) 
    mysql配置文件。在/usr/local/share/mysql里有例子,分别是my-small.cnf...my-huge.cnf。拷贝一份合适的到上述位置即可,我拷贝的是my-large.cnf。


 

0
相关文章