系统默认的python版本是2.7,而实际项目开发往往需要其他版本的python,此时可借助pyenv进行多版本的管理。
$ sudo apt-get update
$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
$ curl https://pyenv.run | bash
export PATH="/home/ubuntu/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
运行 "source ~/.bashrc"激活bash配置
4. 解决每次重启终端都需要使用 "source ~/.bashrc"激活bash配置的问题
# 加载.bashrc文件
if test -f .bashrc ; then
source .bashrc
fi
在.bash_profile中添加上述语句,运行 "source ~/.bash_profile"使其生效
v=3.6.10;wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v
$ pyenv versions
$ pyenv global 3.6.10
$ pyenv virtualenv 3.6.10 my-env #创建虚拟环境
$ pyenv activate my-env #激活虚拟环境
$ pyenv deactivate my-env #退出虚拟环境
$ python -m pip install --upgrade pip
$ pip install -r requirements.txt
Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server,和大多数的web框架兼容,并具有实现简单、轻量级、高性能等特点。
$ pip install gunicorn
$ gunicorn --worker-class eventlet -w 1 app:app #:前为启动项目的.py文件名
#demo
import logging
import logging.handlers
from logging.handlers import WatchedFileHandler
import os
import multiprocessing
bind = '127.0.0.1:8000' #绑定指定socket
backlog = 512 #监听队列
timeout = 30
worker_class = 'eventlet' #模式选择,默认为sync
reload = True #程序文件修改后自动重载
workers = multiprocessing.cpu_count() * 2 + 1 #进程数
loglevel = 'info'
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"' #日志记录格式
accesslog = "-" #默认路径记录日志
errorlog = "-"
#daemon = True #开启后台运行
daemon是以守护进程运行,可在终端退出情况下保证程序的正常运行,本文使用supervisor来替代其功能。设置配置文件后,可通过gunicorn -c path/to/gconfig.py app:app检测是否能正常运行程序。
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,只需在supervisor的配置文件中写入要管理的进程的可执行文件的路径即可。
$ sudo apt-get install supervisor
[program:Pixelboooom]
directory=/home/ubuntu/Pixelboooom ;项目路径
command=/home/ubuntu/.pyenv/versions/3.6.10/bin/gunicorn -c /home/ubuntu/Pixelboooom/gconfig.py app:app ;gunicorn环境所在目录及配置文件所在目录
user=ubuntu ;用户
autostart=true ;supervisor启动时自动运行
autorestart=true
startsecs=5
startretries=3 ;启动失败时重试次数
priority=1 ;优先级,默认为999
[supervisord]
[supervisorctl]
配置文件详解
3. 使用
$ sudo supervisorctl reload #重载supervisor
$ sudo supervisorctl status #查看运行状态
$ tail /var/log/supervisor/supervisord.log #查看详细运行日志
$ sudo supervisorctl stop all #关闭所有子进程
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
$ sudo apt-get install nginx
#demo
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name 公网ip地址;
location / {
include proxy_params;
proxy_pass http://127.0.0.1:8000;
}
location /socket.io {
include proxy_params;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://127.0.0.1:8000/socket.io;
}
}
$ sudo nginx