nginx+supervisor+gunicorn+flask(socketio)腾讯云主机(Ubuntu18.04)网站部署

目录

  • 环境配置
    • python环境配置
      • pyenv安装
      • pyenv使用
    • 项目环境配置
  • gunicorn配置
  • supervisor配置
  • nginx配置

环境配置

python环境配置

系统默认的python版本是2.7,而实际项目开发往往需要其他版本的python,此时可借助pyenv进行多版本的管理。

pyenv安装

  1. 安装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
  1. 安装pyenv
$ curl https://pyenv.run | bash
  1. 安装完成后,按照提示在.bashrc中添加下列语句,激活pyenv命令
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"使其生效

pyenv使用

  1. 安装python
v=3.6.10;wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v
  1. 查看已有python版本
$  pyenv versions
  1. 设置全局python版本(可选)
$ pyenv global 3.6.10
  1. 设置虚拟环境(可选)
$ pyenv virtualenv 3.6.10 my-env #创建虚拟环境
$ pyenv activate my-env #激活虚拟环境
$ pyenv deactivate my-env #退出虚拟环境

项目环境配置

  1. 升级pip
$ python -m pip install --upgrade pip
  1. 打开项目所在位置,安装需要的库
$ pip install -r requirements.txt

gunicorn配置

Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server,和大多数的web框架兼容,并具有实现简单、轻量级、高性能等特点。

  1. 安装
$ pip install gunicorn
  1. 使用gunicorn启动项目
$ gunicorn --worker-class eventlet -w 1 app:app #:前为启动项目的.py文件名
  1. gunicorn详细配置
    创建gconfig.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配置

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,只需在supervisor的配置文件中写入要管理的进程的可执行文件的路径即可。

  1. 安装
$ sudo apt-get install supervisor
  1. 配置
    在/etc/supervisor/conf.d下创建*.conf
[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配置

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

  1. 安装
$ sudo apt-get install nginx
  1. 配置
    修改/etc/nginx/sites-available/default文件
#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;
	}
}
  1. 启动
$ sudo nginx

你可能感兴趣的:(系统/环境配置)