腾讯云Centos7 从零开始安装Python3 Flask框架,并配置uWSGI+nginx

web开发

浏览数:364

2019-2-21

系统版本Centos7.4,安装python3.7。

1、关闭防火墙

firewall-cmd --state #查看防火墙状态
systemctl stop firewalld.service  #停止firewall
systemctl disable firewalld.service  #禁止firewall开机启动

2、安装基础包

缺少gcc,没法make,所以安装gcc

yum -y install gcc

安装ssl

yum -y install openssl-devel

安装zlib

yum install zlib 
yum install zlib-devel

安装 libffi

yum -y install libffi-devel

安装nginx

yum -y install nginx

nginx命令

systemctl start nginx #开启nginx服务
systemctl stop nginx #停止nginx服务
systemctl restart nginx #重启nginx服务

开启nginx后,浏览器中输入服务器ip地址,能够打开,如图

3、安装python3.7.0

下载官网的python3.7.0

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz   

解压缩文件

tar -xvf Python-3.7.0.tar.xz 
cd Python-3.7.0

将python安装到/usr/local/python3

./configure --prefix=/usr/local/python3  

编译并安装

make && make install   

建立软连接,让系统识别python3时调用python3.7.0版本

ln -s /usr/local/python3/bin/python3 /usr/bin/python3  

建立软连接,让系统识别pip3

ln -s /usr/local/python3/bin/pip3.7 /usr/local/bin/pip3 

更新升级pip3

pip3 install --upgrade pip

备注:如果要修改python的默认版本,方法如下:

备份原来的的软连接

mv /usr/bin/python /usr/bin/python.bak

创建新的软连接

ln -s /usr/local/python3/bin/python3 /usr/bin/python

查看python默认版本

python --version

此时python默认版本已经换位python3.7.0了

使用yum安装时其要用到python2才能执行,否则会导致yum不能正常使用。我们现在把python默认改为了python3,所以yum命令无法适应。为了让yum命令正常使用,所以要把yum命令改为python2

vi /usr/bin/yum

把#! /usr/bin/python修改为#! /usr/bin/python2

vi /usr/libexec/urlgrabber-ext-down

把#! /usr/bin/python 修改为#! /usr/bin/python2

到此,修改pyhon默认版本完成。

4、安装virtualenv

pip3 install virtualenv

查看状态

virtualenv -h

创建一个名为pytest的文件夹来存放项目

mkdir -p /root/app/test
cd /root/app/test

为这个项目创建虚拟环境

virtualenv env

开启虚拟环境

source env/bin/activate

退出env虚拟环境

deactivate

备注1:如果virtualenv命令系统无法识别不能用,输入下面命令

查看 virtualenv 安装目录

find / -name virtualenv

将/virtualenv.py软连接到bin文件夹内

ln -s /usr/local/python3/lib/python3.7/site-packages/virtualenv.py /usr//bin/virtualenv 

赋予777权限

chmod 777 /usr//bin/virtualenv

备注2:为了方便以后对虚拟环境的管理,可以安装virtualenvwrapper,也可不安装

安装

pip3 install virtualenvwrapper
vi ~/.bashrc

加入:

export WORKON_HOME=/root/app  #创建虚拟环境时默认存放目录 
source /usr/local/python3/bin/virtualenvwrapper.sh

保存退出

source ~/.bashrc

virtualenvwrapper常用命令

创建一个名称为py3env的python3版本的虚拟环境

mkvirtualenv -p python3 py3env 

退出当前虚拟环境

deactivate                       

使用某个虚拟环境

workon [虚拟环境名称]

删除某个虚拟环境

rmvirtualenv [虚拟环境名称] 

列出所有虚拟环境

lsvirtualenv              

5、进入项目virtualenv环境中安装flask

进入虚拟环境

cd /root/app/test
source env/bin/activate 

安装flask

pip3 install flask

6、上传第一个项目文档app.py

app.py内容为:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "hello world!!"

if __name__ == '__main__':
    app.run()

上传文件至/root/app/pytest中

7、virtualenv环境中安装、配置uwsgi

在虚拟环境中安装uwsgi

pip3 install uwsgi

在电脑中创建一个名为uwsgi.ini的文件,这是uwsgi的配置文件,文件内容为:

[uwsgi]
# uwsgi 启动时所使用的地址与端口
socket = 127.0.0.1:8001

#虚拟环境目录 
home = /root/app/test/env

#项目目录
pythonpath = /root/app/test

#指向网站根目录
chdir = /root/app/test

#python启动程序文件
wsgi-file = app.py

#python程序内用于启动的application变量名
callable = app

#处理器数
processes = 4 

#线程数
threads = 2 

#状态监测地址
stats = 127.0.0.1:9191 

将uwsgi.ini上传到/root/app/test中

然后启动uwsgi.ini

uwsgi uwsgi.ini

备注:如果系统无法识别uwsgi命令,建立软连接

pip3 install uwsgi ln -s /usr/local/python3/bin/uwsgi /usr/local/bin/uwsgi

8、修改nginx配置

nginx的配置文件nginx.conf默认在/etc/nginx中

修改server_name后的的值为云服务的公网IP

server_name  xxx.xxx.xxx.xxx; 

在server中添加:

access_log  /root/app/test/logs/access.log;
error_log  /root/app/test/logs/error.log;

在location中添加:

include     uwsgi_params;
uwsgi_pass      127.0.0.1:8001;
uwsgi_param UWSGI_PYHOME /root/app/test/env;
uwsgi_param UWSGI_CHDIR  /root/app/test;
uwsgi_param UWSGI_SCRIPT app:app;

nginx.conf修改(绿色)和添加部分(红色)如下图:

修改后保存并退出,重启nginx服务

systemctl restart nginx.service

到此配置完毕,在浏览器中输入公网IP地址,可以看到

hello world!!

如果有问题,可以根据提示进行查找排查问题。