欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

centos Python3.6.5 flask+uwsgi+nginx环境搭建

程序员文章站 2022-07-12 17:14:45
...

一、升级Python(默认为2.6.6)

1、开发工具包及相关组件的安装及升级

yum -y update
yum groupinstall "Development tools" -y
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel -y
yum install xz*
yum install gcc

2、下载Python3.6.5

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

3、解压,并进入解压后的文件夹

tar xf Python-3.6.5.tar.xz
cd Python-3.6.5.tar.xz

4、设置安装目录

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

5、编译及安装

make
make install

6、备份原有的python命令执行文件

mv /usr/bin/python /usr/bin/python2.6

备份完成后执行

python2.6 -V

结果应为Python 2.6.6,表示备份成功

7、为Python 3.6.5创建软连接

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

执行前请先确认/usr/bin/python文件不存在,否则无法创建软连接

8、查看pytho版本

python -V

结果应为python 3.6.5

9、修改yum配置文件
由于yum基于python2.6运行,而当前的python版本为3.6,所以需要修改

vim /usr/bin/yum

将#!/usr/bin/python 中的python修改为 python2.6

二、安装VirtualEnv

1、查看pip版本

pip -V

若不是python 3.6版本的pip,则为其创建软连接

rm -rf /usr/bin/pip 删除原pip软连接
ln -s /usr/local/python3/bin/pip /usr/bin/pip

查看pip版本

pip -V

发现已经变为3.6版本

2、pip升级

pip install --upgrade pip

3、安装VirtualEnv

pip install virtualenv

4、创建虚拟目录的语法为

virtualenv 目录名

例如我的项目目录为/root/flask_server

cd /root/flask_server 
virtualenv venv

注:若执行”virtualenv 目录名” 时提示command not found,请按照以下步骤操作

find / -name virtualenv 找到virtualenv的安装位置

我这边的结果为“/usr/local/python3/bin/virtualenv”
所以创建虚拟环境目录的方式为

/usr/local/python3/bin/virtualenv venv

5、**和退出虚拟环境

source venv/bin/activate **环境
deactivate  退出环境

注:**环境需要用source命令,否则会报permission denied
6、通过清单文件安装flask及其他依赖,我的清单文件如下(按照你的依赖库来列)
requirement.txt

Flask==1.0.2
Flask-HTTPAuth==3.2.3
Flask-Migrate==2.1.1
Flask-Moment==0.6.0
Flask-SQLAlchemy==2.3.2
Flask-Script==2.0.6
Jinja2==2.10
Mako==1.0.7
MarkupSafe==1.0
SQLAlchemy==1.2.8
Werkzeug==0.14.1
alembic==0.9.9
click==6.7
itsdangerous==0.24
mysql-connector==2.1.6
python-dateutil==2.7.3
python-editor==1.0.3
setuptools==39.0.1
six==1.11.0

**虚拟环境后执行

pip install -r requirements.txt

记住,一定要**虚拟环境后再安装,否则会安装到全局中

7、测试flask
项目根目录新建test.py文件

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

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

在虚拟环境下运行test.py

python test.py

访问locallhost:5000 将返回
centos Python3.6.5 flask+uwsgi+nginx环境搭建

注:若是云服务器环境,请将app.run()改成

 app.run(host='0.0.0.0',host=端口号,debug=True)

并将服务器对应的端口号开放,随后就可以用“公网ip:端口号”的形式访问

三、安装nginx和uwsgi

1、安装nginx

yum install nginx
yum install uwsgi

2、测试nginx
直接在浏览器中输入 locallhost:80
云服务器则输入 公网IP:80
看到nginx的欢迎界面就表示安装成功
注:云服务器请确认开放了80端口
3、为uwsgi配置nginx
编辑配置文件

vim /etc/nginx/conf.d/default.conf

改成如下内容

server {
    listen       80;    #监听的端口号
    #listen       [::]:80 default_server;
        server_name  47.101.49.82    #公网IP
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
        include      uwsgi_params;
        uwsgi_pass   127.0.0.1:5000;  # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
        uwsgi_param UWSGI_PYHOME /root/flask_server/venv; # 指向虚拟环境目录
        uwsgi_param UWSGI_CHDIR  /root/flask_server; # 指向网站根目录
        uwsgi_param UWSGI_SCRIPT manage:app; # 指定启动程序
    }

}

重启nginx

service nginx restart

4、配置uwsgi,我是通过配置文件来完成的,在项目根目录下创建配置文件config.ini
内容为

[uwsgi]
plugins = python #指定python插件

master = true
home = venv #指定虚拟环境目录
chdir = /root/flask_server  #指向项目根目录
# python 启动程序文件,我这边
wsgi-file = test.py

# python 程序内用以启动的 application 变量名
callable = app
#uwsgi启动时所使用的地址与端口,即test.py启动时的地址,
#如果是使用app.run()启动,即为127.0.0.1:5000
socket = 127.0.0.1:5000

# 处理器数
processes = 4

# 线程数
threads = 2

启动uwsgi

uwsgi config.ini

此时,本地服务器在浏览器中输入 locallhost:80
云服务器则输入 公网ip:80
浏览器应该输出
centos Python3.6.5 flask+uwsgi+nginx环境搭建

若服务器提示 “Internal Server Error”
且控制台提示
centos Python3.6.5 flask+uwsgi+nginx环境搭建
可能是由于当前使用的uwsgi的python版本不对,需要指定用python3中的uwsgi启动

/usr/local/python3/bin/uwsgi config.ini

到此,环境搭建完毕,搭建途中踩了很多坑,翻了无数网页,故此整理了一下流程。