Portfile_0">创建 Portfile
以下是我参考 nginx
调整后的 Portfile
,如需安装指定版本,除了修改版本号之外还需要修改 checksums
里的 sha256
sha256
值需下载 Tengine 源码文件(tar.gz)进行计算
模块的调整在最后的 configure.args-append
部分,参考 https://tengine.taobao.org/document/install.html 和 Nginx 编译参数
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4PortSystem 1.0name tengine
version 3.1.0
revision 0
categories www
license BSD
maintainers nomaintainerconflicts nginx nginx-develdescription A high performance web server based on Nginx
long_description Tengine is a web server originated by Taobao, \compatible with Nginx, with additional features.homepage http://tengine.taobao.org
master_sites http://tengine.taobao.org/downloaddistname ${name}-${version}
checksums sha256 64ed7155c0c904ce0fe7199c21b8eb6c2abfc267278fa8af832c0cb781e864dcdepends_lib port:pcre \port:openssl \port:zlibset nginx_share ${prefix}/share/${name}
set nginx_examples ${nginx_share}/examples
set nginx_confdir ${prefix}/etc/${name}
set nginx_logdir ${prefix}/var/log/${name}
set nginx_rundir ${prefix}/var/run/${name}
set nginx_pidfile ${nginx_rundir}/${name}.pid
set nginx_all_confs {fastcgi.conf fastcgi_params mime.types nginx.conf scgi_params uwsgi_params}
set auto_activate_confs {nginx.conf mime.types fastcgi.conf}configure.args-append \--with-cc-opt=\"${configure.cppflags} ${configure.cflags}\" \--with-ld-opt=\"${configure.ldflags}\" \--conf-path=${nginx_confdir}/nginx.conf \--error-log-path=${nginx_logdir}/error.log \--http-log-path=${nginx_logdir}/access.log \--pid-path=${nginx_pidfile} \--lock-path=${nginx_rundir}/${name}.lock \--http-client-body-temp-path=${nginx_rundir}/client_body_temp \--http-proxy-temp-path=${nginx_rundir}/proxy_temp \--http-fastcgi-temp-path=${nginx_rundir}/fastcgi_temp \--http-uwsgi-temp-path=${nginx_rundir}/uwsgi_temp \--http-scgi-temp-path=${nginx_rundir}/scgi_temp \--with-compat# pcre2 breaks the lua module (https://trac.macports.org/ticket/65150)
configure.args-append --without-pcre2# remove --disable-dependency-tracking
configure.universal_args-delete --disable-dependency-trackingbuild.target build
destroot.keepdirs ${destroot}${nginx_logdir} \${destroot}${nginx_rundir}post-destroot {xinstall -d -m 755 ${destroot}${nginx_share}xinstall -d -m 755 ${destroot}${nginx_examples}foreach conf ${nginx_all_confs} {set conf_path "${destroot}${nginx_confdir}/${conf}"if {[file exists ${conf_path}]} {file delete ${conf_path}}if {[file exists ${conf_path}.default]} {move ${conf_path}.default ${destroot}${nginx_examples}}}file rename ${destroot}${prefix}/html ${destroot}${nginx_share}# Install the manpageset man_path "${destroot}${prefix}/share/man/man8"xinstall -d -m 0755 ${man_path}xinstall -m 0644 ${worksrcpath}/man/nginx.8 ${man_path}reinplace -q "s|/var/run/mytengine.pid|${nginx_pidfile}/|g" ${man_path}/nginx.8
}post-activate {foreach conf ${auto_activate_confs} {if {![file exists ${nginx_confdir}/${conf}]} {xinstall -m 644 ${nginx_examples}/${conf}.default ${nginx_confdir}/${conf}}}
}startupitem.create yes
startupitem.pidfile auto ${nginx_pidfile}
startupitem.executable ${prefix}/sbin/nginx -g "daemon off;"notes "\A set of sample configuration files has been installed in ${nginx_examples}.\n\n\Additionally, the files [join ${auto_activate_confs} ", "] have been copied to ${nginx_confdir} if they didn't exist yet.\n\Adjust these files to your needs before starting Tengine."configure.args-append --prefix=${prefix} \--with-http_ssl_module \--with-http_v2_module \--with-http_realip_module \--with-http_addition_module \--with-http_xslt_module \--with-http_geoip_module \--with-http_flv_module \--with-http_mp4_module \--with-http_gunzip_module \--with-http_gzip_static_module \--with-http_auth_request_module \--with-pcre \--with-threads \--with-stream \--with-stream_ssl_module \--with-stream_realip_module \--with-stream_geoip_module \--with-stream_ssl_preread_modulelivecheck.type regexm
livecheck.url ${homepage}/en/download.html
将文件保存至 ~/Ports/www/tengine/Portfile
添加自定义源
编辑 /opt/local/etc/macports/sources.conf
,在最下方加上一行:
# 默认
rsync://rsync.macports.org/macports/release/tarballs/ports.tar.gz [default]
# 增加该行,注意替换用户名
file:///Users/用户名/Ports
运行 sudo portindex ~/Ports
加入索引
安装
运行 port info tengine
可以查看到信息后就能通过 install
安装了:
sudo port install tengine
配置
配置文件目录:/opt/local/etc/tengine
,同样的修改 nginx.conf
文件即可
日志文件目录:/opt/local/var/log/tengine
,建议修改文件夹权限方便通过编辑器查看日志:
sudo chown _www:admin /opt/local/var/log/tengine
运行目录:/opt/local/var/run/tengine
启停
sudo port load tengine
sudo port unload tengine