Linux下安装配置apache + php, tomcat, vsftpd全记录

以前真正对Linux的系统服务配置接触其实不是很多。前两天给研究生院网站配新服务器,完整得配置了一下apache+php及tomcat,外加ftp,折腾了好几天,总算完整得搞定了。记下来供以后参考。详细过程如下:

1.服务器配置IBM System x3650,4G内存,140G*3,RAID5
2.Linux RHEL AS4 u6,找人拷的DVD iso,吱吱嘎嘎得刻了盘
3.装系统,分区,按下不表。要配置的服务是apache+php,有独立数据服务器,所以不用mysql。另外就是tomcat+jdk,还有ftp。
4.Apache2.2.3,装完改了下端口和DocumentRoot,顺利运行
5.PHP5.2.5 第一次make install,运行apache报错:undefined symbol: SQLITE3SELECT,添加LoadModule之类的,依旧不行。百度之,./configure时加以下参数--with-apxs2=/usr/local/apache2/bin/apxs,再运行apache,报错:undefined symbol: Zend_ini_string,继续百度,确定zlib等系列组件都有,仍然报错。大囧。后来发现如果第一次make install失败后要tar个新的源代码或者make clean一下重新来过。终于搞定。
6.JDK 1.5.0_06,这个比较Naive
7.Tomcat 5.5.26。因为没接触过这玩意儿,down了个source包,不会装,发现要ANT,上网down之,发现奇慢无比。后来发现有直接的包,down下来tar后直接startup.sh就启动服务了,cp webapps/到网站根目录,配置conf/server.xml下的端口号和appBASE,也顺利启动。
8.FTP,用AS4自带的vsftpd,配置奇难,暂时放下。
9.修改/etc/inittab下的id为3,改为命令行启动
10.配置iptables,只开放相应服务端口,屏蔽其他端口
11.cp /usr/local/apache2/bin/apachectl到/etc/init.d/下,重命名为httpd,添加可执行权限,在/etc/rc3.d下建立符号连接S66httpd连到那个httpd,重启后apache可以顺利运行。
12.cp tomcat/bin/startup.sh到/etc/init.d下,重命名为tomcat,添加可执行权限,在/etc/rc3.d下建立符号连接S67tomcat连到那个tomcat,重启后tomcat不能运行。查看startup.sh,发现启动某个脚本时用的是相对路径,修改$PRG=$0,将$0(当前目录)改为tomcat/bin的绝对路径,重启后可以运行。
13.在/etc/rc3.d下添加符号连接S68vsftpd到/etc/init.d/vsftpd,系统自带的,省事不少。匿名用户可以顺利访问。接下来开始配置超级囧的虚拟ftp。
14.关于使用vsftpd配置虚拟ftp,网上有很多介绍,但都很傻X,翻了很多资料,都是要先给网卡绑定一个别名,配置一个新的ip地址,然后建立新的ftp监听新的ip,反正很麻烦。后来发现都是扯淡。
先说说虚拟ftp的好处,Linux下配置ftp比较简单的方法是使用本地帐户,就是Linux系统里创建的帐户。通常为了图配置上的省事,可以创建一个专门用于ftp的帐户,通过userlist文件控制只有固定的本地帐户可以访问ftp,然后给该帐户一个目录,再改改它在该目录的权限,就起到比较好的权限控制了。当然,这种方法配置起来方便而直观,只是灵活性差,安全性也不见得怎么样。所谓虚拟ftp呢,就是有自己定义的用户名和密码,以及相关权限设置。这些ftp用户的权限通过vsftpd映射到某个本地帐户的权限,灵活性强大多了。

vsftpd配置虚拟ftp的步骤:
a)假定/ftp是我们的ftp根目录。首先,创建一个ftpuser帐户,使用如下命令:
useradd –d /ftp ftpuser
设定ftpuser宿主目录,然后将/ftp目录chown给ftpuser.ftpuser,再chmod到700。接下来虚拟ftp的访问都是映射到ftpuser这个帐户的权限上。
b)随便创建一个文件,命名为ftp_id_list好了,再里面写上ftp的用户和密码,这些就是用来登陆ftp的帐户。每个用户占两行,一行id一行密码,如下:
user1
password1
user2
password2
然后执行:
db_load –T –t hash –f ftp_id_list /etc/vsftpd_login.db
c)在/etc/pam.d下创建ftp.vu文件,输入内容如下:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
(b)(c)两步的目的是为为虚拟ftp设置帐户的认证方式。将帐户和密码保存在数据库中,并采用pam方式进行认证。Linux下通常都是采用pam对帐户就行认证。
d)我的vsftpd.conf在/etc/vsftpd/下。现在开始修改配置。首先在该目录下创建virtual文件夹,在该文件夹下为刚才写下的每一个用户都创建一个配置文件,文件名与用户名相同。
e)先修改vsftpd.conf,主要需要修改的内容如下:
guest_enable=yes #起用虚拟帐户
guest_username=ftpuser #虚拟帐户映射到ftpuser的权限上
User_config_dir=/etc/vsftpd/virtual #虚拟帐户的配置信息
Pam_service_name=ftp.vu #帐号的认证方式
其他几项:
Listen=yes
Anonymous_enable=no
Local_enable=yes
Write_enable=no
Anon_upload_enable=no
Anon_mkdir_write_enable=no
Anon_other_write_enable=no
Chroot_local_user=yes #限制本地用户在宿主目录下
vsftpd.conf的权限是ftp的默认权限,这里最好权限给得低一些。然后到具体用户权限里去配具体权限。
到virtual/下配置每个用户的权限:

设置当前用户的主目录:
local_root=/ftp/user1
注意,要在/ftp下创立文件夹请使用以下方式:
su ftpuser
mkdir /ftp/user1
要保证ftpuser帐号在该目录有权限。

浏览权限:
Anon_world_readable_only=no

上传下载权限:
Write_enable=yes
Anon_upload_enable=yes

删除目录、重命名权限:
Anon_other_write_enable=yes

配置完毕后/etc/init.d/vsftpd restart重启一下看看

问题又出来了。是不是发现访问不上,或者很慢?

发现下面这段话:

使用这种方式(网上主流)可以开启ftp服务器,但是存在问题,该服务器只能支持ftp的主动连接(即port模式),而很多ftp客户端都是默认使用被动模式连接(pasv模式),故在连接该服务器的时候会出现等待socket端口超时的问题,解决方法一种是修改ftp客户端的设置,如cuteFTP在站点属性的类型中将数据连接模式改成Use Post。当然这种解决方案比较被动,而且要求用户了解该配置,显然不能对于广大的网民实用。故我使用了第二种方法,在服务器端设置该ftp支持被动模式。这种方法有两个注意点:

1、修改配置文件,将其声明为支持被动模式
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=60000
2、由于打开的被动端口50000~60000可能被iptables屏蔽,自己改设置吧。