乘客子 uri
Passenger sub uri's
Phusion Passenger 说明在大多数方面都很棒。他们在设置 NGINX、乘客应用程序、测试 python 等方面的安装指南要好得多。关于在单个服务器上设置多个单独的应用程序的说明是有缺陷的。我采用 Passenger 的主要原因是能够托管多个应用程序。
我按照 Phusion Passenger 的说明使用子 URI (https://www.phusionpassenger.com/library/deploy/nginx/deploy/python/) 设置 NGINX 服务器。我认为这将允许我 运行 将应用程序与不同的子文件夹分开。我在 /var/www
中有几个 python 应用程序,例如:
/var/www/dashboard
/var/www/peniso
我有一个 Python 每个虚拟环境,在单独的子文件夹 venv 中。每一个都单独工作。但是如何让所有的东西同时可用呢?我看到的问题是无论使用哪个子URI,同一个app 运行s.
这是我在 /etc/nginx/sites-enable/dashboard.conf 文件中尝试的内容:
server {
listen 80;
server_name testapp.myexample.com;
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/dashboard/public;
passenger_app_type wsgi;
passenger_startup_file passenger_wsgi.py;
# Turn on Passenger
passenger_enabled on;
passenger_python /var/www/dashboard/venv/bin/python3.7;
location ~ ^/mydash(/.*|$) {
alias /var/www/dashboard/public;
passenger_base_uri /mydash;
passenger_app_root /var/www/dashboard;
passenger_document_root /var/www/dashboard/public;
passenger_enabled on;
passenger_python /var/www/dashboard/venv/bin/python3.7;
}
location ~ ^/efergy(/.*|$) {
alias /var/www/peniso/public;
passenger_base_uri /efergy;
passenger_app_root /var/www/peniso;
passenger_document_root /var/www/peniso/public;
passenger_enabled on;
passenger_app_env development;
passenger_python /var/www/peniso/venv/bin/python3.7;
}
}
我浏览 http://testapp.myexample.com/mydash
或 http://testapp.myexample.com/efergy
我看到显示的是同一个应用程序。在顶部,在子部分之前,我可以将 "dashboard" 替换为 "peniso",它会更改 1 个应用程序 运行。我翻转了文件夹的顺序,还将根目录从一个更改为另一个。似乎仍然只有一个应用程序可用。
如何配置 Passenger 以使用多个不同的应用程序?
最终,我需要托管一些 Python 和一些 Node.js 应用程序,一旦我了解如何让 /var/www 下的目录正常工作。
我有一个特定于 Python Ploty 仪表板的解决方案,该仪表板使用名为 Dash 的抽象层编写。我希望可以为所有 Plotly 应用程序找到类似的修复程序,但没有实现它。可以修改 Dash Plotly 应用程序以了解调用的 suburi。如果网络 URL 是 http://example.com/energy
,那么在 Plotly 应用程序内部需要一个简单的更改。
从标准标准部分开始:
app = dash.Dash(__name__,
meta_tags=[
{
"name": "viewport",
"content": "width=device-width"
}
]
)
包括网址的最后一部分
app = dash.Dash(__name__,
meta_tags=[
{
"name": "viewport",
"content": "width=device-width"
}
],
requests_pathname_prefix='/energy/'
)
app.config.suppress_callback_exceptions = True
最后一行是我同时在Plotly列表里捡到的东西,不知道有没有用。
在 Passenger 文档中,我发现子 uri 问题对于所有类型的应用程序都很严重,除了 Rails,它们有一个纯乘客解决方案。整件事没有很好的记录。但是他们在 node.js 文档中确实有一个警告 (https://www.phusionpassenger.com/library/deploy/nginx/deploy/nodejs/):
Sub-URI deployments in Node.js require framework-specific
adjustments in the application. For example, in Express 4.0+,
you should use a router. An alternative is to use url
rewriting to avoid the need for sub-URIs altogether.
在 Passenger GitHub 问题列表中,我在 "use of url rewriting" 上创建了一个文档详细信息请求,因为在大多数情况下这似乎是唯一真正可行的答案 (https://github.com/phusion/passenger/issues/2254)。为每个我们想要 运行.
的不同 node.js 应用找出特定于案例的修复是不可行的
为了让大家了解情况,Passenger 框架结构确实可以将服务器引导到正确的文件夹,但是当真正执行应用程序时,nginx 和 Passenger,出于我不明白的原因,恢复到 运行 他们在配置文件中找到的第一个应用程序。一旦你解决了这个问题,每个应用程序都知道如何被调用——也许 nginx 会阅读他们的公告??——然后它就可以工作了。
Phusion Passenger 说明在大多数方面都很棒。他们在设置 NGINX、乘客应用程序、测试 python 等方面的安装指南要好得多。关于在单个服务器上设置多个单独的应用程序的说明是有缺陷的。我采用 Passenger 的主要原因是能够托管多个应用程序。
我按照 Phusion Passenger 的说明使用子 URI (https://www.phusionpassenger.com/library/deploy/nginx/deploy/python/) 设置 NGINX 服务器。我认为这将允许我 运行 将应用程序与不同的子文件夹分开。我在 /var/www
中有几个 python 应用程序,例如:
/var/www/dashboard
/var/www/peniso
我有一个 Python 每个虚拟环境,在单独的子文件夹 venv 中。每一个都单独工作。但是如何让所有的东西同时可用呢?我看到的问题是无论使用哪个子URI,同一个app 运行s.
这是我在 /etc/nginx/sites-enable/dashboard.conf 文件中尝试的内容:
server {
listen 80;
server_name testapp.myexample.com;
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/dashboard/public;
passenger_app_type wsgi;
passenger_startup_file passenger_wsgi.py;
# Turn on Passenger
passenger_enabled on;
passenger_python /var/www/dashboard/venv/bin/python3.7;
location ~ ^/mydash(/.*|$) {
alias /var/www/dashboard/public;
passenger_base_uri /mydash;
passenger_app_root /var/www/dashboard;
passenger_document_root /var/www/dashboard/public;
passenger_enabled on;
passenger_python /var/www/dashboard/venv/bin/python3.7;
}
location ~ ^/efergy(/.*|$) {
alias /var/www/peniso/public;
passenger_base_uri /efergy;
passenger_app_root /var/www/peniso;
passenger_document_root /var/www/peniso/public;
passenger_enabled on;
passenger_app_env development;
passenger_python /var/www/peniso/venv/bin/python3.7;
}
}
我浏览 http://testapp.myexample.com/mydash
或 http://testapp.myexample.com/efergy
我看到显示的是同一个应用程序。在顶部,在子部分之前,我可以将 "dashboard" 替换为 "peniso",它会更改 1 个应用程序 运行。我翻转了文件夹的顺序,还将根目录从一个更改为另一个。似乎仍然只有一个应用程序可用。
如何配置 Passenger 以使用多个不同的应用程序?
最终,我需要托管一些 Python 和一些 Node.js 应用程序,一旦我了解如何让 /var/www 下的目录正常工作。
我有一个特定于 Python Ploty 仪表板的解决方案,该仪表板使用名为 Dash 的抽象层编写。我希望可以为所有 Plotly 应用程序找到类似的修复程序,但没有实现它。可以修改 Dash Plotly 应用程序以了解调用的 suburi。如果网络 URL 是 http://example.com/energy
,那么在 Plotly 应用程序内部需要一个简单的更改。
从标准标准部分开始:
app = dash.Dash(__name__,
meta_tags=[
{
"name": "viewport",
"content": "width=device-width"
}
]
)
包括网址的最后一部分
app = dash.Dash(__name__,
meta_tags=[
{
"name": "viewport",
"content": "width=device-width"
}
],
requests_pathname_prefix='/energy/'
)
app.config.suppress_callback_exceptions = True
最后一行是我同时在Plotly列表里捡到的东西,不知道有没有用。
在 Passenger 文档中,我发现子 uri 问题对于所有类型的应用程序都很严重,除了 Rails,它们有一个纯乘客解决方案。整件事没有很好的记录。但是他们在 node.js 文档中确实有一个警告 (https://www.phusionpassenger.com/library/deploy/nginx/deploy/nodejs/):
Sub-URI deployments in Node.js require framework-specific
adjustments in the application. For example, in Express 4.0+,
you should use a router. An alternative is to use url
rewriting to avoid the need for sub-URIs altogether.
在 Passenger GitHub 问题列表中,我在 "use of url rewriting" 上创建了一个文档详细信息请求,因为在大多数情况下这似乎是唯一真正可行的答案 (https://github.com/phusion/passenger/issues/2254)。为每个我们想要 运行.
的不同 node.js 应用找出特定于案例的修复是不可行的为了让大家了解情况,Passenger 框架结构确实可以将服务器引导到正确的文件夹,但是当真正执行应用程序时,nginx 和 Passenger,出于我不明白的原因,恢复到 运行 他们在配置文件中找到的第一个应用程序。一旦你解决了这个问题,每个应用程序都知道如何被调用——也许 nginx 会阅读他们的公告??——然后它就可以工作了。