Вопрос 1: В чем проблема? : После этого урока Я установил Nginx
и Passenger
в Ubuntu 16.04 для запуска Python Flask
приложения и I столкнуться с этой проблемой: Когда я захожу на свой сервер по адресу http://hXXXXXXX.stratoserver.net/ в браузере, я получаю эту ошибку:
Приносим извинения, но что-то пошло не так.
Вопрос 2: Версия для пассажиров и режим интеграции : Пассажир с открытым исходным кодом 6.0.4 + Nginx
Вопрос 3: ОС или Linux distro , платформа (включая версию) : Ubuntu 16.04 LTS
$ uname -a
Linux hXXXXXXX.stratoserver.net 4.4.0-042stab141.3 #1 SMP Fri Nov 15 22:45:34 MSK 2019 x86_64 x86_64 x86_64 GNU/Linux
Вопрос 4: Способ установки пассажиров : Nginx + репозиторий Phusion APT
Вопрос 5: Язык программирования вашего приложения : Python 3.7.6 + Flask 1.1.1
Вопрос 6: Используете ли вы PaaS и / или контейнеризацию? Если да, то какой? Нет
Вопрос 7: Что еще нужно знать о вашей настройке? У меня есть VPS на strato.nl с установленной Ubuntu 16.04 и хост адрес: http://hXXXXXXX.stratoserver.net/ и я следовал «Развертыванию Python приложения с Passenger для производства» учебник , делая следующие шаги в учебнике:
1. Linux/Unix
2. Nginx
3. Passenger open source
4. Python installed via LinuxBrew (Python v3.7.6)
5. Ubuntu 16.04 LTS
6. Demo Flask app from github
Демонстрационное приложение Flask было клонировано с github Phusio Passenger:
git clone https://github.com/phusion/passenger-python-flask-demo.git
Запуск passenger-memory-stats
дает:
$ sudo /usr/sbin/passenger-memory-stats
Version: 6.0.4
Date : 2020-01-29 13:12:15 +0100
------------- Apache processes -------------
*** WARNING: The Apache executable cannot be found.
Please set the APXS2 environment variable to your 'apxs2' executable's filename, or set the HTTPD environment variable to your 'httpd' or 'apache2' executable's filename.
---------- Nginx processes -----------
PID PPID VMSize Private Name
--------------------------------------
23320 1 174.9 MB 0.8 MB nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
23325 23320 174.9 MB 0.8 MB nginx: worker process
### Processes: 2
### Total private dirty RSS: 1.54 MB
----- Passenger processes -----
PID VMSize Private Name
-------------------------------
23309 445.7 MB 2.5 MB Passenger watchdog
23312 672.3 MB 7.5 MB Passenger core
### Processes: 2
### Total private dirty RSS: 9.98 MB
Когда я запускаю приложение локально на сервере, все работает как положено:
$ python app.py
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Затем в другом терминал:
$ curl localhost:5000
<!DOCTYPE html>
<html>
<head>
<title>Hello</title>
<style>
html, body {
font-family: sans-serif;
background: #f0f0f0;
margin: 4em;
}
.main {
background: white;
border: solid 1px #c0c0c0;
border-radius: 8px;
padding: 2em;
}
</style>
</head>
<body>
<section class="main">
<h1>Hello world!</h1>
<p>Welcome to the Passenger Flask example app.</p>
</section>
</body>
</html>
Так что локально все выглядит нормально. Однако, когда я захожу в браузер http://hXXXXXXX.stratoserver.net/, я получаю страницу с ошибкой, как описано выше. nginx ошибка /var/log/nginx/error.log
содержит следующее:
App 29730 output: from flask import Flask, render_template
App 29730 output: ImportError
App 29730 output: :
App 29730 output: No module named flask
Таким образом, похоже, что скрипт не может найти пакеты, которые я ранее установил для Python3, и он использует Python2 пакеты. Печать sys.version
в ответе сервера дает:
sys.version: 2.7.17 (default, Dec 24 2019, 17:49:09)
Я установил все свои пакеты для Python3, поэтому мне нужен мой скрипт на сервере, использующий Python3. Как мне настроить Python версию и Python библиотеки в NginX / Passenger?
Мой конфиг демо-приложения:
$ vi /etc/nginx/sites-enabled/demoapp.conf
server {
listen 80;
server_name hXXXXXXX.stratoserver.net;
# Tell Nginx and Passenger where your app's 'public' directory is
root /var/www/demoapp/code/public;
# Turn on Passenger
passenger_enabled on;
}
Что такое пассажир / Nginx настройки, которые мне нужно установить для успешного запуска приложения Flask? Как настроить Passenger / Nginx на использование Python3 и Python3 site-пакетов?