用过DirectAdmin的都知道,CLI是个坑爹货:网站目录非rwxrwxrwx(777)权限无法写入,无法查看是哪个用户占用较多的资源,甚至无法正常使用opcode cache的PHP组件。
我们来研究下DirectAdmin的站点的配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# Auto generated apache config file by DirectAdmin version 1.42.1 # Modifying this file is not recommended as any changes you make will be # overwritten when the user makes any changes to his/her website # For global config changes that affect all Users, see this guide: # http://help.directadmin.com/item.php?id=2 # For local config changes that only affect one User, see this guide: # http://help.directadmin.com/item.php?id=3 # Frontpage requires these parameters in every httpd.conf file or else # it won't work. ServerRoot /etc/httpd <VirtualHost HIDE:80 > ServerName www.360buy.com ServerAlias www.360buy.com 360buy.com ServerAdmin webmaster@360buy.com DocumentRoot /home/admin/domains/360buy.com/public_html ScriptAlias /cgi-bin/ /home/admin/domains/360buy.com/public_html/cgi-bin/ UseCanonicalName OFF <IfModule !mod_ruid2.c> SuexecUserGroup admin admin </IfModule> <IfModule mod_ruid2.c> RMode config RUidGid admin admin RGroups apache access </IfModule> CustomLog /var/log/httpd/domains/360buy.com.bytes bytes CustomLog /var/log/httpd/domains/360buy.com.log combined ErrorLog /var/log/httpd/domains/360buy.com.error.log <Directory /home/admin/domains/360buy.com/public_html> Options +Includes -Indexes php_admin_flag safe_mode OFF php_admin_flag engine ON php_admin_value sendmail_path '/usr/sbin/sendmail -t -i -f admin@360buy.com' </Directory> </VirtualHost> |
关键,就在SuexecUserGroup这里,这里定义了站点的执行PHP脚本时所使用的用户身份,这样可以给不同网站的目录不同的所有者,且无需再特意给某些文件设置rwxrwxrwx(777)权限。
然而,这个东西在CGI模式下工作正常,而CLI却不正常。貌似mod_ruid2.c是SuPHP才有的吧?无mod_ruid2.c。Apache自然就忽略掉SuexecUserGroup的内容。
找到问题所在,要解决,就简单得多了。找个CLI上能实现类似功能的模块给Apache加上去就行。
看过我的LVAMP的介绍的,都知道,能实现站点独立用户,而且是CLI模式下实现的。其实真相只有一个——mpm-itk。
由于mpm-itk模块没提供2.2下能使用apxs编译的文件,因此添加有点麻烦。我这里写了一个Shell Script:
先下载:
1 |
wget http://soft.yzs.me/mpm-itk.sh |
然后运行:
1 |
sh mpm-itk.sh |
执行完后,你会看到如下信息:
那个是集成了mpm-itk源码的apache的源码的TGZ的MD5值。因为DirectAdmin的进行编译的Shell Script会自动验证所有源码包的MD5值,不一样就会帮你重新下载,所以就要修改一下DirectAdmin所记录的Apache的MD5值。
修改/usr/local/directadmin/custombuild/versions.txt:
1 |
vim /usr/local/directadmin/custombuild/versions.txt |
在第六行(一般都是第六行),也就是apache2.2:2.2.24(一般都是2.2.24吧)的那一行,把冒号后面的MD5改成执行mpm-itk.sh后所显示的MD5值:
确认无误后,保存(用vim的话:wq)。
开始编译吧:
1 |
cd /usr/local/directadmin/custombuild; ./build apache |
这个看你服务器配置了,一般十分钟左右吧……
顺利完成后,还有Apache的站点配置文件的模板要修改,不过文件有点多,直接执行这个Shell Script就好了:
1 |
wget http://soft.yzs.me/virtual_host.sh;sh virtual_host.sh |
最后在“服务监控”那,重启Apache(也就是httpd)。
再次测试安装Wordpress,已经可以成功写入文件了:
在top那,httpd进程的执行身份不再是清一色的apache了:
Comments are closed.