在 OS X 中使用 OpenResty

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
时间: 2024-12-23 07:19:41

在 OS X 中使用 OpenResty的相关文章

Mac OS X中,有三种方式来实现启动项的配置

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 22.0px "Times New Roman"; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Times New Roman"; color: #000000 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0p

Mac OS X 中一些常用的命令行技巧

一.网络设置相关 1.网卡的物理地址的动态重置 出于某些需求,例如网络中的 IP 地址或网络帐号与网卡物理地址绑定,使得多个设备无法切换上网,可尝试临时更改物理地址.不过,系统偏好设置是不能修改网卡物理地址的,这就是命令行的用武之地了.具体来说,若心中已有想修改的物理地址,例如 00:1f:3c:93:b5:99,可执行 $ sudo ifconfig en1 ether 00:1f:3c:93:b5:99 来临时修改网卡的物理地址:若没有物理地址,只是想临时启用尝试一下,可用 openssl

IOS OS X 中集中消息的传递机制

1 KVO (key-value Observing) 是提供对象属性被改变是的通知机制.KVO的实现实在Foundation中,很多基于 Foundation 的框架都依赖与它.如果只对某一个对象的值的改变感兴趣的话.就可以使用KVO消息传递.满足KVO的前提条件:1接受者(接受对象改变的通知的对象)需要知道发送者(值会改变的对象):2,接受者需要知道发送者的生命周期,因为它需要在发送者被销毁前注销观察者身份.如果这两个要求都符合的话,这个消息传递机制可以一对多(多个观察者可以注册同一个对象的

在Mac OS X中使用mtr诊断路由节点问题

这个工具是从阿里云客服那知道的,当时遇到阿里云CDN的一个节点出现丢包问题,用这个工具诊断路由节点问题. 1. 下载地址:http://rudix.org/packages/mtr.html(在园子里下载) 2. 下载后运行mtr-0.85-0.pkg进行安装 3.  cd /usr/local/sbin ,就会看mtr文件. 4. 运行mtr出现提示 -bash: mtr: command not found 解决方法: alias mtr=/usr/local/sbin/mtr 5. 继续运

在mac OS X中配置python mysql开发环境

1. 首先要下载安装mysql,下载地址: http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.19.tar.gz 解压: tar -xzvf mysql-5.6.19.tar.gz 然后下载gmock,编译mysql时需要用到: https://googlemock.googlecode.com/files/gmock-1.7.0.zip 解压到指定目录 <span style="font-size:14px;">unzi

有关文件夹与文件的查找,删除等功能 在 os 模块中实现

最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模块, 导入的方法是: import os 一.取得当前目录 s = os.getcwd() # s 中保存的是当前目录(即文件夹) 比如运行abc.py,那么输入该命令就会返回abc所在的文件夹位置. 举个简单例子,我们将abc.py放入A文件夹.并且希望不管将A文件夹放在硬盘的哪个位置,都可以在A

OS X中如何获取当前运行程序的路径

OS X的执行程序一般分为两种.一种是控制台程序,一种是带有GUI的OS X应用程序. 控制台程序往往就一个文件构成executable,而GUI应用通常是一个包(即文件夹),里面除了executable之外还有其它资源. 对于一个GUI程序来说,我们可以通过读取Bundle来获得资源文件.那么对于控制台程序来说,如果要获得其执行时的路径就很有必要了. 比如,我做一个OpenCL程序,那么往往会将OpenCL内核源文件与应用放在一起. 在OS X中获得executable当前路径的方法很简单,首

【转】Mac OS X 中 Zsh 下 PATH 环境变量的正确设置

在 Mac OS X 中使用 zsh,环境变量 PATH 一不小心就会变得很紊乱,表现为自己设置的路径总是被放到系统路径之后,部分路径还会有重复.这是我们不太了解 zsh 启动时加载文件的顺序和 Mac OS X 的 shell 类型导致的. zsh 启动过程中会依次读取以下文件: /etc/zshenv $ZDOTDIR/.zshenv($ZDOTDIR 未设置时默认为 $HOME) 如果是 login shell,读取 /etc/zprofile, $ZDOTDIR/.zprofile 如果

在Mac OS X中配置Apache + PHP + MySQL

在Mac OS X中配置Apache + PHP + MySQL Mac OS X 内置Apache 和 PHP,使用起来非常方便.本文以Mac OS X 10.6.3和为例.主要内容包括: 启动Apache 运行PHP 安装MySQL 使用phpMyAdmin 配置PHP的MCrypt扩展库 设置虚拟主机 启动Apache 有两种方法: 打开“系统设置偏好(System Preferences)” -> “共享(Sharing)” -> “Web共享(Web Sharing)”. 打开“终端