文档章节

在 OS X 中使用 OpenResty

Surjur
 Surjur
发布于 2015/08/01 22:19
字数 879
阅读 172
收藏 0

1. 移除 lighttpd

在 Mac OS X 上安装lighttpd 的时候,我使用 launchctl 来实现 lighttpd 的自动启动。现在,只需要 unload 即可。

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.lighttpd.plist

这会立即停止 lighttpd 的运行。接下来,将 homebrew.mxcl.lighttpd.plist 从~/Library/LanuchAgents 目录中移除。否则下次启动系统的时候,lighttpd 又会启动。

2. 配置 OpenResty 环境

2.1 编译和安装

OpenResty 的编译和安装流程,在官网上讲得很清楚,我不再赘述。

在这里我假设 OpenResty 已经安装到默认路径 /usr/local/openresty 。

修改 /usr/local/openresty/nginx/conf/nginx.conf ,将其中的 server 段下的listen 80 改为 listen 8080 。

这是因为 80 端口只能被 root 用户启动。而在本文中我们是使用当前用户启动 nginx 的。

如果 8080 端口也被占用,请自行换成可用端口。

2.2 创建 plist 文件

launchctl 依赖一个 plist 配置文件来工作。我们需要手动创建这个文件。

plist 是一种标准的 xml 格式,这种格式的详细介绍,可以看这里:cocos2d-x中的plist文件格式详解 。

launchctl 对这个配置文件的格式有一些具体的要求,可以查看 launchd.plist 。

我们创建的 ~/Library/LaunchAgents/org.openresty.plist 文件,内容如下:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>org.openresty</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/openresty/nginx/sbin/nginx</string>
    <string>-p</string>
    <string>/usr/local/openresty/nginx</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>KeepAlive</key>
  <false/>
  <key>HardResourceLimits</key>
  <dict>
    <key>NumberOfFiles</key>
    <integer>512</integer>
  </dict>
  <key>SoftResourceLimits</key>
  <dict>
    <key>NumberOfFiles</key>
    <integer>512</integer>
  </dict>
</dict>
</plist>



注意其中 Label、Program和ProgramArguments 这三个 Key 是必须存在的。

KeepAlive 这个值建议设置成 false ,除非在 nginx.conf 中设置了 daemon off 。Wayne 在launchctl笔记 中作了解释:

设定nginx登录后自启动后发现,由于缺省情况下是生成子进程后父进程立即退出,导致launchctl在KeepAlive配置的作用下反复启动nginx,产生了很多错误信息,所以在设置守护进程的时候要注意规避这类问题,nginx可以通过设置daemon off;或者去除掉KeepAlive设置来解决。

2.3 载入任务

launchctl load ~/Library/LaunchAgents/org.openresty.plist

这条命令会直接启动 openresty ,下次系统重启的时候,也会自动启动。

2.4 使用 80 端口

既然是自己用,那么使用 8080 总是让人很不爽。要使用 80 端口,也很简单。

首先,将 ~/Library/LaunchAgents/org.openresty.plist 复制到/Library/LaunchDaemons/org.openresty.plist :

cp ~/Library/LaunchAgents/org.openresty.plist /Library/LaunchDaemons/org.openresty.plist

/Library/LaunchDaemons 是给管理员使用的,在用户登录前生效,以 root 身份执行任务。

为什么不复制到 /Library/LaunchAgent 中呢?因为 Wayne 在 launchctl笔记 中提到:

LaunchAgents下的plist都会以当前登录用户的身份load进来……

然后,移除当前的监听:

launchctl unload ~/Library/LaunchAgents/org.openresty.plist
rm ~/Library/LaunchAgents/org.openresty.plist

最后,用 sudo 调用 launchctl:

sudo launchctl load /Library/LaunchDaemons/org.openresty.plist

当然,记得要把 nginx 配置文件中的监听端口改成 80 。

3. 快捷方式

在开发过程中,经常需要重启 nginx 进程。在我的电脑上,有两个 nginx 进程,一个负责正常的 HTTP 服务;一个负责测试 OpenResty 功能。

我写了一个脚本 openresty 用于快速操作 nginx 进程。

#!/bin/bash
sign=${1:-reload}
prefix=${2:-1}

if [ "$prefix" = 1 ]; then
    prefix='/usr/local/etc/openresty'
else
    prefix="$hhl/server"
fi

echo "nginx -s $sign -p $prefix"
nginx -s "$sign" -p "$prefix"



在实际使用中,我只需要这样调用就行了:

#!/bin/bash 
openresty reload 1
openresty reopen 2




本文转载自:http://zengrong.net/post/2217.htm

共有 人打赏支持
Surjur
粉丝 26
博文 193
码字总数 12053
作品 0
杭州
程序员
私信 提问
OpenResty 1.9.3.1 RC1 发布,Web 应用服务器

OpenResty 1.9.3.1 RC1 发布,相比上一版本 OpenResty 1.7.10.2,改进如下: * 升级至 Nginx core 1.9.3. * see the changes here: * 升级至 PostgresNginxModule 1.0rc7. * 特性:修复 ngin......

oschina
2015/08/03
1K
7
OpenResty x Open Talk丨深圳站

一、活动介绍 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 ...

又拍云
2018/12/13
0
0
OpenResty x Open Talk 丨北京站

一、活动介绍 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 ...

又拍云
03/04
0
0
OpenResty x Open Talk 武汉站

一、活动介绍 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 ...

又拍云
04/11
0
0
openresty调用自己编译C动态库,无法找到其自己动态库依赖的库

使用FFI编写一个动态库,库里面调用openssl及相关的库,但是加载到openresty时,无法找到其依赖的openssl库和第三方的库,并且已放到usr/lib目录性,并在 lua_package_cpath '/lib64/?.so;/...

vanlee90
2016/09/26
628
1

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 看见这花臂了么?赶紧叫大佬!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享周华健的单曲《有没有一首歌会让你想起我》 《有没有一首歌会让你想起我》- 周华健 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
98
4
Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
今天
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
3
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
20
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部