3 个版本 (有破坏性更新)
0.4.0 | 2020年7月18日 |
---|---|
0.3.0 | 2019年7月5日 |
0.2.1 | 2019年6月24日 |
#10 in #进程管理器
每月下载量 61 次
76KB
2K SLoC
Oxidux
受 invoker 和 overmind 启发的 Web 应用开发中的代理服务器和进程管理器。
注意 这仍然是一个非常处于开发中的项目,有很多粗糙的边缘。
安装
HomeBrew 或 LinuxBrew:
brew tap jonmast/oxidux https://github.com/jonmast/oxidux.git
brew install oxidux
手动:下载适用于您的平台的最新版本,并将其放置在您的 PATH 中。
注意 目前不支持 Windows,但如果有需要移植的人,我很乐意提供帮助。
您还需要
- Tmux - 所有应用都在 Tmux 会话中运行。
设置
Linux
DNS 解析
推荐使用 dev-tld-resolver 工具解析 *.test
域名到 localhost。您需要将 test
添加到 DEV_TLD_DOMAINS
环境变量中,以启用对 .test
域名的支持。
服务管理
Oxidux 可以从终端手动运行,但推荐使用 SystemD socket 激活。请参阅示例 socket 和 service 文件。
这些文件应该添加到 /etc/systemd/system/
目录,并使用以下命令启用:
sudo systemctl daemon-reload
sudo systemctl enable oxidux.socket
sudo systemctl start oxidux.socket
MacOS
DNS 解析
Oxidux 内置了 DNS 解析器。将以下配置添加到 /etc/resolver/test
nameserver 127.0.0.1
port 6153
服务管理
推荐使用 Launchd 启动。请参阅示例 plist 文件。
请将 plist 文件添加到 ~/Library/LaunchAgents/
,并使用以下命令加载:
launchctl load ~/Library/LaunchAgents/oxidux.plist
配置
# config.toml
[general]
# The proxy server will run on this port. Ignored if socket activation is used.
proxy_port = 80
# DNS server port for MacOS. Also ignored with socket activation.
dns_port = 6153
# TLD for apps. Defaults to "test".
domain = "test"
应用配置
每个应用都应在 ~/.oxidux/apps
中有一个配置文件。示例
# ~/.oxidux/apps/my-app.toml
# Unique identifer and domain for app (this will be available at "my-app.test")
name="my-app"
# App root directory
directory = "/path/to/app/"
# Commands to start app processes
# dynamically generated port is passed in as an environment variable
commands = { web = "scripts/server -p $PORT", worker = "scripts/worker" }
# Alternatively, load commands from Procfile on app directory
procfile = true
# Alternate domains for app
aliases = ["othername", "yetanother"]
使用方法
重启进程
从应用目录中运行
oxidux restart # Restart all processes for app
# Or
oxidux restart web # Restart just the process named "web"
终端将连接到该进程的 Tmux 会话。
连接到进程会话
从应用目录中运行
oxidux connect web
连接到指定进程的Tmux会话。如果省略进程名称,则使用应用的第一进程。
许可证
根据GPL版本3或更高版本许可,请参阅LICENSE。
依赖项
~20MB
~382K SLoC