diff options
author | Martin Matuska <mm@FreeBSD.org> | 2010-06-16 10:12:36 +0000 |
---|---|---|
committer | Martin Matuska <mm@FreeBSD.org> | 2010-06-16 10:12:36 +0000 |
commit | 310f2b80e1c7500caa69e466a32b9a0f0f9f4c71 (patch) | |
tree | 710dbdd1c6a3fb28e346f4891ea82d69e542540e | |
parent | e7716d8d6239ab241baaad20eca264f321b0ef78 (diff) | |
download | ports-310f2b80e1c7500caa69e466a32b9a0f0f9f4c71.tar.gz ports-310f2b80e1c7500caa69e466a32b9a0f0f9f4c71.zip |
Notes
-rw-r--r-- | lang/php52/Makefile | 44 | ||||
-rw-r--r-- | lang/php52/distinfo | 3 | ||||
-rw-r--r-- | lang/php52/files/php-fpm.conf.sample.in | 157 | ||||
-rw-r--r-- | lang/php52/files/php-fpm.in | 55 | ||||
-rw-r--r-- | lang/php52/pkg-plist | 8 |
5 files changed, 266 insertions, 1 deletions
diff --git a/lang/php52/Makefile b/lang/php52/Makefile index 1d5d249b157d..09490a15cdc8 100644 --- a/lang/php52/Makefile +++ b/lang/php52/Makefile @@ -7,7 +7,7 @@ PORTNAME= php52 PORTVERSION= 5.2.13 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES?= lang devel www MASTER_SITES= ${MASTER_SITE_PHP} MASTER_SITE_SUBDIR= distributions @@ -45,6 +45,7 @@ OPTIONS= CLI "Build CLI version" on \ REDIRECT "Enable force-cgi-redirect support (CGI only)" off \ DISCARD "Enable discard-path support (CGI only)" off \ FASTCGI "Enable fastcgi support (CGI only)" on \ + FPM "Enable fastcgi process manager (CGI only)" off \ PATHINFO "Enable path-info-check support (CGI only)" on CONFLICTS= php4-4* php5-5.3* @@ -55,6 +56,37 @@ MAN1= php-config.1 phpize.1 PATCH_DIST_STRIP= -p1 +.if defined(WITH_FPM) && defined(WITH_CGI) +. if defined(WITHOUT_FASTCGI) +IGNORE= FPM requires FastCGI support +. endif +PATCHFILES+= php-5.2.13-fpm-0.5.14-freebsd.patch.gz +PATCH_SITES+= ${MASTER_SITE_LOCAL} +PATCH_SITE_SUBDIR+= mm +LIB_DEPENDS+= event-1.4:${PORTSDIR}/devel/libevent +PHP_FPM_UID?= www +PHP_FPM_GID?= www +PHP_FPM_PID?= /var/run/php-fpm/php-fpm.pid +PHP_FPM_LOG?= /var/log/php-fpm/php-fpm.log +SUB_FILES+= php-fpm.conf.sample +SUB_LIST+= PHP_FPM_UID=${PHP_FPM_UID} \ + PHP_FPM_GID=${PHP_FPM_GID} \ + PHP_FPM_PID=${PHP_FPM_PID} \ + PHP_FPM_LOG=${PHP_FPM_LOG} +USE_RC_SUBR+= php-fpm +PLIST_SUB+= FPM="" \ + PHP_FPM_PID=${PHP_FPM_PID} \ + PHP_FPM_LOG=${PHP_FPM_LOG} + +CONFIGURE_ARGS+= --enable-fpm \ + --with-fpm-conf=${PREFIX}/etc/php-fpm.conf \ + --with-fpm-pid=${PHP_FPM_PID} \ + --with-fpm-log=${PHP_FPM_LOG} \ + --with-libevent=${LOCALBASE} +.else +PLIST_SUB+= FPM="@comment " +.endif + .if !defined(WITHOUT_SUHOSIN) PATCHFILES+= suhosin-patch-${PORTVERSION}-0.9.7.patch.gz:suhosin PATCH_SITES+= http://download.suhosin.org/:suhosin @@ -153,6 +185,10 @@ CONFIGURE_ARGS+=--disable-ipv6 post-patch: @${TOUCH} ${WRKSRC}/ext/php_config.h @${REINPLACE_CMD} "s|^\(extension_dir\)|; \1|" ${WRKSRC}/php.ini-* +.if defined(WITH_FPM) && defined(WITH_CGI) + @${REINPLACE_CMD} -e 's,BUILD_CGI=\"\\$$\(.*\)\\$$(EXTRA_LIBS),BUILD_CGI=\"\\$$\1\\$$(EXTRA_LIBS) \\$$(SAPI_EXTRA_LIBS),g' \ + ${WRKSRC}/sapi/cgi/config9.m4 +.endif pre-configure: @${CAT} ${WRKSRC}/acinclude.m4 ${WRKSRC}/build/libtool.m4 > ${WRKSRC}/aclocal.m4 @@ -167,6 +203,12 @@ post-install: @${INSTALL_DATA} ${WRKSRC}/php.ini-recommended ${PREFIX}/etc @${INSTALL_DATA} ${WRKDIR}/php.conf ${PREFIX}/etc @${TOUCH} ${PREFIX}/include/php/ext/php_config.h +.if defined(WITH_FPM) && defined(WITH_CGI) + @${INSTALL_DATA} ${WRKDIR}/php-fpm.conf.sample ${PREFIX}/etc + @${MKDIR} `dirname ${PHP_FPM_PID}` + @${MKDIR} `dirname ${PHP_FPM_LOG}` + @cd ${PREFIX}/etc && ${CP} -n php-fpm.conf.sample php-fpm.conf +.endif .if defined(WITH_APACHE) @${CAT} ${PKGMESSAGE} .endif diff --git a/lang/php52/distinfo b/lang/php52/distinfo index 93f52bc8ce7e..af75a800f56a 100644 --- a/lang/php52/distinfo +++ b/lang/php52/distinfo @@ -1,6 +1,9 @@ MD5 (php-5.2.13.tar.bz2) = eb4d0766dc4fb9667f05a68b6041e7d1 SHA256 (php-5.2.13.tar.bz2) = 2b50a2535e3bb9a98cd4d1633f9452d877276c40b385915261f040d535c7eadb SIZE (php-5.2.13.tar.bz2) = 9084518 +MD5 (php-5.2.13-fpm-0.5.14-freebsd.patch.gz) = 74d8888de5ffcec18ba066d81bd20cea +SHA256 (php-5.2.13-fpm-0.5.14-freebsd.patch.gz) = bef7e8395e8602c3b73acd478d6ac0729ef1113c610db048b29224ab2b5e2655 +SIZE (php-5.2.13-fpm-0.5.14-freebsd.patch.gz) = 100550 MD5 (suhosin-patch-5.2.13-0.9.7.patch.gz) = 8188e119ce7abce98b8f004de46fbac5 SHA256 (suhosin-patch-5.2.13-0.9.7.patch.gz) = 787743e5d201ab2ce3fcc3f252eedd7f167470fa1f55af0646d7f03aab89d184 SIZE (suhosin-patch-5.2.13-0.9.7.patch.gz) = 22989 diff --git a/lang/php52/files/php-fpm.conf.sample.in b/lang/php52/files/php-fpm.conf.sample.in new file mode 100644 index 000000000000..48186ba5b7bf --- /dev/null +++ b/lang/php52/files/php-fpm.conf.sample.in @@ -0,0 +1,157 @@ +<?xml version="1.0" ?> +<!-- $FreeBSD$ --> +<configuration> + + All relative paths in this config are relative to php's install prefix + + <section name="global_options"> + + Pid file + <value name="pid_file">%%PHP_FPM_PID%%</value> + + Error log file + <value name="error_log">%%PHP_FPM_LOG%%</value> + + Log level + <value name="log_level">notice</value> + + When this amount of php processes exited with SIGSEGV or SIGBUS ... + <value name="emergency_restart_threshold">10</value> + + ... in a less than this interval of time, a graceful restart will be initiated. + Useful to work around accidental curruptions in accelerator's shared memory. + <value name="emergency_restart_interval">1m</value> + + Time limit on waiting child's reaction on signals from master + <value name="process_control_timeout">5s</value> + + Set to 'no' to debug fpm + <value name="daemonize">yes</value> + + </section> + + <workers> + + <section name="pool"> + + Name of pool. Used in logs and stats. + <value name="name">default</value> + + Address to accept fastcgi requests on. + Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket' + <value name="listen_address">127.0.0.1:9000</value> + + <value name="listen_options"> + + Set listen(2) backlog + <value name="backlog">-1</value> + + Set permissions for unix socket, if one used. + In Linux read/write permissions must be set in order to allow connections from web server. + Many BSD-derrived systems allow connections regardless of permissions. + <value name="owner">%%PHP_FPM_UID%%</value> + <value name="group">%%PHP_FPM_GID%%</value> + <value name="mode">0666</value> + </value> + + Additional php.ini defines, specific to this pool of workers. + <value name="php_defines"> + <!-- <value name="sendmail_path">/usr/sbin/sendmail -t -i</value> --> + <!-- <value name="display_errors">0</value> --> + </value> + + Unix user of processes + <value name="user">%%PHP_FPM_UID%%</value> + + Unix group of processes + <value name="group">%%PHP_FPM_GID%%</value> + + Process manager settings + <value name="pm"> + + Sets style of controling worker process count. + Valid values are 'static' and 'apache-like' + <value name="style">static</value> + + Sets the limit on the number of simultaneous requests that will be served. + Equivalent to Apache MaxClients directive. + Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi + Used with any pm_style. + <value name="max_children">5</value> + + Settings group for 'apache-like' pm style + <value name="apache_like"> + + Sets the number of server processes created on startup. + Used only when 'apache-like' pm_style is selected + <value name="StartServers">20</value> + + Sets the desired minimum number of idle server processes. + Used only when 'apache-like' pm_style is selected + <value name="MinSpareServers">5</value> + + Sets the desired maximum number of idle server processes. + Used only when 'apache-like' pm_style is selected + <value name="MaxSpareServers">35</value> + + </value> + + </value> + + The timeout (in seconds) for serving a single request after which the worker process will be terminated + Should be used when 'max_execution_time' ini option does not stop script execution for some reason + '0s' means 'off' + <value name="request_terminate_timeout">0s</value> + + The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file + '0s' means 'off' + <value name="request_slowlog_timeout">0s</value> + + The log file for slow requests + <value name="slowlog">logs/slow.log</value> + + Set open file desc rlimit + <value name="rlimit_files">1024</value> + + Set max core size rlimit + <value name="rlimit_core">0</value> + + Chroot to this directory at the start, absolute path + <value name="chroot"></value> + + Chdir to this directory at the start, absolute path + <value name="chdir"></value> + + Redirect workers' stdout and stderr into main error log. + If not set, they will be redirected to /dev/null, according to FastCGI specs + <value name="catch_workers_output">yes</value> + + How much requests each process should execute before respawn. + Useful to work around memory leaks in 3rd party libraries. + For endless request processing please specify 0 + Equivalent to PHP_FCGI_MAX_REQUESTS + <value name="max_requests">500</value> + + Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect. + Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+) + Makes sense only with AF_INET listening socket. + <value name="allowed_clients">127.0.0.1</value> + + Pass environment variables like LD_LIBRARY_PATH + All $VARIABLEs are taken from current environment + <value name="environment"> + <value name="HOSTNAME">$HOSTNAME</value> + <value name="PATH">/usr/local/bin:/usr/bin:/bin</value> + <value name="TMP">/tmp</value> + <value name="TMPDIR">/tmp</value> + <value name="TEMP">/tmp</value> + <value name="OSTYPE">$OSTYPE</value> + <value name="MACHTYPE">$MACHTYPE</value> + <value name="MALLOC_CHECK_">2</value> + </value> + + </section> + + </workers> + +</configuration> diff --git a/lang/php52/files/php-fpm.in b/lang/php52/files/php-fpm.in new file mode 100644 index 000000000000..4bf983f035d6 --- /dev/null +++ b/lang/php52/files/php-fpm.in @@ -0,0 +1,55 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# PROVIDE: php-fpm +# REQUIRE: LOGIN +# BEFORE: securelevel +# KEYWORD: shutdown + +# Add the following lines to /etc/rc.conf to enable php-fpm: +# +# php_fpm_enable="YES" +# php_fpm_config="" +# + +. /etc/rc.subr + +name="php_fpm" +rcvar=`set_rcvar` + +extra_commands="reload logrotate" + +command="%%PREFIX%%/bin/php-cgi" +pidfile="%%PHP_FPM_PID%%" +reload_cmd="php_fpm_reload_cmd" +logrotate_cmd="php_fpm_logrotate_cmd" + +# read configuration and set defaults +load_rc_config "$name" +: ${php_fpm_enable="NO"} +: ${php_fpm_config="%%PREFIX%%/etc/php-fpm.conf"} + +required_files="${php_fpm_config}" +command_args="--fpm --fpm-config ${php_fpm_config}" + +php_fpm_reload_cmd () { + if [ -z "$rc_pid" ]; then + _run_rc_notrunning + return 1 + fi + echo "Reloading $name." + kill -USR2 $rc_pid +} + +php_fpm_logrotate_cmd () { + if [ -z "$rc_pid" ]; then + _run_rc_notrunning + return 1 + fi + echo "Rotating logs $name." + kill -USR1 $rc_pid +} + +run_rc_command "$1" diff --git a/lang/php52/pkg-plist b/lang/php52/pkg-plist index d5d252f247f7..a744f3cc2168 100644 --- a/lang/php52/pkg-plist +++ b/lang/php52/pkg-plist @@ -3,6 +3,9 @@ bin/php-config bin/phpize etc/php.conf +%%FPM%%@unexec if cmp -s %D/etc/php-fpm.conf %D/etc/php-fpm.conf.sample; then rm -f %D/etc/php-fpm.conf; fi +%%FPM%%etc/php-fpm.conf.sample +%%FPM%%@exec cp -n %D/%F %B/php-fpm.conf etc/php.ini-dist etc/php.ini-recommended include/php/TSRM/TSRM.h @@ -206,3 +209,8 @@ lib/php/build/shtool @dirrmtry include/php @dirrm lib/php/build @dirrmtry lib/php +%%FPM%%@cwd / +%%FPM%%@exec mkdir -p `dirname %%PHP_FPM_PID%%` +%%FPM%%@exec mkdir -p `dirname %%PHP_FPM_LOG%%` +%%FPM%%@dirrmtry `dirname %%PHP_FPM_PID%%` +%%FPM%%@dirrmtry `dirname %%PHP_FPM_LOG%%` |