diff --git a/www/angie/Makefile b/www/angie/Makefile --- a/www/angie/Makefile +++ b/www/angie/Makefile @@ -1,25 +1,187 @@ -PORTNAME= angie -PORTVERSION= 1.2.0 -CATEGORIES= www -MASTER_SITES= https://download.angie.software/files/ +PORTNAME?= angie +PORTVERSION= 1.2.0 +PORTREVISION= 1 +CATEGORIES+= www +MASTER_SITES+= https://download.angie.software/files/:angie +DISTNAME= angie-${DISTVERSIONFULL} +DISTFILES+= ${DISTNAME}${EXTRACT_SUFX}:angie -MAINTAINER= wen@FreeBSD.org -COMMENT= Efficient, powerful and scalable web server -WWW= https://angie.software/en/ +MAINTAINER?= oleg@mamontov.net +COMMENT?= Efficient, powerful and scalable reverse proxy and web server +WWW?= https://angie.software/en/ -LICENSE= BSD2CLAUSE -LICENSE_FILE= ${WRKSRC}/LICENSE +LICENSE?= BSD2CLAUSE +.if ${PORTNAME} == angie +LICENSE_FILE= ${WRKSRC}/LICENSE +.else +LICENSE_FILE?= ${WRKSRC_module}/LICENSE +.endif -LIB_DEPENDS= libpcre2-8.so:devel/pcre2 +.if ${PORTNAME} == angie +LIB_DEPENDS= libpcre2-8.so:devel/pcre2 +.else +BUILD_DEPENDS+= pcre2>=0:devel/pcre2 +RUN_DEPENDS+= angie==${PKGVERSION}:www/angie +.endif -USES= gmake ssl +USES+= ssl +USE_GITHUB= nodefault -HAS_CONFIGURE= yes -ALL_TARGET= +HAS_CONFIGURE?= yes -CONFIGURE_ARGS= --with-openssl=${LOCALBASE} +.if ${PORTNAME} == angie +ALL_TARGET= build +SUB_FILES= angie.conf.sample \ + default.conf.sample \ + example.conf.sample \ + pkg-message +USE_RC_SUBR= angie +.else +ALL_TARGET?= modules +CONFIGURE_ADD?= --add-dynamic-module=${WRKSRC_module} +.endif -post-install: - ${STRIP_CMD} ${STAGEDIR}${PREFIX}/angie/sbin/angie +# modules always have their own assets +PATCHDIR?= ${.CURDIR}/files +FILESDIR?= ${.CURDIR}/files +SCRIPTDIR?= ${.CURDIR}/scripts +PKGDIR?= ${.CURDIR} + +# angie-specific variables +CACHEDIR= /var/cache/angie +LOGDIR= /var/log/angie +MODDIR= ${PREFIX}/libexec/angie +RUNDIR= /var/run +WRKSRC_DEBUG= ${WRKSRC}-debug + +PLIST_SUB+= CACHEDIR=${CACHEDIR} \ + LOGDIR=${LOGDIR} \ + MODDIR=${MODDIR} \ + RUNDIR=${RUNDIR} + +SUB_LIST+= CACHEDIR=${CACHEDIR} \ + LOGDIR=${LOGDIR} \ + MODDIR=${MODDIR} \ + RUNDIR=${RUNDIR} \ + WWWOWN=${WWWOWN} + +SUB_FILES?= pkg-message + +OPTIONS_SUB= yes + +CONFIGURE_ARGS= --prefix=${PREFIX}/etc/angie \ + --conf-path=${PREFIX}/etc/angie/angie.conf \ + --error-log-path=${LOGDIR}/error.log \ + --http-log-path=${LOGDIR}/access.log \ + --lock-path=${RUNDIR}/angie.lock \ + --modules-path=${MODDIR} \ + --pid-path=${RUNDIR}/angie.pid \ + --sbin-path=${PREFIX}/sbin/angie \ + --http-client-body-temp-path=${CACHEDIR}/client_temp \ + --http-fastcgi-temp-path=${CACHEDIR}/fastcgi_temp \ + --http-proxy-temp-path=${CACHEDIR}/proxy_temp \ + --http-scgi-temp-path=${CACHEDIR}/scgi_temp \ + --http-uwsgi-temp-path=${CACHEDIR}/uwsgi_temp \ + --user=${WWWOWN} \ + --group=${WWWGRP} \ + --with-file-aio \ + --with-http_addition_module \ + --with-http_auth_request_module \ + --with-http_dav_module \ + --with-http_flv_module \ + --with-http_gunzip_module \ + --with-http_gzip_static_module \ + --with-http_mp4_module \ + --with-http_random_index_module \ + --with-http_realip_module \ + --with-http_secure_link_module \ + --with-http_slice_module \ + --with-http_ssl_module \ + --with-http_stub_status_module \ + --with-http_sub_module \ + --with-http_v2_module \ + --with-http_v3_module \ + --with-mail \ + --with-mail_ssl_module \ + --with-stream \ + --with-stream_realip_module \ + --with-stream_ssl_module \ + --with-stream_ssl_preread_module \ + --with-threads \ + --with-cc-opt="-I ${LOCALBASE}/include" \ + --with-ld-opt="-L ${LOCALBASE}/lib" \ + ${CONFIGURE_ADD} + +OPTIONS_DEFINE?= DEBUG +OPTIONS_DEFAULT?= DEBUG +DEBUG_DESC?= Include debug version + + +.include + +post-patch-DEBUG-on: + @${CP} -Rp ${WRKSRC} ${WRKSRC_DEBUG} + +post-configure-DEBUG-on: + @(cd ${WRKSRC_DEBUG} && \ + ${SET_LATE_CONFIGURE_ARGS} \ + if ! ${SETENV} CC="${CC}" CPP="${CPP}" CXX="${CXX}" \ + CFLAGS="${CFLAGS} -g" CPPFLAGS="${CPPFLAGS}" CXXFLAGS="${CXXFLAGS}" \ + LDFLAGS="${LDFLAGS}" LIBS="${LIBS}" \ + INSTALL="/usr/bin/install -c" \ + INSTALL_DATA="${INSTALL_DATA}" \ + INSTALL_LIB="${INSTALL_LIB}" \ + INSTALL_PROGRAM="${INSTALL_PROGRAM}" \ + INSTALL_SCRIPT="${INSTALL_SCRIPT}" \ + ${CONFIGURE_ENV} ${CONFIGURE_CMD} ${CONFIGURE_ARGS} --with-debug; then \ + ${ECHO_MSG} "===> Script \"${CONFIGURE_SCRIPT}\" failed unexpectedly."; \ + (${ECHO_CMD} ${CONFIGURE_FAIL_MESSAGE}) | ${FMT_80} ; \ + ${FALSE}; \ + fi \ + ) + +post-build-DEBUG-on: + @(cd ${WRKSRC_DEBUG} && ${DO_MAKE_BUILD} ${ALL_TARGET}) + +.if ${PORTNAME} == angie +do-install: + ${MKDIR} ${STAGEDIR}${CACHEDIR} + ${MKDIR} ${STAGEDIR}${DOCSDIR} + ${MKDIR} ${STAGEDIR}${ETCDIR}/http.d + ${MKDIR} ${STAGEDIR}${ETCDIR}/stream.d + ${MKDIR} ${STAGEDIR}${LOGDIR} + ${MKDIR} ${STAGEDIR}${MODDIR} + ${MKDIR} ${STAGEDIR}${WWWDIR}/html + + ${RLN} ${STAGEDIR}${MODDIR} ${STAGEDIR}${ETCDIR}/modules + + ${INSTALL_PROGRAM} ${WRKSRC}/objs/angie \ + ${STAGEDIR}${PREFIX}/sbin/angie-nodebug + + ${LN} -fs angie-nodebug ${STAGEDIR}${PREFIX}/sbin/angie + + ${INSTALL_MAN} ${WRKSRC}/objs/angie.8 ${STAGEDIR}${MAN8PREFIX}/man/man8 +.for i in CHANGES CHANGES.ru README.rst + ${INSTALL_MAN} ${WRKSRC}/${i} ${STAGEDIR}${DOCSDIR} +.endfor + +.for i in fastcgi.conf fastcgi_params mime.types scgi_params uwsgi_params + ${INSTALL_DATA} ${WRKSRC}/conf/${i} ${STAGEDIR}${ETCDIR}/${i}.sample +.endfor + ${INSTALL_DATA} ${WRKDIR}/angie.conf.sample \ + ${STAGEDIR}${ETCDIR} + ${INSTALL_DATA} ${WRKDIR}/default.conf.sample \ + ${STAGEDIR}${ETCDIR}/http.d + ${INSTALL_DATA} ${WRKDIR}/example.conf.sample \ + ${STAGEDIR}${ETCDIR}/stream.d + +.for i in 50x.html index.html + ${INSTALL_DATA} ${WRKSRC}/html/${i} ${STAGEDIR}${WWWDIR}/html/${i}.sample +.endfor + +do-install-DEBUG-on: + ${INSTALL} ${COPY} -m ${BINMODE} ${WRKSRC_DEBUG}/objs/angie \ + ${STAGEDIR}${PREFIX}/sbin/angie-debug +.endif .include diff --git a/www/angie/distinfo b/www/angie/distinfo --- a/www/angie/distinfo +++ b/www/angie/distinfo @@ -1,3 +1,5 @@ -TIMESTAMP = 1686140577 +TIMESTAMP = 1690816224 SHA256 (angie-1.2.0.tar.gz) = 82f23115c2e8ebf00d5429622ad96e8c7e785e87bc298b292246660cc61e2cff SIZE (angie-1.2.0.tar.gz) = 1510159 +SHA256 (leev-ngx_http_geoip2_module-3.4_GH0.tar.gz) = ad72fc23348d715a330994984531fab9b3606e160483236737f9a4a6957d9452 +SIZE (leev-ngx_http_geoip2_module-3.4_GH0.tar.gz) = 8877 diff --git a/www/angie/files/angie.conf.sample.in b/www/angie/files/angie.conf.sample.in new file mode 100644 --- /dev/null +++ b/www/angie/files/angie.conf.sample.in @@ -0,0 +1,41 @@ +user %%WWWOWN%%; +worker_processes auto; +worker_rlimit_nofile 65536; + +error_log %%LOGDIR%%/error.log notice; +pid %%RUNDIR%%/angie.pid; + +events { + worker_connections 65536; +} + +http { + include %%ETCDIR%%/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + log_format extended '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" rt="$request_time" ' + '"$http_user_agent" "$http_x_forwarded_for" ' + 'h="$host" sn="$server_name" ru="$request_uri" u="$uri" ' + 'ucs="$upstream_cache_status" ua="$upstream_addr" us="$upstream_status" ' + 'uct="$upstream_connect_time" urt="$upstream_response_time"'; + + access_log %%LOGDIR%%/access.log main; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout 65; + + #gzip on; + + include %%ETCDIR%%/http.d/*.conf; +} + +#stream { +# include %%ETCDIR%%/stream.d/*.conf; +#} diff --git a/www/angie/files/angie.in b/www/angie/files/angie.in new file mode 100644 --- /dev/null +++ b/www/angie/files/angie.in @@ -0,0 +1,73 @@ +#!/bin/sh + +# PROVIDE: angie +# REQUIRE: LOGIN +# KEYWORD: shutdown + +# Add these lines to /etc/rc.conf.local or /etc/rc.conf +# to enable the service: +# +# angie_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable angie. +# +# angie_flags (str): Set to "" by default. +# Extra flags passed to start command. + +. /etc/rc.subr + +name=angie +rcvar=angie_enable + +command=%%PREFIX%%/sbin/${name} +pidfile=%%RUNDIR%%/${name}.pid +required_files=%%ETCDIR%%/${name}.conf + +extra_commands="configtest reload upgrade" + +configtest_cmd=angie_config_check +upgrade_cmd="angie_upgrade" + +reload_precmd=angie_config_check +restart_precmd=angie_config_check +start_precmd=angie_config_check + +load_rc_config $name + +: ${angie_enable:=NO} +: ${angie_flags:=} +: ${angie_config_valid:=""} + +angie_config_check() { + [ -n "${angie_config_valid}" ] && return 0 + + echo "Checking config validity:" + eval ${command} ${angie_flags} -t || return 1 + + angie_config_valid=yes +} + +angie_upgrade() { + if [ ! -s ${pidfile} ]; then + echo "No running ${name} found." + return 1 + fi + + angie_config_check || return 1 + + echo "Starting new ${name}." + kill -USR2 $(cat ${pidfile}) + + for i in $(seq 5); do + sleep 1 + if [ -f ${pidfile} -a -f ${pidfile}.oldbin ]; then + echo "Shutting down old ${name}." + kill -QUIT $(cat ${pidfile}.oldbin) + return 0 + fi + done + + echo "Upgrade failed!" + return 1 +} + +run_rc_command "$1" diff --git a/www/angie/files/default.conf.sample.in b/www/angie/files/default.conf.sample.in new file mode 100644 --- /dev/null +++ b/www/angie/files/default.conf.sample.in @@ -0,0 +1,49 @@ +server { + listen 80; + server_name localhost; + + #access_log %%LOGDIR%%/host.access.log main; + + location / { + root %%WWWDIR%%/html; + index index.html index.htm; + } + + location /status/ { + api /status/; + allow 127.0.0.1; + deny all; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root %%WWWDIR%%/html; + } + + # proxy the PHP scripts to Apache listening on 127.0.0.1:80 + # + #location ~ \.php$ { + # proxy_pass http://127.0.0.1; + #} + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + # + #location ~ \.php$ { + # root html; + # fastcgi_pass 127.0.0.1:9000; + # fastcgi_index index.php; + # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; + # include fastcgi_params; + #} + + # deny access to .htaccess files, if Apache's document root + # concurs with angie's one + # + #location ~ /\.ht { + # deny all; + #} +} diff --git a/www/angie/files/example.conf.sample.in b/www/angie/files/example.conf.sample.in new file mode 100644 --- /dev/null +++ b/www/angie/files/example.conf.sample.in @@ -0,0 +1,24 @@ +#upstream stream_backend { +# server backend1.example.com:12345 weight=5; +# server backend2.example.com:12345 max_fails=2 fail_timeout=30s; +# server backend3.example.com:12345 max_conns=3; +#} +# +#upstream dns_servers { +# least_conn; +# server 192.168.136.130:53; +# server 192.168.136.131:53; +# server 192.168.136.132:53; +#} +# +#server { +# listen 12345; +# proxy_pass stream_backend; +# proxy_timeout 3s; +# proxy_connect_timeout 1s; +#} +# +#server { +# listen 53 udp; +# proxy_pass dns_servers; +#} diff --git a/www/angie/files/pkg-message.in b/www/angie/files/pkg-message.in new file mode 100644 --- /dev/null +++ b/www/angie/files/pkg-message.in @@ -0,0 +1,13 @@ +[ +{ type: install + message: <