Hi everyone, I have ISPconfig running on a ubuntu server, and everything has been going well. The other week I enabled suphp using this tutorial, and modifying the /home/admispconfig/ispconfig/lib/config.inc.php, setting $go_info["server"]["apache2_php"] to "suphp". Things have been running ok since then, however I have been experiencing high server loads (at least 3), when beforehand the load was usually around 0.2. The server isn't receiving very many visitors. Top shows that php is using approximately 35% CPU, and there are two or three PHP processes in the top window. In addition, when I add a new site to ispconfig, I can only see the shared ip message page. Upon looking in the Vhosts_ispconfig.conf file, no entry is created for the newly added site. Looking in /home/admispconfig/ispconfig/ispconfig.log shows things such as: Code: 24.03.2007 - 20:16:44 => INFO - /root/ispconfig/scripts/lib/classes/ispconfig_postfix.lib.php, Line 137: cp -fr /etc/postfix/local-host-names /etc/postfix/local-host-names~ 24.03.2007 - 20:16:44 => INFO - /root/ispconfig/scripts/lib/classes/ispconfig_postfix.lib.php, Line 284: cp -fr /etc/postfix/virtusertable /etc/postfix/virtusertable~ 24.03.2007 - 20:16:44 => INFO - /root/ispconfig/scripts/lib/classes/ispconfig_postfix.lib.php, Line 289: postmap hash:/etc/postfix/virtusertable 24.03.2007 - 20:16:44 => INFO - /root/ispconfig/scripts/lib/config.lib.php, Line 1230: cp -fr /etc/apache2/vhosts/Vhosts_ispconfig.conf /etc/apache2/vhosts/Vhosts_ispconfig.conf~ 24.03.2007 - 20:16:44 => INFO - HTTPD_SYNTAX_CHECK: suexec 24.03.2007 - 20:16:44 => INFO - HTTPD_SYNTAX_CHECK: suexec 24.03.2007 - 20:16:44 => INFO - HTTPD_SYNTAX_CHECK: suexec 24.03.2007 - 20:16:44 => INFO - HTTPD_SYNTAX_CHECK: suexec 24.03.2007 - 20:16:44 => INFO - HTTPD_SYNTAX_CHECK: suexec 24.03.2007 - 20:16:44 => INFO - HTTPD_SYNTAX_CHECK: suexec 24.03.2007 - 20:16:44 => WARN - /root/ispconfig/scripts/lib/config.lib.php, Line 2417: WARNING: could not httpd -t &> /dev/null 24.03.2007 - 20:16:44 => WARN - /root/ispconfig/scripts/lib/config.lib.php, Line 2428: httpd syntax seems to contain errors, reloading with old configuration 24.03.2007 - 20:16:44 => INFO - /root/ispconfig/scripts/lib/config.lib.php, Line 2429: mv -f /etc/apache2/vhosts/Vhosts_ispconfig.conf /etc/apache2/vhosts/Vhosts_ispconfig.conf_24-03-07_20-16-44 24.03.2007 - 20:16:44 => INFO - /root/ispconfig/scripts/lib/config.lib.php, Line 2430: mv -f /etc/apache2/vhosts/Vhosts_ispconfig.conf~ /etc/apache2/vhosts/Vhosts_ispconfig.conf 24.03.2007 - 20:16:46 => INFO - /root/ispconfig/scripts/lib/classes/ispconfig_system.lib.php, Line 706: /etc/init.d/apache2 reload &> /dev/null 24.03.2007 - 20:16:46 => INFO - /root/ispconfig/scripts/lib/config.lib.php, Line 1891: cp -fr /etc/proftpd_ispconfig.conf /etc/proftpd_ispconfig.conf~ I understand that this means that apache is detecting a syntax error in the newly generated config, and then reloads the old configuration. Running /root/ispconfig/php/php -q /root/ispconfig/scripts/writeconf.php produces the same result. How can I go about fixing this problem, or the high loads problem? I was thinking of disabling suPHP, but haven't been able to disable it and get PHP to work as it was before. Any help would be greatly appreciated.
If you use suEXEC, please disable it, as it is not compatible with suPHP. One more question: What is the output of your info.php file?
Hi Hans, thanks for the quick reply. How would I go about disabling suexec? It's listed in mods-enabled. If i do a2dismod suexec, then httpd -t, I get: Code: Syntax error on line 22 of /etc/apache2/vhosts/Vhosts_ispconfig.conf: Invalid command 'SuexecUserGroup', perhaps mis-spelled or defined by a module not included in the server configuration Do you mean phpinfo? If so, you can view it here. Thanks!
I had a quick view to info.php and it looks ok as far as i can see. You can disable suEXEC with ISPConfig via > Management > Server > Settings > go to the tab "web" and disable suEXEC. I think if you do so, ISPConfig will rewrite the vhost file again, so you'll not have any error anymore.
Hi Hans, I disabled suexec, reloaded apache, and even tried editing a web site in ispconfig, and there is still an error showing in the ispconfig log file.
Try to change a small option within ISPConfig for one of your websites. For example enable or disable cgi-scripts, to make sure that ISPConfig re-writes your vhost file, which should be ok then. If the error still persists within your log, please post it here.
Hi Hans, I have tried that, and the error still persists: Code: 24.03.2007 - 23:55:51 => INFO - Signalfile Set: insert 24.03.2007 - 23:56:01 => INFO - /root/ispconfig/scripts/lib/config.lib.php, Line 257: setquota -g web13 10240 11264 0 0 -a &> /dev/null 24.03.2007 - 23:56:01 => INFO - /root/ispconfig/scripts/lib/config.lib.php, Line 258: setquota -T -g web13 604800 604800 -a &> /dev/null 24.03.2007 - 23:56:01 => INFO - /root/ispconfig/scripts/lib/config.lib.php, Line 277: Connected successfully 24.03.2007 - 23:56:03 => INFO - /root/ispconfig/scripts/lib/classes/ispconfig_postfix.lib.php, Line 137: cp -fr /etc/postfix/local-host-names /etc/postfix/lo cal-host-names~ 24.03.2007 - 23:56:03 => INFO - /root/ispconfig/scripts/lib/classes/ispconfig_postfix.lib.php, Line 284: cp -fr /etc/postfix/virtusertable /etc/postfix/virtu sertable~ 24.03.2007 - 23:56:04 => INFO - /root/ispconfig/scripts/lib/classes/ispconfig_postfix.lib.php, Line 289: postmap hash:/etc/postfix/virtusertable 24.03.2007 - 23:56:04 => INFO - /root/ispconfig/scripts/lib/config.lib.php, Line 1230: cp -fr /etc/apache2/vhosts/Vhosts_ispconfig.conf /etc/apache2/vhosts/Vhosts_ispconfig.conf~ 24.03.2007 - 23:56:05 => WARN - /root/ispconfig/scripts/lib/config.lib.php, Line 2417: WARNING: could not httpd -t &> /dev/null 24.03.2007 - 23:56:05 => WARN - /root/ispconfig/scripts/lib/config.lib.php, Line 2428: httpd syntax seems to contain errors, reloading with old configuration 24.03.2007 - 23:56:06 => INFO - /root/ispconfig/scripts/lib/config.lib.php, Line 2429: mv -f /etc/apache2/vhosts/Vhosts_ispconfig.conf /etc/apache2/vhosts/Vhosts_ispconfig.conf_24-03-07_23-56-05 24.03.2007 - 23:56:06 => INFO - /root/ispconfig/scripts/lib/config.lib.php, Line 2430: mv -f /etc/apache2/vhosts/Vhosts_ispconfig.conf~ /etc/apache2/vhosts/Vhosts_ispconfig.conf 24.03.2007 - 23:56:08 => INFO - /root/ispconfig/scripts/lib/classes/ispconfig_system.lib.php, Line 706: /etc/init.d/apache2 reload &> /dev/null 24.03.2007 - 23:56:08 => INFO - /root/ispconfig/scripts/lib/config.lib.php, Line 1891: cp -fr /etc/proftpd_ispconfig.conf /etc/proftpd_ispconfig.conf~ Do you know of anything else that may be causing this? Thanks very much!
i have had the same problem. at my system this was NOT a problem with suexec. The problem was that ISPConfig wrote phpadmin_xxx properties inside the OLD vhosts. If you change to suphp that this old entries made the problem. If there is a problem starting the apache, ISPConfig will use the OLD config instead of the new one. to avoid the problem: 1) make a backup of the old config 2) edit the config and remove all the phpadmin entries 3) try to restart apache with the "new" file 4) enable suphp 5) let ISPConfig write the "new ISPConfig" file i hope it is clear what i mean. if not ask ad i will help you more!
Hi veogelor, Thanks for your reply. I am not quite sure what you mean. In my Vhosts file, an example vhost looks like this: Code: <VirtualHost xxx.xxx.xxx.xxx:80> SuexecUserGroup web6_fwd web6 ServerName www.domain.com:80 ServerAdmin [email protected] DocumentRoot /var/www/web6/web ServerAlias domain.com DirectoryIndex index.html index.htm index.php index.php5 index.php4 index.php3 index.shtml index.cgi index.pl index.jsp Default.htm default.htm ErrorLog /var/www/web6/log/error.log AddHandler application/x-httpd-php .php .php3 .php4 .php5 suPHP_Engine on suPHP_UserGroup web6_fwd web6 AddHandler x-httpd-php .php .php3 .php4 .php5 suPHP_AddHandler x-httpd-php Alias /error/ "/var/www/web6/web/error/" ErrorDocument 400 /error/invalidSyntax.html ErrorDocument 401 /error/authorizationRequired.html ErrorDocument 403 /error/forbidden.html ErrorDocument 404 /error/fileNotFound.html ErrorDocument 405 /error/methodNotAllowed.html ErrorDocument 500 /error/internalServerError.html ErrorDocument 503 /error/overloaded.html AliasMatch ^/~([^/]+)(/(.*))? /var/www/web6/user/$1/web/$3 AliasMatch ^/users/([^/]+)(/(.*))? /var/www/web6/user/$1/web/$3 </VirtualHost> I would like to modify this so suexec and suphp are not used, so I can see if suphp is causing the high server loads. Thanks in advance.
Please double-check that you really disabled suExec in ISPConfig. What's the output of Code: ls -la /etc/apache2/vhosts ? Are there Vhosts_ispconfig.conf files with a date appaneded to them? If so, take the last one, rename it to Vhosts_ispconfig.conf (please back up the current Vhosts_ispconfig.conf) and run Code: httpd -t What's the output?
Hi Falko, Suexec is definitely disabled according to ISPconfig. Output is: Code: root@srv02:~# ls -la /etc/apache2/vhosts total 524 drwxr-xr-x 2 root root 4096 Mar 25 08:32 . drwxr-xr-x 10 root root 4096 Feb 12 22:24 .. -rw-r--r-- 1 root root 5131 Mar 24 23:56 Vhosts_ispconfig.conf -rw-r--r-- 1 root root 5131 Mar 25 08:32 Vhosts_ispconfig.conf.backup -rw-r--r-- 1 root root 5168 Mar 3 17:29 Vhosts_ispconfig.conf_03-03-07_16-29-14 -rw-r--r-- 1 root root 5168 Mar 3 17:30 Vhosts_ispconfig.conf_03-03-07_16-30-46 -rw-r--r-- 1 root root 5930 Mar 3 17:41 Vhosts_ispconfig.conf_03-03-07_16-41-09 -rw-r--r-- 1 root root 6889 Mar 3 17:42 Vhosts_ispconfig.conf_03-03-07_16-42-22 -rw-r--r-- 1 root root 5930 Mar 3 17:42 Vhosts_ispconfig.conf_03-03-07_16-42-46 -rw-r--r-- 1 root root 5930 Mar 3 17:44 Vhosts_ispconfig.conf_03-03-07_16-44-08 -rw-r--r-- 1 root root 6113 Mar 3 17:47 Vhosts_ispconfig.conf_03-03-07_16-47-12 -rw-r--r-- 1 root root 5522 Mar 3 17:48 Vhosts_ispconfig.conf_03-03-07_16-48-25 -rw-r--r-- 1 root root 5892 Mar 3 17:48 Vhosts_ispconfig.conf_03-03-07_16-48-57 -rw-r--r-- 1 root root 5892 Mar 3 18:00 Vhosts_ispconfig.conf_03-03-07_17-00-50 -rw-r--r-- 1 root root 5892 Mar 3 18:01 Vhosts_ispconfig.conf_03-03-07_17-01-25 -rw-r--r-- 1 root root 5892 Mar 3 18:01 Vhosts_ispconfig.conf_03-03-07_17-01-52 -rw-r--r-- 1 root root 7435 Mar 3 18:02 Vhosts_ispconfig.conf_03-03-07_17-02-07 -rw-r--r-- 1 root root 7435 Mar 3 18:03 Vhosts_ispconfig.conf_03-03-07_17-03-31 -rw-r--r-- 1 root root 5892 Mar 3 18:03 Vhosts_ispconfig.conf_03-03-07_17-03-45 -rw-r--r-- 1 root root 5892 Mar 3 18:03 Vhosts_ispconfig.conf_03-03-07_17-03-57 -rw-r--r-- 1 root root 5522 Mar 3 18:04 Vhosts_ispconfig.conf_03-03-07_17-04-10 -rw-r--r-- 1 root root 5892 Mar 3 18:04 Vhosts_ispconfig.conf_03-03-07_17-04-33 -rw-r--r-- 1 root root 5880 Mar 3 18:44 Vhosts_ispconfig.conf_03-03-07_18-44-02 -rw-r--r-- 1 root root 5880 Mar 3 18:48 Vhosts_ispconfig.conf_03-03-07_18-48-43 -rw-r--r-- 1 root root 5880 Mar 3 19:04 Vhosts_ispconfig.conf_03-03-07_19-04-29 -rw-r--r-- 1 root root 7248 Mar 3 19:22 Vhosts_ispconfig.conf_03-03-07_19-22-42 -rw-r--r-- 1 root root 8622 Mar 5 13:46 Vhosts_ispconfig.conf_05-03-07_13-46-05 -rw-r--r-- 1 root root 7248 Mar 5 13:48 Vhosts_ispconfig.conf_05-03-07_13-48-30 -rw-r--r-- 1 root root 8586 Mar 5 13:53 Vhosts_ispconfig.conf_05-03-07_13-53-09 -rw-r--r-- 1 root root 8586 Mar 5 13:54 Vhosts_ispconfig.conf_05-03-07_13-54-58 -rw-r--r-- 1 root root 7450 Mar 5 14:04 Vhosts_ispconfig.conf_05-03-07_14-04-02 -rw-r--r-- 1 root root 7459 Mar 5 14:05 Vhosts_ispconfig.conf_05-03-07_14-05-00 -rw-r--r-- 1 root root 7471 Mar 5 14:05 Vhosts_ispconfig.conf_05-03-07_14-05-52 -rw-r--r-- 1 root root 7478 Mar 5 14:07 Vhosts_ispconfig.conf_05-03-07_14-07-13 -rw-r--r-- 1 root root 7478 Mar 5 14:46 Vhosts_ispconfig.conf_05-03-07_14-46-42 -rw-r--r-- 1 root root 7509 Mar 5 14:47 Vhosts_ispconfig.conf_05-03-07_14-47-32 -rw-r--r-- 1 root root 7509 Mar 5 14:48 Vhosts_ispconfig.conf_05-03-07_14-48-22 -rw-r--r-- 1 root root 6324 Mar 5 14:55 Vhosts_ispconfig.conf_05-03-07_14-55-26 -rw-r--r-- 1 root root 6324 Mar 24 12:55 Vhosts_ispconfig.conf_24-03-07_12-55-22 -rw-r--r-- 1 root root 6324 Mar 24 12:55 Vhosts_ispconfig.conf_24-03-07_12-55-51 -rw-r--r-- 1 root root 6328 Mar 24 15:55 Vhosts_ispconfig.conf_24-03-07_15-55-12 -rw-r--r-- 1 root root 6293 Mar 24 15:56 Vhosts_ispconfig.conf_24-03-07_15-56-32 -rw-r--r-- 1 root root 6293 Mar 24 15:57 Vhosts_ispconfig.conf_24-03-07_15-57-52 -rw-r--r-- 1 root root 7346 Mar 24 15:58 Vhosts_ispconfig.conf_24-03-07_15-58-39 -rw-r--r-- 1 root root 7403 Mar 24 16:00 Vhosts_ispconfig.conf_24-03-07_16-00-50 -rw-r--r-- 1 root root 6293 Mar 24 17:14 Vhosts_ispconfig.conf_24-03-07_17-14-12 -rw-r--r-- 1 root root 8229 Mar 24 19:30 Vhosts_ispconfig.conf_24-03-07_19-30-52 -rw-r--r-- 1 root root 8229 Mar 24 19:34 Vhosts_ispconfig.conf_24-03-07_19-34-50 -rw-r--r-- 1 root root 8229 Mar 24 19:35 Vhosts_ispconfig.conf_24-03-07_19-35-39 -rw-r--r-- 1 root root 8213 Mar 24 19:47 Vhosts_ispconfig.conf_24-03-07_19-47-35 -rw-r--r-- 1 root root 8213 Mar 24 19:48 Vhosts_ispconfig.conf_24-03-07_19-48-13 -rw-r--r-- 1 root root 8213 Mar 24 19:54 Vhosts_ispconfig.conf_24-03-07_19-54-10 -rw-r--r-- 1 root root 7938 Mar 24 19:55 Vhosts_ispconfig.conf_24-03-07_19-55-14 -rw-r--r-- 1 root root 7938 Mar 24 19:58 Vhosts_ispconfig.conf_24-03-07_19-58-21 -rw-r--r-- 1 root root 7938 Mar 24 19:59 Vhosts_ispconfig.conf_24-03-07_19-59-05 -rw-r--r-- 1 root root 7938 Mar 24 20:00 Vhosts_ispconfig.conf_24-03-07_20-00-01 -rw-r--r-- 1 root root 7258 Mar 24 20:16 Vhosts_ispconfig.conf_24-03-07_20-16-44 -rw-r--r-- 1 root root 7258 Mar 24 20:22 Vhosts_ispconfig.conf_24-03-07_20-22-11 -rw-r--r-- 1 root root 7258 Mar 24 20:24 Vhosts_ispconfig.conf_24-03-07_20-24-26 -rw-r--r-- 1 root root 7079 Mar 24 21:02 Vhosts_ispconfig.conf_24-03-07_21-02-16 -rw-r--r-- 1 root root 7088 Mar 24 21:08 Vhosts_ispconfig.conf_24-03-07_21-08-29 -rw-r--r-- 1 root root 7363 Mar 24 23:56 Vhosts_ispconfig.conf_24-03-07_23-56-05 root@srv02:~# I then did: Code: cp Vhosts_ispconfig.conf_24-03-07_19-59-05 Vhosts_ispconfig.conf root@srv02:/etc/apache2/vhosts# httpd -t Syntax error on line 196 of /etc/apache2/vhosts/Vhosts_ispconfig.conf: Invalid command ':80', perhaps mis-spelled or defined by a module not included in the server configuration root@srv02:/etc/apache2/vhosts# That line contained: Code: ###################################### # Vhost: www.domain.com :80 ###################################### , so I moved the :80 up to the line above it. Line 202 also contained: Code: ServerName www.domain.com :80 So I fixed this line up also. httpd -t then said that there were no syntax errors. I then ran: Code: root@srv02:/etc/apache2/vhosts# /etc/init.d/apache2 restart * Forcing reload of apache 2.0 web server... (98)Address already in use: make_sock: could not bind to address [::]:443 no listening sockets available, shutting down Unable to open logs So I decided to reboot because the server load was high again (4.5), and then apache started no problems. I then received: Code: Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0 Warning: Unknown: Failed opening '/var/www/web3/web/index.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0 So I chmoded all PHP scripts to 755, as they only had owner permissions on them. PHP scripts then executed successfully. I tried adding a site to ISPconfig, but the same error messages appeared in the logs. I then thought about the problem with the :80 appearing on a new line, so I thought maybe the domain.com entry in ISPconfig had a newline character at the end of the domain. After pressing delete in this field several times, then saving the changes, the vhosts file was updated without error! Upon looking in the vhosts file, a vhost for a domain looks like: Code: ###################################### # Vhost: www.domain.com:80 ###################################### # # <VirtualHost 203.56.168.24:80> ServerName www.domain.com:80 ServerAdmin [email protected] DocumentRoot /var/www/web6/web ServerAlias domain.com DirectoryIndex index.html index.htm index.php index.php5 index.php4 index.php3 index.shtml index.cgi index.pl index.jsp Default.htm default.htm ErrorLog /var/www/web6/log/error.log AddType application/x-httpd-php .php .php3 .php4 .php5 <Files *.php> SetOutputFilter PHP SetInputFilter PHP </Files> <Files *.php3> SetOutputFilter PHP SetInputFilter PHP </Files> <Files *.php4> SetOutputFilter PHP SetInputFilter PHP </Files> <Files *.php5> SetOutputFilter PHP SetInputFilter PHP </Files> php_admin_flag safe_mode Off Alias /error/ "/var/www/web6/web/error/" ErrorDocument 400 /error/invalidSyntax.html ErrorDocument 401 /error/authorizationRequired.html ErrorDocument 403 /error/forbidden.html ErrorDocument 404 /error/fileNotFound.html ErrorDocument 405 /error/methodNotAllowed.html ErrorDocument 500 /error/internalServerError.html ErrorDocument 503 /error/overloaded.html AliasMatch ^/~([^/]+)(/(.*))? /var/www/web6/user/$1/web/$3 AliasMatch ^/users/([^/]+)(/(.*))? /var/www/web6/user/$1/web/$3 </VirtualHost> Which looks correct (ie no suphp or suexec entries). My server load is currently low too (0.1), so hopefully it stays low now that suphp and suexec have been disabled. Obviously now though the PHP scripts are being executed as www-data. What is the best way to prevent this from happening, and running each domain's script as the domain's user? In cPanel, you can enable phpsuexec to achive this. What's the best option for ISPconfig to achieve the same / similar results? Thanks very much for your help - it's great to get things working again!
Well, 12 hours later and the server load is still very low (0.2). Looks like suPHP was causing the high server loads. Obviously now though the PHP scripts are being executed as www-data. What is the best way to prevent this from happening, and running each domain's script as the domain's user? In cPanel, you can enable phpsuexec to achive this. What's the best option for ISPconfig to achieve the same / similar results? Thanks very much.
I have posted a Howto for setting up suPHP on an ISPConfig server. It will be published soon i guess. I hope that it will be very helpful!
Is suPHP the best way of getting PHP scripts to run as individual users? Have you had any experience with it causing high server loads such as I have experienced? I look forward to seeing your howto.
The disadvantage of running php-scrips as the system user www-data (on Debian) is that it is not so comfortable for the web admin, because of permissions. With suPHP you are able to run php-scripts as webadmin instead of www-data, which means that you can avoid conflicts due permissions. There are two options, to avoid this permission problem. 1) Chmod your web with chmod 777, which is not save enough in your case. 2) Make use of suPHP which is the best and only alternative. Personally, I have a short experience with ISPConfig with suPHP enabled. I’ve tested it, wrote the howto and now I am planning the migration from my default ISPConfig server to ISPConfig with suPHP. I do not expect that suPHP has a bad influence on your server load, the bigger Hosting companies are using PHP as a CGI and make use of suPHP as well. It is well known that suEXEC is not compatible with suPHP, so please avoid conflicts.
Hi Hans, When can we expect to see your howto? When I installed suPHP the other week, I basically installed it as per a howtoforge tutorial, then modified the config.ing.php file to use suPHP. Is this how your howto does it?
I've published it last week. Falko/Till told me that it will be published soon. Probably within a few days, but please be patient as they are very busy! And if they want to check it, it is possible that they need some more time. I did not change config.ing.php.
No problems. I understand that they are very busy. Great job on ISPconfig. It's great fun supporting open source, especially if it means saving heaps of money on cPanel licencing fees!
I'll publish it today. We try to publish not more than one tutorial per day so that each tutorial gets the attention it deserves, and there were some other tutorials in the queue.