httpd_conf=/etc/httpd/conf/httpd.conf
ssl_conf=/etc/httpd/conf.d/ssl.conf
plc_conf=/etc/httpd/conf.d/plc.conf
+php_fpm_conf=/etc/php-fpm.d/plc.conf
+php_fpm_dir=$(dirname $php_fpm_conf)
function disable_file () {
file=$1; shift
# set document root - not really useful on fedora but just in case
sed -i -e "s@^DocumentRoot.*@DocumentRoot \"$DocumentRoot\"@" $httpd_conf
- # whether WWW is enabled or not :
+ # whether WWW is enabled or not :
if [ "$PLC_WWW_ENABLED" != "1" ] ; then
# avoid hitting drupal, that would try to connect to the db and create noise
disable_file $DocumentRoot/index.php
# Set open_basedir so as to avoid leaks
open_basedir="$DocumentRoot:/etc/planetlab/php:/usr/share/plc_api/php:/var/log/myslice:/var/tmp/bootmedium:/var/log/bm:/tmp"
sed -i -e "s@[;]*open_basedir =.*@open_basedir = \"$open_basedir\"@" $php_ini
-
+
# for php-5.3 under fedora12, otherwise issues tons of warning messages
# Set timezone in php.ini if not already there
if grep '^;date.timezone' $php_ini >& /dev/null; then
sed -i -e 's,^short_open_tag = Off,short_open_tag = On,' $php_ini
fi
+ ## patch php.ini
+ # memory limit
+ sed -i -e 's,^memory_limit = 32M *;,memory_limit = 80M ; patch myplc -- ,' $php_ini
+ # log_errors : is On by default
+ # error_log
+ if ! grep '^error_log *=' $php_ini > /dev/null ; then
+ echo 'error_log = /var/log/php.log' >> $php_ini
+ touch /var/log/php.log
+ chmod 666 /var/log/php.log
+ fi
+
+ # configure php-fpm as well if present (starting with f27)
+ if [ -d $php_fpm_dir ] ; then
+ cat > $php_fpm_conf << EOF
+[www]
+php_value[include_path] = $include_path
+php_value[open_basedir] = $open_basedir
+php_value[date.timezone] = GMT
+php_value[short_open_tag] = On
+php_value[memory_limit] = 80M
+EOF
+ # this is needed because otherwise, the first time
+ # we do this configuration, the service is already up
+ # and the config is usable only the second time
+ systemctl restart php-fpm
+ fi
+
# Disable default Listen directive
sed -i -e '/^Listen/d' $httpd_conf
http_port=
fi
- echo "# DBG server=$server hostname=${!hostname} http_port=${!http_port} https_port=${!https_port}"
-
# Check if we are already listening on these ports
skip_http=0
skip_https=0
previous_http_port=PLC_${previous_server}_PORT
previous_https_port=PLC_${previous_server}_SSL_PORT
- if [ "${!http_port}" = "${!previous_http_port}" ] ; then
+ if [ -z "${http_port}" ]; then
+ skip_http=1;
+ elif [ -z "${!http_port}" ]; then
+ skip_http=1;
+ elif [ "${!http_port}" = "${!previous_http_port}" ] ; then
skip_http=1
fi
- if [ "${!https_port}" = "${!previous_https_port}" ] ; then
+ if [ -z "${https_port}" ]; then
+ skip_https=1
+ elif [ -z "${!https_port}" ]; then
+ skip_https=1
+ elif [ "${!https_port}" = "${!previous_https_port}" ] ; then
skip_https=1
fi
done
# HTTP configuration
- if [ $skip_http -eq 0 -a -n "${!http_port}" ] ; then
+ if [ $skip_http -eq 0 ] ; then
cat <<EOF
Listen ${!http_port}
<VirtualHost *:${!http_port}>
fi
# HTTPS configuration
- if [ $skip_https -eq 0 -a -n "${!https_port}" ] ; then
+ if [ $skip_https -eq 0 ] ; then
# XXX Cannot support NameVirtualHost over SSL. If
# the API, boot, and web servers are all running
# on the same machine, the web server certificate
# with mod_python preferred
if rpm -q mod_python >& /dev/null ; then
configure_for_mod_python=true
- elif rpm -q mod_wsgi >& /dev/null ; then
+ elif rpm -q mod_wsgi >& /dev/null || rpm -q python2-mod_wsgi >& /dev/null ; then
configure_for_mod_wsgi=true
else
echo "Requires mod_python or mod_wsgi.... exiting"
exit 1
fi
- # It would be tempting to use <IfModule> here
+ # It would be tempting to use <IfModule> here
# but early tests showed this could be tricky/fragile
# So let's hard-wire it for one module
# A lot of trial-and -error was involved in getting this that way...
# mod_wsgi location
<Location $PLC_API_PATH>
$(apache_forbid)
-</Location>
+</Location>
EOF
fi
?>
EOF
- ## patch php.ini
- # memory limit
- sed -i -e 's,^memory_limit = 32M *;,memory_limit = 80M ; patch myplc -- ,' $php_ini
- # log_errors : is On by default
- # error_log
- if ! grep '^error_log *=' $php_ini > /dev/null ; then
- echo 'error_log = /var/log/php.log' >> $php_ini
- touch /var/log/php.log
- chmod 666 /var/log/php.log
- fi
+ ## make room for logs
+ touch /var/log/plcapi.log
+ chmod 666 /var/log/plcapi.log
plc_daemon httpd
check