区分几个概念:
WSGI:
全称是Web Server Gateway Interface(web服务器网关接口)
它是一种规范,它是web服务器和web应用程序之间的接口
它的作用就像是桥梁,连接在web服务器和web应用框架之间
没有官方的实现,更像一个协议。只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行
uwsgi:是一种传输协议,用于定义传输信息的类型。常用于在uWSGI服务器与其他网络服务器的数据通信
uWSGI:是实现了uwsgi协议WSGI的web服务器。
阿里云服务器
选择云服务器:阿里云服务器 https://www.aliyun.com
创建服务器选择ubuntu16.04 64位的操作系统
进入控制台,查看实例创建情况
给安全组配置规则,添加5000端口
利用命令行进行远程服务器登录
ssh 用户名@ip地址
登陆后的相关软件安装
先更新apt软件源
sudo apt-get update
python和pip
这两个环境是ubuntu16.04自带的
uwsgi安装
uwsgi是一个能够运行flask项目的高性能web服务器,需要先安装两个依赖
apt-get install build-essential python-dev
然后进行uwsgi的安装
pip install uwsgi
nginx安装
apt-get install nginx
mysql的安装
apt-get install mysql-server
apt-get install libmysqlclient-dev
虚拟环境的安装
virtualenv和virtualenvwrapper的安装:
pip install virtualenv
pip install virtualenvwrapper
使得安装的virtualenvwrapper生效,编辑~/.bashrc文件,内容如下:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh
使编辑后的文件生效
source ~/.bashrc
hello world程序的部署
- 利用pycharm创建python项目
- 创建config.ini文件作为uwsgi的初始化配置文件
#需要声明uwsgi使得uwsgi能够识别当前文件
[uwsgi]
master = true
# 使用 nginx 配合连接时使用
# socket = :5000
# 直接做web服务器使用
http = :5000
# 设定进程数
processes = 4
# 设定线程数
threads = 2
# 指定运行的文件
wsgi-file = app.py
#指定运行的项目的目录[自已项目在哪个目录就用哪个目录]
chdir = /root/home/hello_world
# 指定运行的实例
callable = app
# 指定uwsgi服务器的缓冲大小
buffer-size = 32768
# 在虚拟环境中运行需要指定python目录
pythonpath = /root/.virtualenvs/Flask_test/lib/python2.7/site-packages
# 设置进程id文件
pidfile = uwsgi.pid
# 以守护的形式运行,设置log输出位置
daemonize = uwsgi.log
-
利用scp命令将整个项目上传到远程服务器中
scp -r 本地目录 用户名@ip地址:远程目录 scp -r /home/python/Desktop/hello_world/ root@39.106.21.198:/root/home
-
通过指令运行uwsgi.ini服务器
uwsgi --ini config.ini
-
查看
ps ajx|grep uwsgi
-
停止
uwsgi --stop uwsgi.pid
其中
–ini config.ini 表示指定运行的配置文件
-d uwsgi.log 表示uwsgi在后台运行,运行过程中产生的日志会存储在uwsgi.log中 -
配置nginx服务器
编辑文件:/etc/nginx/sites-available/default
修改为如下内容:server {
listen 80 default_server;server_name 59.110.240.237; location / { include uwsgi_params; uwsgi_pass 59.110.240.237:5000; uwsgi_read_timeout 100; }
}
将server中原有的,上述配置中不能存在的内容注释或删除掉
-
启动和停止nginx服务器
/etc/init.d/nginx start #启动 /etc/init.d/nginx stop #停止
本地项目的远程部署
3,创建虚拟环境
mkvirtualenv 虚拟环境名称
4,在虚拟环境中安装项目所需要的依赖
pip install -r 依赖文件(requirements.txt)
5,通过scp命令将整个项目上传到远程服务器
scp -r 本地目录 用户名@ip地址:远程目录
6,创建config.ini文件,配置和之前一致,但要加入一个虚拟环境的配置
pythonpath = /root/.virtualenvs/flask_test/lib/python2.7/site-packages #表示指定虚拟环境目录,使用虚拟环境中安装的扩展
7,运行uwsgi和之前操作一致,但要修改项目目录
uwsgi --ini config.ini
8,运行nginx和之前操作一致,但要修改项目目录
/etc/init.d/nginx start