LAMP-SERVER 与 flask结合

结合php与python二者的优点,哈哈。咱菜鸟就是有奇葩的想法

一 安装 lamp-server 与 phpmyamdin
1
2
3
$ sudo apt install lamp-server^ -y
$ sudo apt install phpmyadmin -y
$ sudo ln -s /usr/share/phpmyadmin /home/me/mywww
二 安装 flask, 并验证其
1
2
3
4
5
6
$ sudo apt install python3
$ python3 -m venv myflask3 #建立虚环境
$ cd myflask3
$ source bin/activate #进入虚环境
$ pip install flask
# 编写 app.py,并验证。此处不多说
三 安装 wsgi
1
2
3
$ sudo apt install libapache2-mod-wsgi 
# 安装后会自动在/etc/apache2/mods-available/目录下生成 wsgi.conf wsgi.loadg两个文件
# /usr/lib/apache2/moudules/在wsgi两个文件
四 试验 wsgi 是否可用
  1. 在/var/www/目录下编写test.wsgi文件,内容为
    1
    2
    3
    4
    5
    6
    def application(environ,start-response)
    status="200 OK"
    output="Hellow,apache2+wsgi"
    response_headers=[('content-type','text/plain'),('contnet-type',str(len(output)))]
    start_response(status,response_headers)
    return[output]
  2. 修改/etc/apache2/apache2.conf 在末尾加上
    WSGIScriptAlias /test /var/www/test.wsgi
  3. 重启动apache2
    1
    $ sudo service apache2 restart 
    浏览器输入 localhost/test,如果网页上能看到 Hello,apache2+wsgi,则说明成功
五 把第二步的app.py改名为app.wsgi,并编辑
1
2
3
4
5
6
7
8
9
10
11
#coding:utf8  必须加,否则网页无法显示中文

activate_this = "/home/me/myflask/bin/activate_this.py" #让wsgi知道启动脚本的环境
exfile(activate_this,dict(__file__=activate_this))

from flask import Flask

application=Flask(__name__) # wsgi的应用对象必须命名为application,所以不是app
@application.rout('/')
def index():
return( " <H2>你好,apache2+flask! </H2>" )
六,再次编辑/etc/apache2/apache2.conf,在末尾

WSGIScriptAlias app /home/me/myflask/app.wsgi
重启apache服务,浏览器输入 localhost/app ,发现失败了。
查看apache2的错误信息

1
2
$ tail -f /var/log/apache2/error.log # 发现是存取目录失败。于是再次 
$ sudo vim /etc/apache2/apache2.conf

在末尾添加
| <Directory /home/me/myflask>
| require all granted
| require host ip
| Allow from all
|
保存退出,重启apache, 然后浏览器,成功得到flash的信息。