美文网首页
FLASK + Apache + mod_wsgi + ubun

FLASK + Apache + mod_wsgi + ubun

作者: 美妙的旋律A | 来源:发表于2018-05-07 16:08 被阅读0次

    用时2天终于将FLASK开发的网站部署成功,之所以采取此方案是因为想同时运行一个apache+php的网站,python用的是UBUNTU18.04自带的3.6.5

    1. 安装apache

    sudo apt install apache2 
    sudo apt install apache2-dev
    

    2. 安装pip3

    UBUNTU18.04自带python3但是不带pip

    sudo apt install python3-pip
    

    3. 将mod_wsgi安装到python中

    pip3 install mod_wsgi
    

    注意:必须安装apache2和apache2-dev后才能安装成功。

    4. 在apache中启用安装到python中的mod_wsgi

    执行mod_wsgi-express module-config输出如下所示的文字,将其复制

    LoadModule wsgi_module "/your/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"
    WSGIPythonHome "/usr"
    

    /etc/apache2/mods-available/新建配置文件

    nano /etc/apache2/mods-available/wsgi.load
    

    将刚才复制的内容粘贴进来,保存并退出

    在终端中执行如下命令,启用wsgi模块

    sudo a2enmod wsgi
    systemctl restart apache2
    

    5 配置python虚拟环境

    python虚拟环境的选择有很多,我用的是pyvenv,由于ubuntu18.04默认不安装,所以首先

    sudo apt install python3-venv
    

    然后执行

    pyvenv path/to/venv/
    

    配置python虚拟环境

    6 编写.wsgi文件

    在flask项目目录下新建一个.wsgi文件,里面包含wsgi启动网站所需的applicaiton对象,文件内容如下

        import sys
        sys.path.insert(0, '/path/to/the/application')
         from yourapplication import app as application
    

    7 编写apache虚拟站点配置文件

    /etc/apache2/site-available新建配置文件

    nano /etc/apache2/site-available/yoursite.conf
    

    编辑文件

    <VirtualHost *:80> 
        ServerName example.com
        # python-home指定python虚拟目录的位置 
        WSGIDaemonProcess yourapplication python-home=/path/to/env/
        WSGIScriptAlias / /path/to/yourapplication/yourapplication.wsgi
            <Directory /path/to/yourapplication> 
            WSGIProcessGroup yourapplication 
            WSGIApplicationGroup %{GLOBAL} 
            Require all granted
        </Directory>
    </VirtualHost>
    

    8 致此配置完毕,最后一点小问题

    因为数据库是sqlite,配置完毕后出现了attempt to write a readonly database错误,经过搜索发现是文件读写权限的问题,可以将数据库文件及所在文件夹的所有者更改www-data来解决

    sudo chown www-data your/database/
    sudo chown www-data your/database/database
    

    9 参考文章

    1. flask文档 http://flask.pocoo.org/docs/1.0/deploying/mod_wsgi/
    2. mod_wsgi文档 http://modwsgi.readthedocs.io/en/develop/project-status.html
    3. mod_wsgi pypi页面 https://pypi.org/project/mod_wsgi/
    4. 问题解决:SQLite:DatabaseError : attempt to write a readonly databas http://ju.outofmemory.cn/entry/147685

    相关文章

      网友评论

          本文标题:FLASK + Apache + mod_wsgi + ubun

          本文链接:https://www.haomeiwen.com/subject/vjcaixtx.html