--JE Un lycéen ordinaire qui fréquente un lycée privé qui était une école de filles jusqu'à l'année dernière. Je déteste les humains. Il n'apparaîtra plus après cela.
Je ne touche pas Python sur le système avec un seul doigt.
De plus, je ne modifierai pas directement Python installé avec pyenv.
Utilisez virtualenv pour toutes les installations de packages.
De plus, je pense que le répertoire pyenv est généralement créé sous $ HOME
,
Ce n'est pas facile à utiliser depuis le système sous $ HOME
, donc ici il est préparé sous / opt
.
Par conséquent, le travail lié à pyenv est souvent effectué en tant que root.
J'ai besoin de git pour le moment.
$ sudo apt-get install git
Les packages suivants sont nécessaires pour construire Python, alors installez-les.
Compilateur C etc.
$ sudo apt-get install build-essential
Bibliothèque SQLite pour la prise en charge de SQLite, etc.
$ sudo apt-get install libsqlite3-dev
$ sudo apt-get install sqlite3
$ sudo apt-get install bzip2 libbz2-dev
Bibliothèque SSL requise par pip
$ sudo apt-get install libssl-dev openssl
Bibliothèque Readline requise par l'extension readline
$ sudo apt-get install libreadline6 libreadline6-dev
Je vais le faire en tant que root.
sudo su
cd /opt
git clone git://github.com/yyuu/pyenv.git pyenv
echo 'export PYENV_ROOT="/opt/pyenv"' >> ~/.bashrc
echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.bashrc
echo ' export PATH=${PYENV_ROOT}/bin:$PATH' >> ~/.bashrc
echo ' eval "$(pyenv init -)"' >> ~/.bashrc
echo 'fi' >> ~/.bashrc
exec $SHELL -l
cd $PYENV_ROOT/plugins
git clone git://github.com/yyuu/pyenv-virtualenv.git
sudo su
pyenv install 3.4.0
Comme mémo.
--Afficher la liste des versions installables
pyenv install --list
--Installez 3.4.0
pyenv install 3.4.0
--Liste des versions installées
pyenv versions
--Création d'un environnement virtualenv
pyenv virtualenv 3.4.0 my-virtual-env-3.4.0
--Liste des environnements virtualenv
pyenv virtualenvs
pyenv activate my-virtual-env-3.4.0
--Supprimer l'environnement installé
pyenv uninstall my-virtual-env-3.4.0
Installez le package python-software-properties
pour utiliser la commande ʻadd-apt-repository`
sudo apt-get install python-software-properties
Ajout du référentiel stable Nginx
$ sudo add-apt-repository ppa:nginx/stable
Mise à jour / mise à niveau habituelle
sudo apt-get update
sudo apt-get upgrade
Installez et lancez Nginx
sudo apt-get install nginx
sudo /etc/init.d/nginx start
Connectez-vous à votre navigateur et vérifiez que vous voyez la page d'accueil Nginx.
Créez un répertoire d'applications. Tous les fichiers liés à l'application sont stockés ici. _ * Cependant, l'environnement virtualenv est géré collectivement par pyenv sous / opt. _
sudo mkdir -p /var/www/demoapp
Si l'autorité utilisateur reste root, remplacez-la par l'utilisateur que vous utilisez
sudo chown -R username:username /var/www/demoapp/
sudo -s
pyenv virtualenv 3.4.0 demoapp
Installer Flask dans virtualenv
sudo -s
pyenv activate demoapp
pip install flask
Créez / var / www / demoapp / hello.py
.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080)
pyenv activate demoapp
python /var/www/demoapp/hello.py
Vérifiez en vous connectant au port du serveur: 8080 avec un navigateur Web.
Je pense que uWSGI sera partagé par plusieurs applications, donc Préparez-le séparément du virtualenv pour l'application.
Si vous avez activé le virtualenv demoapp
pour votre application, désactivez.
deactivate
virtualenv pour uWSGI
sudo -s
pyenv virtualenv 3.4.0 uwsgi-3.4.0
sudo -s
pyenv activate uwsgi-3.4.0
pip install uwsgi
Supprimer les paramètres de site par défaut
sudo rm /etc/nginx/sites-enabled/default
Créer un fichier de configuration pour l'exemple d'application
Créez / var / www / demoapp / demoapp_nginx.conf
server {
listen 80;
server_name localhost;
charset utf-8;
client_max_body_size 75M;
location / { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_pass unix:/var/www/demoapp/demoapp_uwsgi.sock;
}
}
Mettre un lien symbolique dans le répertoire du fichier de configuration Nginx
sudo ln -s /var/www/demoapp/demoapp_nginx.conf /etc/nginx/conf.d/
Redémarrez Nginx
sudo /etc/init.d/nginx restart
Connectez-vous au serveur avec un navigateur Web et vérifiez. ** À ce stade, vous devriez obtenir une erreur «502 Bad Gateway». ** **
Créez / var / www / demoapp / demoapp_uwsgi.ini
[uwsgi]
#application's base folder
base = /var/www/demoapp
#python module to import
app = hello
module = %(app)
#virtualenv folder
home = /opt/pyenv/versions/demoapp
pythonpath = %(base)
#socket file's location
socket = /var/www/demoapp/%n.sock
#permissions for the socket file
chmod-socket = 666
#the variable that holds a flask application inside the module imported at line #6
callable = app
#location of log files
logto = /var/log/uwsgi/%n.log
sudo mkdir -p /var/log/uwsgi
sudo chown -R username:username /var/log/uwsgi
pyenv activate uwsgi-3.4.0
uwsgi --ini /var/www/demoapp/demoapp_uwsgi.ini
Connectez-vous au serveur avec un navigateur Web et vérifiez. Si Nginx et uWSGI sont capables de communiquer avec le socket sans aucun problème, «Hello World!» S'affiche.
uWSGI Emperor
uWSGI Emperor est une fonction qui lit le fichier de configuration uWSGI et démarre le processus uWSGI. Plusieurs paramètres peuvent être lus et le démarrage du processus peut être géré collectivement.
Créez / etc / init / uwsgi.conf
description "uWSGI"
start on runlevel [2345]
stop on runlevel [06]
respawn
env UWSGI=/opt/pyenv/versions/uwsgi-3.4.0/bin/uwsgi
env LOGTO=/var/log/uwsgi/emperor.log
exec $UWSGI --master --emperor /etc/uwsgi/vassals --die-on-term --uid www-data --gid www-data --logto $LOGTO
La dernière ligne ci-dessus signifie rechercher le fichier de configuration qui existe dans / etc / uwsgi / vassals
et démarrer le démon uWSGI, donc
Créez un lien symbolique vers le fichier d'installation uWSGI de l'exemple d'application dans / etc / uwsgi / vassals
.
sudo mkdir -p /etc/uwsgi/vassals
sudo ln -s /var/www/demoapp/demoapp_uwsgi.ini /etc/uwsgi/vassals
Le démon uWSGI est configuré pour démarrer en tant qu'utilisateur www-data
.
Par conséquent, gardez le propriétaire de l'application et enregistrez les répertoires en tant que «www-data».
sudo chown -R www-data:www-data /var/www/demoapp/
sudo chown -R www-data:www-data /var/log/uwsgi/
Puisque Nginx et uWSGI fonctionnent avec le même utilisateur www-data
, modifiez l'autorisation de socket sur 644.
Modifier / var / www / demoapp / demoapp_uwsgi.ini
...
#permissions for the socket file
chmod-socket = 644
sudo start uwsgi
Connectez-vous au serveur avec un navigateur Web et vérifiez. Si tout va bien jusqu'à présent, "Hello World!" Sera affiché.
Vous pouvez maintenant exécuter l'application Flask. Je pense qu'il y a plusieurs points à prendre en compte. Surtout autour de Nginx et uWSGI, veuillez presser les paramètres dans leurs documents et googles respectifs.
http://vladikk.com/2013/09/12/serving-flask-with-nginx-on-ubuntu/
Recommended Posts