Joe*_*ert 1 deployment elixir phoenix-framework
mix release和 systemd)全部运行在 VPS (Ubuntu) 上
使用以下命令运行 livebook
LIVEBOOK_IP=<IP> LIVEBOOK_PORT=8089 LIVEBOOK_PASSWORD=<PASS> LIVEBOOK_COOKIE=<COOKIE> livebook server --name livebook@127.0.0.1
可以通过 IP 和端口在浏览器中访问。
mix release使用环境变量运行phoenix应用程序
RELEASE_COOKIE: ${{ secrets.RELEASE_COOKIE }}
RELEASE_DISTRIBUTION: name (literally)
RELEASE_NAME: <appname>
RELEASE_NODE: <appname>@<PUBLIC_IP>
Run Code Online (Sandbox Code Playgroud)
我尝试在同一台机器上运行没有 docker 的 livebook,以确保它们能够连接,但到目前为止还没有运气。
从 Livebook 连接到 phoenix 应用程序既不能从本地安装的 Livebook 上也不能从部署在服务器上的 Livebook 上工作。我正在关注的屏幕截图教程在这里:fly.io 链接
它说该节点无法访问。

因此,如果其他人遇到类似的情况,需要注意以下几点。我让它工作了,非常棒。
Elixir 应用程序以 启动--name app@ip_or_domain。ip_or_domain需要有点。或者,使用短名称--sname app也可以,但不建议这样做,并且会以某种方式关闭来自另一台计算机的访问。
这些参数(--sname等)受到混合发布环境变量的影响。mix release因此,在调用之前或内部设置变量env.sh是env.bat正确的方法。即:
RELEASE_DISTRIBUTION=nameRELEASE_NODE=myapp@staging.myapp.com(DNS解析或IP)RELEASE_NAME=myappRELEASE_COOKIE="cookie"为了调试,我只是操纵vm.args,但你应该使用这些混合发布环境变量。
对于 livebook,我在中设置了以下内容/etc/myapp/livebook.conf:
LIVEBOOK_IP=195.XXX.XXX.XXX
LIVEBOOK_PORT=8089
LIVEBOOK_PASSWORD="password"
LIVEBOOK_COOKIE="cookie"
Run Code Online (Sandbox Code Playgroud)
设置守护进程出奇地简单。您可能应该确保它不会在根文件夹中运行并且不会以 root 身份运行。
/etc/systemd/system/livebook.service
[Unit]
Description=Livebook server for myapp app
After=network.target
Requires=network.target
[Service]
Type=simple
User=root
Group=root
Restart=on-failure
RestartSec=10
EnvironmentFile=/etc/myapp/livebook.conf
EnvironmentHome=/root
ExecStart=/bin/bash -c 'PATH=/root/.asdf/shims:$PATH exec livebook server --name livebook@127.0.0.1'
[Install]
WantedBy=default.target
Run Code Online (Sandbox Code Playgroud)
systemctl enable livebook.service和
systemctl start livebook.service
然后,Livebook 应用程序可以在运行时下访问LIVEBOOK_IP:8089并附加到运行时。所有应用程序代码都可用,自动完成功能也可用,协作编辑等。
我希望这可以帮助有类似想法的人。请随意调整、编辑和澄清这个答案。

顺便说一句,我现在实际上可以使用本地安装的 Livebook 连接到该应用程序。但它会终止另一个 Livebook 连接,因此在某一点只能连接一本 Livebook。