MacPorts 安装 Tengine

创建 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=4

PortSystem          1.0

name                tengine
version             3.1.0
revision            0
categories          www
license             BSD
maintainers         nomaintainer

conflicts           nginx nginx-devel

description         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/download

distname            ${name}-${version}
checksums           sha256 64ed7155c0c904ce0fe7199c21b8eb6c2abfc267278fa8af832c0cb781e864dc

depends_lib         port:pcre \
                    port:openssl \
                    port:zlib

set 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-tracking

build.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 manpage
    set 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_module

livecheck.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/939418.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Javascript-web API-day02

文章目录 01-事件监听02-点击关闭广告03-随机点名案例04-鼠标经过或离开事件05-可点击的轮播图06-小米搜索框07-键盘类型事件08-键盘事件-发布评论案例09-focus选择器10-评论回车发布11-事件对象12-trim方法13-环境对象14-回调函数15-tab栏切换 01-事件监听 <!DOCTYPE html…

powershell(1)

免责声明 学习视频来自 B 站up主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下代码、网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 泷羽sec官网&#xff1a;http…

GraphReader: 将长文本结构化为图,并让 agent 自主探索,结合的大模型长文本处理增强方法

GraphReader: 将长文本结构化为图&#xff0c;并让 agent 自主探索&#xff0c;结合的大模型长文本处理增强方法 论文大纲理解为什么大模型和知识图谱不够&#xff1f;还要多智能体 设计思路数据分析解法拆解全流程核心模式提问为什么传统的长文本处理方法会随着文本长度增加而…

如何一站式计算抗体和蛋白信息

在生物医药研究领域&#xff0c;蛋白质&#xff08;抗体、多肽等&#xff09;的性质计算是理解生命机制、分离/纯化/鉴定/生产蛋白、以及开发蛋白新药的重要研究手段。然而&#xff0c;很多相关功能分散在不同的软件中&#xff0c;十分不方便。鹰谷电子实验记录本InELN一站式内…

物理信息神经网络(PINN)八课时教案

物理信息神经网络&#xff08;PINN&#xff09;八课时教案 第一课&#xff1a;物理信息神经网络概述 1.1 PINN的定义与背景 物理信息神经网络&#xff08;Physics-Informed Neural Networks&#xff0c;简称PINN&#xff09;是一种将物理定律融入神经网络训练过程中的先进方…

gitlab初始化+API批量操作

几年没接触gitlab了&#xff0c;新版本装完以后代码提交到默认的main分支&#xff0c;master不再是主分支 项目有几十个仓库&#xff0c;研发提交代码后仓库地址和之前的发生了变化 有几个点 需要注意 1、修改全局默认分支 2、关闭分支保护 上面修改了全局配置不会影响已经创…

【记录50】uniapp安装uview插件,样式引入失败分析及解决

SassError: Undefined variable: "$u-border-color". 表示样式变量$u-border-color没定义&#xff0c;实际是定义的 首先确保安装了scss/sass 其次&#xff0c;根目录下 app.vue中是否全局引入 <style lang"scss">import /uni_modules/uview-ui/in…

STM32CUBEMX+STM32H743ZIT6+MPU+DMA+UART下发指令对MPU配置管理

实现stm32H7的IAP过程&#xff0c;没有想象中的顺利。 需要解决串口DMA和MPU配置管理。 查看正点原子的MPU管理例程&#xff0c;想自己用串口下发指令&#xff0c;实现MPU打开&#xff0c;读取和写入指令。 中间遇到很多坑&#xff0c;比如串口DMA方式下发指令&#xff0c;没反…

8. 数组拼接

题目描述 现在有多组整数数组&#xff0c;需要将它们合并成一个新的数组。合并规则&#xff0c;从每个数组里按顺序取出固定长度的内容合并到新的数组中&#xff0c;取完的内容会删除掉&#xff0c;如果该行不足固定长度或者已经为空&#xff0c;则直接取出剩余部分的内容放到新…

Chrome 浏览器原生功能截长屏

我偶尔需要截取一些网页内容作为素材&#xff0c;但偶尔内容很长无法截全&#xff0c;需要多次截屏再拼接&#xff0c;过于麻烦。所以记录下这个通过浏览器原生功能截长屏的方案。 注意 这种方案并不是百分百完美&#xff0c;如果涉及到一些需要滚动加载的数据或者悬浮区块&am…

学技术学英文:代码中的锁:悲观锁和乐观锁

本文导读&#xff1a; 1. 举例说明加锁的场景&#xff1a; 多线程并发情况下有资源竞争的时候&#xff0c;如果不加锁&#xff0c;会出现数据错误&#xff0c;举例说明&#xff1a; 业务需求&#xff1a;账户余额>取款金额&#xff0c;才能取钱。 时间线 两人共有账户 …

深度学习之目标检测——RCNN

Selective Search 背景:事先不知道需要检测哪个类别,且候选目标存在层级关系与尺度关系 常规解决方法&#xff1a;穷举法&#xff0c;在原始图片上进行不同尺度不同大小的滑窗&#xff0c;获取每个可能的位置 弊端&#xff1a;计算量大&#xff0c;且尺度不能兼顾 Selective …

数字人在虚拟展厅中的应用方向有哪些?

数字人在虚拟展厅中的应用日益丰富&#xff0c;为参观者带来了前所未有的互动体验。以下是数字人在虚拟展厅中的几大主要应用方向&#xff1a; 1. 智能导览与讲解 在虚拟展厅中&#xff0c;数字人以其独特的魅力担任着导览员的角色。它们不仅为参观者提供精准的信息和指引&am…

WEB开发: 全栈工程师起步 - Python Flask +SQLite的管理系统实现

一、前言 罗马不是一天建成的。 每个全栈工程师都是从HELLO WORLD 起步的。 之前我们分别用NODE.JS 、ASP.NET Core 这两个框架实现过基于WebServer的全栈工程师入门教程。 今天我们用更简单的来实现&#xff1a; Python。 我们将用Python来实现一个学生管理应用&#xff0…

【我的 PWN 学习手札】IO_FILE 之 stdin任意地址写

我们知道&#xff0c;stdin会往“缓冲区”先读入数据&#xff0c;如果我们劫持这个所谓“缓冲区”到其他地址呢&#xff1f;是否可以读入数据到任意地址&#xff1f;答案是肯定的。 注意&#xff01;代码中的“-------”分隔&#xff0c;是为了区分一条调用链上不同代码片段&am…

从 Dify 到 Rill-Flow:大模型应用平台的进化之路

1. 基于 dify 的大模型应用平台构建 近些年&#xff0c;大语言模型领域的高速发展&#xff0c;涌现出了众多优秀的产品&#xff0c;能够解决很多实际的业务场景&#xff0c;大幅提升工作效率。各公司都纷纷搭建起了自己的大模型应用平台&#xff0c;来统一管理各种大语言模型&…

37. Three.js案例-绘制部分球体

37. Three.js案例-绘制部分球体 实现效果 知识点 WebGLRenderer WebGLRenderer 是Three.js中的一个渲染器类&#xff0c;用于将3D场景渲染到网页上。 构造器 WebGLRenderer( parameters : Object ) 参数类型描述parametersObject渲染器的配置参数&#xff0c;可选。 常用…

基于 SSM 框架 Vue 电脑测评系统:赋能电脑品质鉴定

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;作为一个一般的用户都开始注重与自己的信息展示平台&#xff0c;实现基于SSM框架的电脑测评系统在技术上已成熟。本文介绍了基于SSM框架的电脑测评系统的开发全过程。通过分析用户对于基于SSM框架的电脑测评系统的…

二七(vue2-03)、生命周期四个阶段及八个钩子、工程化开发和脚手架、组件注册、拆分组件

1. 生命周期 1.1 生命周期四个阶段 <!-- Vue生命周期&#xff1a;一个Vue实例从 创建 到 销毁 的整个过程。生命周期四个阶段&#xff1a;① 创建 ② 挂载 ③ 更新 ④ 销毁1.创建阶段&#xff1a;创建响应式数据2.挂载阶段&#xff1a;渲染模板3.更新阶段&#xff1a;修改…

Group FLUX - Beta Sprint Essay4

文章目录 I. SCRUMAchievements from yesterday’s stand-up meeting to the presentKey Features Demonstrated in Beta PM ReportBurnup mapRunning image of our current program I. SCRUM Achievements from yesterday’s stand-up meeting to the present Zhong Haoyan: …