前言
前段时间用docker在搬瓦工的vps上挂起了flask 和 mongodb。docker的方便性是不容置疑的,但docker好像并不能支持flask_apscheduler上cron操作(如果能的话,请留言指正)。 因为我需要用到cron的定时任务来爬虫,然后传入mongodb,最后不得不放弃docker,直接使用virtualenv来操作。与此同时萌生了一个想法,能不能flask结合宝塔来实现flask和wordpress等网站并存呢? 答案是,可以的!!
步骤
- 在一个干净的VPS上先安装宝塔(默认安装python2.7)
- 然后安装virtualenv (python3版本,因为我写的flask就是用python3的,如果是python2就直接安装可以了)
- 将flask目录上传到vps上,激活virtualenv ,然后运行flask
- 登陆宝塔设置ngixx
▌安装宝塔 (以ubuntu为例)
首先用ssh远程登陆vps,输入以下命令更新vps上的packages,防止后续安装宝塔出错:
sudo apt-get dist-upgrade # 安装更新最新的packages
登陆宝塔的官网,并根据提示安装宝塔, Ubuntu/Deepin安装命令:
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh
▌安装virtualenv 和 gunicorn
安装完成之后,我们可以用pip安装virtualenv,直接在终端输入以下命令 :
sudo apt-get install python-virtualenv
创建python3的虚拟环境,进入要创建虚拟环境的py3env目录下,这里默认你是放在root下:
root@ubuntu:# virtualenv -p /usr/bin/python3 py3env
创建完可以进入py3env/bin/下查看:
root@ubuntu:~/py3env/bin# ls
activate activate.fish easy_install pip pip3.5 python3 python-config
activate.csh activate_this.py easy_install-3.5 pip3 python python3.5 wheel
接下来是激活虚拟环境:
#因为我们已经进入了bin的文件夹了,所以直接输入source activate就可以了
root@ubuntu:~/py3env/bin# source activate
#要不然是这样激活的:
root@ubuntu: source py3env/bin/activate
退出虚拟环境的命令是(这个暂时不需要用到):
root@ubuntu: deactivate
接下来是按照gunicorn:
gunicorn是python wsgi服务器,适用于unix系统的,从ruby的unicorn移植来的,是pre-fork的工作模式。兼容很多web框架,部署方便,资源耗费少,速度较好。因为gunicorn是pre-fork的,也就是有一个中心主管进程管理一系列工作进程,主管进程不关心客户请求,所有的请求、相应都是工作进程来处理的。
pip3 install gunicorn
#其他运行flask所需要的模块
pip3 install flask
pip3 install flask_apscheduler
...
使用gunicorn运行flask:
执行命令gunicorn -w 3 -b 127.0.0.1:5000 xxx:app
注意:
xxx为文件名
app为flask里面的app函数
例如:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
▌配置Nginx
正常来说,用gunicorn启动后在本机浏览器访问http://ip:5000 是可以运行的。但因为我们还没有用宝塔配置nginx,所以暂时是访问不了。
在宝塔上配置nginx是一件非常简单是事情。
在配置文件的选择中
填写:
server
{
listen 80;
server_name example.com; # 这是HOST机器的外部域名,用地址也行
location / {
proxy_pass http://127.0.0.1:5000; # 这里是指向 gunicorn host 的服务地址
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
▌运行
最后输入网址:www.example.com 就可以看到运行中的flask。
▌按照wordpress、typecho
既然flask已经安装了,那么安装wordpres就不是什么问题了。直接在宝塔的界面上创建网站、数据库等,然后按照宝塔的提示安装就可以了。
参考:
https://blog.csdn.net/qingche456/article/details/65465760
https://www.jianshu.com/p/1c4d4f3ee52a