发新话题
打印

[转载]我也说说的我的服务器大概过程

[转载]我也说说的我的服务器大概过程

文章出处:www.freebsdchina.org
文章作者:echiz

我前一段时间看到有朋友写了自己的服务器搭建的过程,第一个感觉就是这位老兄是linuz转过来的,其实在FreeBSD上面做,有更简单的方法。我是懒人,不想把时间浪费在敲键盘上。闲话免提,言归正传。

目标
我的目标是搭建一台放在自己家里面的服务器,通过ADSL连接提供Web服务。Web服务依赖Apache2,同时支持PHP4和Jsp/Servlet。对于Servlet和Jsp要求能与Apache2连接起来,我使用的是mod_webapp。

硬件环境
我的硬件环境还可以,ADSL猫是连在宽带路由器上面,专门的一台准服务器安装FreeBSD。说是准服务器的原因:主板原来是工作站的主板,带了一个SCSI的接口。我接了一块18G的SCSI的硬盘,又接了一块20G的IDE硬盘。机器没有显示器,由一个切换器共享一个套显示器鼠标键盘。

任务列表
安装操作系统
安装JAVA虚拟机
安装MySQL服务器
安装Postgresql服务器
安装Apache2服务器
安装mod_php4支持
安装Tomcat4支持
安装mod_webapp

一,安装FreeBSD 4.10
我想这里的大部分人安装FreeBSD都没有什么问题了,我就不说安装的细节了。但是有几个要点我要强调。安装4.10的原因是这个版本非常稳定,如果想看看自己机器到底能坚持多长时间的话,这个是上选。安装的时候可以不选X,我们是作服务器,用不到X。安装的时候一定要选择“Linux二进制代码运行支持”和“cvsup”的包。这是因为如果用ports安装“Linux二进制代码运行支持”要很长时间,还要下载很多的linux的软件包。安装“cvsup”是因为习惯于安装完系统就立刻cvsup,这样可以保证我下面安装的软件都是最新的。

cvsup服务器我建议就用FreeBSDChina的服务器,非常快。在cvsup之后可以把机器上的packages全部都拆掉,因为cvsup安装的时候带了很多久的库,以及X的基础库。但是“Linux二进制代码运行支持”不能拆,到现在为止,4.10的“Linux二进制代码运行支持”包还是最新的。在我们拆掉所有的包之后,可以从新编译cvsup,但是这次我们选择cvsup-without-gui。这是一个只工作在字符界面的cvsup,去掉了gui的部分,同时也不用再编译X的基础库了。
cvsup-without-gui位置:/usr/ports/net/cvsup-without-gui

二,安装JDK
这个步骤之后我们可以开始JDK14的编译工作了。JDK14的编译需要4个源码包。第一个是SUN出的Linux的JDK,然后是JDK的bin和src包,这四个包只能去SUN的网站上的下载,最后一个包是针对FreeBSD的补丁。这四个包具体需要什么版本,在什么地方下载,可以看ports编译中的提示。这当中也没有什么细节可以说,但值得强调的有JDK14经常会在编译中有错误,这时候你可以再cvsuo一次,看看JDK14的ports有没有升级。一般情况这个时候已经可以正确编译了。当然也有一等就是几天的情况,但是很少见。安装完以后,可以把linux-sun-jdk卸载。
JDK14的位置:/usr/ports/java/jdk14
SUN的JDK14位置:/usr/ports/java/linux-sun-jdk14

三,安装数据库
MySQL是这些ports里面安装最简单的一个。直接在编译ports就好。需要强调的是MySQL的默认数据存放位置时/var/db/mysql,一般来讲是在/var所在的分区都不大(我记得默认好像是256Mb),我们可以把这个目录(/var/db/mysql)mv到/usr/local去,然后在/var/db里面做一个到/usr/local/mysql的软连接。
我们在这里不讲MySQL使用什么样的进程库,因为我认为这个不是我这样一个懒人该考虑的,这个应该交给ports的制作者考虑,同时对于我前面讲的目标来讲性能不是太大的问题。
MySQL的位置:/usr/ports/databases/mysql40-server

Postgresql的ports安装也不麻烦,在make install之后,要先用“su -l pgsql -c initdb”初始化数据库,然后修改/usr/local/pgsql/data/postgresql.conf使postrgresql打开socket以允许远程连接,最后修改/usr/local/pgsql/data/pg_hba.conf以确定哪些远程主机有访问的权限。这些修改也可以参考这些文件里面的说明。最后,用createuser创建可以使用postgresql的用户。
Postgresql的位置:/usr/ports/databases/postgresql7

四,安装Apache2
使用Apache2用ports安装同样没有什么细节可言,需要着重强调的就是最近rc.d里面的脚本建议改用新的rc.subr来搞,区别就是这样的启动脚本可以在/etc/rc.conf里面关闭。所以我们在安装完apache2之后,要在/etc/rc.conf里面加'apache2_enable="YES"'。
Apache2的位置:/usr/ports/www/apache2

五,安装PHP4
PHP4的ports最近还是变化比较大的,首先是,php的cli和mod_php4以及pear共用了一个php4的底层,其次是php4的extemsion和mod_php4或php4的cli分开,可以独立地安装。知道了这些变化,那么下面的安装就简单了,首先编译mod_php4,编译的时候选择apache2支持。安装好之后,要调整一下apache的设置,编辑/usr/local/etc/apache2/httpd.conf。在里面添加两行
代码:

AddType application/x-httpd-php .php


之后从新启动apache就可以测试php是否启动了。我们看phpinfo()的信息,可以发现连mysql的支持都还没有装。这时候,我们可以开始装php4的extension了。我们可以在/usr/ports/www找到所有的这些扩展,安装过程和普通的ports安装没有什么区别。

六,安装Tomcat
我安装的Tomcat是4.1.30,为的是和我们的mod_webapp配合,和tomcat5的配对我还没有测试过,等有时间再测试吧。tomcat如果安装好了JDK14,安装是不会有任何问题的。

七,安装mod_webapp
这个安装比较费劲,通过ports和自己编译都不顺利,我详细说说过程。
posrt编译:
在/usr/ports/www/mod_webapp直接make会有错误信息
代码:

cc: /usr/ports/www/mod_webapp/work/jakarta-tomcat-connectors-4.1.24-src/webapp/build/objs/.libs/pr_info.o: No such file or directory
cc: /usr/ports/www/mod_webapp/work/jakarta-tomcat-connectors-4.1.24-src/webapp/build/objs/.libs/pr_warp.o: No such file or directory
cc: /usr/ports/www/mod_webapp/work/jakarta-tomcat-connectors-4.1.24-src/webapp/build/objs/.libs/pr_warp_config.o: No such file or directory
cc: /usr/ports/www/mod_webapp/work/jakarta-tomcat-connectors-4.1.24-src/webapp/build/objs/.libs/pr_warp_network.o: No such file or directory
cc: /usr/ports/www/mod_webapp/work/jakarta-tomcat-connectors-4.1.24-src/webapp/build/objs/.libs/pr_warp_packet.o: No such file or directory
cc: /usr/ports/www/mod_webapp/work/jakarta-tomcat-connectors-4.1.24-src/webapp/build/objs/.libs/pr_warp_socketpool.o: No such file or directory
cc: /usr/ports/www/mod_webapp/work/jakarta-tomcat-connectors-4.1.24-src/webapp/build/objs/.libs/wa_config.o: No such file or directory
cc: /usr/ports/www/mod_webapp/work/jakarta-tomcat-connectors-4.1.24-src/webapp/build/objs/.libs/wa_main.o: No such file or directory
cc: /usr/ports/www/mod_webapp/work/jakarta-tomcat-connectors-4.1.24-src/webapp/build/objs/.libs/wa_request.o: No such file or directory


出现这个错误提示信息以后,我们可以在/usr/ports/www/mod_webapp/work/jakarta-tomcat-connectors-4.1.24-src/webapp/build/objs里面mkdir一个.libs,然后把那几个找不到的.o和.lo文件都靠进去,这时候再make一遍就好了。
自己编译:
自己编译的话首先要安装ant,这个可以在/usr/ports/devel/apache-ant里面make.
之后需要在下载一个jakarta-tomcat-connectors-4.1.30-src.tar.gz,会生成一个jakarta-tomcat-connectors-4.1.30-src,给她改名为jc,我们把当前目录换到jc/webapp里面。这时候执行support/buildconf.sh,之后会生成用于make的各类文件。
但是这个命令会提示找不到autoconf。其实我们的在前面安装中,会自动安装autoconf的,那为什么他会说找不到呢?我们到/usr/local/bin目录里面看看,这时我们会发现里面有一个autoconf253,还有一个autoconf259。这是因为我们安装了不同版本的autoconf的原因,这个时候我们可以为autoconf259建立一个autoconf的软连接。这时候我们再support/buildconf.sh就没有问题了。
这之后需要进行make,我们直接make,会提示错误
代码:

make: don't know how to make /%.c. Stop


这是因为autoconf建立的Makefile只支持gmake。你也不要担心,gamke在前面的安装也自动装好了,我们直接敲gmake就好了。安装过程中同样会出ports安装那样的错误,可以用同样的方法解决。
编译完可以在jc/build里面找到mod_weapp.so。我们把它拷贝到/usr/local/libexec/apache2里面。下面就开始设置apache和tomcat是他们连接起来。
配置mod_webapp
首先要配置apache,我们编辑apache的httpd.conf,在文件的最后加上
代码:

LoadModule webapp_module libexec/apache2/mod_webapp.so
WebAppConnection conn warp 192.168.16.2:8008
WebAppDeploy examples conn /examples


这个意思是加载模块,连接tomcat的warp协议端口8008,然后影射tomcat的examples到/examples

接下来我们配置tomcat
我们打开/usr/local/jakarta-tomcat4.1/conf/server.xml
在</server>前面加
代码:

  <Service name="Tomcat-Apache">
   <Connector className="org.apache.catalina.connector.warp.WarpConnector"
    port="8008" minProcessors="5" maxProcessors="75"
    enableLookups="true" appBase="webapps"
    acceptCount="10" debug="0"/>
   <Engine className="org.apache.catalina.connector.warp.WarpEngine"
    name="Apache" debug="0">
    <Logger className="org.apache.catalina.logger.FileLogger"
      prefix="apache_log." suffix=".txt"
      timestamp="true"/>
    <Realm className="org.apache.catalina.realm.MemoryRealm" />
   </Engine>
  </Service>


这一段是让tomcat打开对warp协议的支持。在tomcat4.1的windows版里面这一段是注释掉的。但是在freebsd的ports安装的时候,这一段被去掉了,所以只能自己安装。
我们先重起tomcat,然后重起apache以后就好了
这个时候你访问http://localhost/examples/的时候看见了一个tomcat的目录列表,那么就说明你可以配置成功了。注意最后一个/绝对不能少!
我用青春赌明天

TOP

发新话题