分类: LINUX
2009-11-24 20:37:46
教研室需要,前几天在linux下搭建了一个php服务器,ftp服务器和squid代理服务器。
下面记录下这些东西:
环境:
Ubunut9.10
1. php服务器搭建:
linux下一般采用apache+mysql+php
sudo apt-get install ssh
sudo apt-get install mysql-server-5.0
sudo apt-get install apache2
sudo apt-get install php5 libapache2-mod-php5
sudo apt-get install php5-mysql
sudo mysqladmin -u root password newpassword
(一般自动网站需要手工先建一个database)
(
$ mysql -u adminusername -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5340 to server version: 3.23.54
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE DATABASE databasename;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON databasename.* TO "wordpressusername"@"hostname"
-> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql> EXIT
上面就安装完了,但是要配置一些东西:
1)修改ServerRoot
sudo gedit /etc/apache2/apache2.conf
比如修改为ServerRoo=/var/www
同时要修改: /etc/apache2/sites-enabled/000-default文件:
2)php配置。
sudo gedit /etc/php5/apache2/php.ini
这个只需修改一个东西就可以了。
将extension=mysql.so取消注释。
既激活它,否则像mysql-connect等函数在php不能使用。
然后sudo /etc/init.d/apache2 restart既可以了。
然后php源码放到/var/www目录即可。
2. ftp服务器搭建:
sudo apt-get install vsFtpd
然后就是配置了,我们的要求是不能匿名登陆,有几个账号,不同的账号有不同的权限,比如一个账号拥有所有全新,而另一个账号能上传,但是不是新建文件夹,删除操作等。
这个要求是用vsftpd的虚拟用户很好实现。
首先是认证部分:
sudo apt-get install db4.6-util
sudo db3_load -T -t hash -f user.txt /etc/vsftpd_login.db
sudo chmod 600 /etc/vsftpd_login.db
上面user.txt中格式是:
用户名
密码
用户名
密码
在/etc/pam.d目录中建立vsftpd.vu
sudo gedit /etc/pam.d/vsftpd.vu
内容如下
auth required
/lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
然后配置vsftpd.conf
/etc/vsftpd.conf
为:
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=rtlab
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd.vu
local_enable=YES
secure_chroot_dir=/var/run/vsftpd
上面的/etc/vsftpd_user_conf是各个用户的配置文件:
下面就来配置:比如对于public用户:
Sudo gedit /etc/vsftpd_user_conf/public
输入:
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/ftp/
上面还要建用户rtlab.
Sudo adduser –d /home/ftp -s /bin/false
sudo chown rtlab /home/ftp/
然后sudo server vsftpd restart
如果想要更多的权限限制可以使用:
比如要把删除文件和目录的命令取消,在vsftp_user_conf里添加如下命令:
cmds_allowed=ABOR,APPE,CWD,CDUP,FEAT,LIST,MKD,MDTM,PASS,PASV,PWD,QUIT,RETR,REST,
STOR,STRU,TYPE,USER
现在支持断点续传(上传和下载)。
3. squid代理服务器搭建。
我们实现的是用户名和密码验证的模式:
首先是
sudo apt-get source squid squid-common
这就账号了,由于要认证,执行下面这个:
sudo htpasswd -c /var/squid/etc/password rtlab
然后在/etc/squid/squid.conf中的#http_access allow all前面加如下配置即可。
auth_param basic program /usr/lib/squid/ncsa_auth /var/squid/etc/password
auth_param basic children 5
auth_param basic realm My Proxy Caching Domain
auth_param basic credentialsttl 2 hours
acl normal proxy_auth REQUIRED
http_access allow normal
如果要添加时间限制:
acl worktime time MTWHF 9:00-11:40 14:00-17:30
http_access deny worktime
http_access allow normal
这样即可。
同时要将linux的转发功能开通,这个我也困扰了很久。
后来试着去做才发现:
Sudo –i
echo “1”>/proc/sys/net/ipv4/ip_forward
即可。
然后squid restart
然后其他代理客户端只需使用rtlab 密码即可使用这个代理。