在CentOS上运行Flask

由于Heroku取消了免费计划,我将使用Flask和PostgreSQL创建的应用迁移到了Sakura的VPS上。以下是迁移过程的备忘录。

版本

CentOS 7 是操作系统的版本。Python 3.7.9 是编程语言的版本。mod_wsgi 4.5.6 是一个模块的版本。

安装Apache。

yum install httpd

启动Apache

systemctl start httpd

设置使得Apache在服务器启动时自动启动。

systemctl enable httpd

请设置防火墙以允许HTTP通信和HTTPS通信。

firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=https --permanent

重新启动防火墙

firewall-cmd --reload

安装用于Python的必要软件包

yum groupinstall "Development Tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
yum install httpd-devel python-devel wget

安装Python3系列

CentOS默认安装了Python 2系列,但要使用mod_wsgi需要安装Python 3系列。

cd /usr/local/src
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
tar zxvf Python-3.7.9.tgz
cd Python-3.7.9
./configure --enable-shared
make && make altinstall
ln -s /usr/local/bin/python3.7 /usr/bin/python3
ln -s /usr/local/lib/libpython3.7m.so.1.0 /lib64/
python3.7 --version //Pythonのバージョンが3.7.9になればOK
ln -s /usr/local/bin/pip3.5 /usr/bin/pip3.7
pip3.7 --version //pipのバージョンを確認

安装mod_wsgi。

cd /usr/local/src
wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.5.6.tar.gz
tar zxvf 4.5.6.tar.gz
cd mod_wsgi-4.5.6
./configure --with-apxs=/bin/apxs --with-python=/usr/local/bin/python3.7
make && make install
chmod 755 /etc/httpd/modules/mod_wsgi.so 

安装Flask

pip3.7 install flask

应用程序的设置

目录结构看起来是这样的

    • /var/www/html/

 

    • – app.py

 

    – application.wsgi

app.py文件的设置

import sys

from flask import Flask,request

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello, World"

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

应用程序.wsgi文件的配置

import sys
sys.path.insert(0,"/var/www/html")
from app import app as application

(附注)如果在Blueprint中分割应用程序,那么就会有application.wsgi文件。

import sys
sys.path.insert(0,"/var/www/html")
from app import create_app
application = create_app()

增加flask.conf

请创建/etc/httpd/conf.d/flask.conf,并在其中写入以下内容。

LoadModule wsgi_module ./modules/mod_wsgi.so
<VirtualHost *:80>
    WSGIScriptAlias / /var/www/html/application.wsgi
    <Directory /var/www/html/>
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

重新启动apache。

service httpd restart

安装PostgreSQL。

yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install -y postgresql-devel

安装Python库

pip3.7 install sqlalchemy
pip3.7 install flask_login
pip3.7 install openpyxl
pip3.7 install psycopg2

PostgreSQL和应用程序的协作详见本文。

广告
将在 10 秒后关闭
bannerAds