xampp安装好以后就只有一个默认站点及一个默认nobody的ftp帐户,这显然不符合咱们平时的需求了,那么下面就来说一下如何设置并管理多个虚拟主机及ftp帐户了,至于xampp的安装不在此讨论范围,读者可自行参阅官网的相关说明。html
一、首先讲一下ftp帐户的配置:linux
xampp采用的是proftpd服务端,这个不像咱们Win环境下经常使用的Serv-U,用户账户不是在服务端工具里面进行配置,而是在linux系统账户里面配置的。所以咱们可使用命令:web
groupadd ftpusers
先在系统中建立一个名称为ftpusers的用户组,这里的名称能够随便设置,主要是为了区分ftp账户与系统其余类型的账户因此我这里就命名为ftpusers,而后在这个组里面添加一个用户:shell
useradd -d /opt/lampp/www/site1 -g ftpusers -s /sbin/nologin site1ftp
第一个参数-d表示用户home目录,其中/opt/lampp/www/这个路径必须是存在的,而site1则是在该命令执行时自动建立的。第二 个参数-g表示此用户隶属于哪一个用户组,第三个参数-s表示此用户的shell环境,为安全起见咱们应该设置为一个无权限的路径。最后一个参数才是此账户 的登陆名称,我这里是site1ftp。apache
建立好以后咱们就要为该账户设置一个密码了:安全
passwd site1ftp
执行该命令后按提示输入两次密码便可完成账户site1ftp的密码设置了。ide
接下来咱们设置一下账户home目录的权限:工具
chmod -R 777 /opt/lampp/www/site1
至此,ftp账户的添加算是完成了,顺便提示一下,删除账户的命令是userdel,修改账户的命令是usermod,存储账户的文件路径为/etc/passwd。网站
另外,为安全起见,咱们应该在proftpd的服务配置文件(通常路径是/opt/lampp/etc/proftpd.conf)中修改一下 DefaultRoot为ftpusers,将ftpusers组里面的用户访问范围限制在其home目录。也能够把DefaultRoot设为~(键盘 左上角的那个符号),这样表示全部的组里面的用户都有这个限制了。若是要单独设置两个组或更多的组你必须另起一行或多行,说明以下:spa
DefaultRoot ftpusers #限制ftpusers组里面的用户
DefaultRoot ~ #限制全部组里面的用户
DefaultRoot ftpusers DefaultRoot nobody #限制ftpusers组及nobody组里面的用户
DefaultRoot ftpusers,nobody #限制既隶属于ftpusers组同时也隶属于nobody组里面的用户
对了,还差一个步骤,应该在proftpd配置文件中对ftp目录添加可重写的权限,以下:
<Directory /opt/lampp/www/*> AllowOverwrite on </Directory>
不然会出现ftp上传文件时没法覆盖同名文件的问题。
二、而后咱们再讲一下虚拟主机的配置
先执行:
cat /opt/lampp/etc/httpd.conf
查看一下xampp的apache配置文件,咱们发现其中有一行:
#Include etc/extra/httpd-vhosts.conf
看来,xampp为咱们准备了一个专用于配置虚拟主机的文件了,去掉#号以删除其注释,而后编辑/opt/lampp/etc/extra /httpd-vhosts.conf文件,此文件中xampp为咱们建立了两个虚拟主机的示例,咱们把这两个示例注释掉,而后添加咱们本身须要的虚拟主 机,例如:
<VirtualHost *:80> DocumentRoot /opt/lampp/www/site1 ServerName blog.ewebe.net </VirtualHost>
DocumentRoot表示虚拟主机对应的路径,即网站目录,ServerName表示虚拟主机的访问地址,相似IIS中的主机头值。
至此,虚拟主机的设置也算是完成了。
最后咱们须要在apache配置文件/opt/lampp/etc/httpd.conf中添加一下网站目录的访问权限。
<Directory "/opt/lampp/www/site1"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
这里能够将目录路径/opt/lampp/www/site1改成/opt/lampp/www,为之后创建更多的虚拟主机如site二、site3……等等作准备。