从0开始在腾讯云上部署一个 flask 项目

  • 前言
  • 配置流程
    • 1 添加个人账户
    • 2 为个人账户添加sudo 权限
    • 3 添加科大的镜像源
    • 4 添加 python 和 pip
    • 5 安装 lnmpa 集成开发环境
    • 6 gunicorn安装
    • 7 flask 安装
    • 8 virtualenv 使用
    • 9 从仓库下载 flask 工程文件
    • 10 运行工程项目
    • 11 配置nginx 服务器脚本
    • 12 防火墙设置
    • 13 mysql 配置
  • 效果

1. 前言

今天腾讯云服务器终于批下来了, 喜大普奔啊!!!!因为我们需要使用它来搭建自己的网站, 所以赶紧配置一下
项目发布地址: http://115.159.144.61:8001/
个人网站:http://www.zhyh2010.cn

2. 配置流程

2.1 添加个人账户

参考资料: [linux用户管理(1)—-创建用户(adduser和useradd)和删除用户(userdel)]
主要指令:
ps: adduser 会默认创建用户的主文件夹

adduser zhyh2010 
passwd zhyh2010

(http://blog.csdn.net/beitiandijun/article/details/41678251)
从0开始在腾讯云上部署一个 flask 项目_第1张图片

2.2 为个人账户添加sudo 权限

参考资料: Centos 添加sudo用户(把普通用户设置为sudoer)

主体流程:

1.login in root user.
2.终端执行 visudo。这个命令是打开 /etc/sudoer文件。
3.在这个文件的末尾添加    username    ALL=(ALL)    ALL    然后 ZZ
4.login in your username.
5.sudo yum update.//for test

从0开始在腾讯云上部署一个 flask 项目_第2张图片

2.3 添加科大的镜像源

参考资料: Centos镜像使用帮助
从0开始在腾讯云上部署一个 flask 项目_第3张图片

2.4 添加 python 和 pip

参考资料: CentOS6.5上安装Python2.7和PIP
从0开始在腾讯云上部署一个 flask 项目_第4张图片

2.5 安装 lnmpa 集成开发环境

参考资料: LNMPA 一键安装
从0开始在腾讯云上部署一个 flask 项目_第5张图片

2.6 gunicorn安装

参考资料: Installation

pip install gunicorn

从0开始在腾讯云上部署一个 flask 项目_第6张图片

2.7 flask 安装

参考资料: Installation

pip install flask
pip install virtualenv

2.8 virtualenv 使用

参考资料: Installation

$ mkdir myproject
$ cd myproject
$ virtualenv venv
$ . venv/bin/activate

2.9 从仓库下载 flask 工程文件

  1. git 操作, 当然也可以直接用filezila 将工程传递上去
  2. 注意这里需要同时安装 工程相关的依赖插件 flask-login 之类的
    • 需要特别注意的是, 使用 pip install xxxsudo pip install xxx 的效果是不一样的, 由于我们最终使用sudo运行, 因此, 这里所有依赖的插件都应该使用 sudo pip 进行安装, 否则运行错误
      从0开始在腾讯云上部署一个 flask 项目_第7张图片
      从0开始在腾讯云上部署一个 flask 项目_第8张图片

2.10 运行工程项目

1.这里使用gunicorn 启动工程

gunicorn -D -w 3 -b 127.0.0.1:8000 application:app

2.这里说明一下:
- D 表示后台运行
- w 表示有3 个 工作线程(感觉有些类似 nginx 的 master-worker 模型)
- b 指定ip 和端口
- 这里采用本机访问, 主要是为了使用nginx 进行代理, 方便管理
- application 表存放 写着全局变量 app 的那个工程文件夹
- 在我们的这个工程中, 即包含 init.py 的那个文件
- app 为全局变量 (app = Flask(__name__)
- ps: 在下面图示文件夹中运行 gunicorn 指令
从0开始在腾讯云上部署一个 flask 项目_第9张图片
3.参考资料: Docs » Running Gunicorn
从0开始在腾讯云上部署一个 flask 项目_第10张图片

2.11 配置nginx 服务器脚本

  1. 安装完的nginx 在 /usr/local/nginx 目录下, 我们可以找到conf文件夹下的 nginx.conf 文件, 将其修改
    从0开始在腾讯云上部署一个 flask 项目_第11张图片

  2. 添加nginx 需要监听的端口信息

server {
    listen 8001;
    server_name instagram.zhyh2010.com;
    location /{
        proxy_pass http://127.0.0.1:8000;
    }
}

实际上, 我们将外部通过 8001 端口发送过来的请求, 代理给了 127.0.0.1:8000 也就是我们的 flask 项目

从0开始在腾讯云上部署一个 flask 项目_第12张图片

2.12 防火墙设置

  1. 参考资料:

    • 解决 RHEL 7/ CentOS 7/Fedora 出现Unit iptables.service failed to load
    • centOS防火墙中端口的开启和关闭
    • linux 中防火墙配置 iptables 命令参数的含义介绍
  2. 防火墙设置信息
    从0开始在腾讯云上部署一个 flask 项目_第13张图片
    可以看到 我们的8000, 8001 端口都是开放的, 但是 8000 端口上没有程序监听 (我们的程序只监听本机的 8000 端口)
    而 8001 端口是通过 nginx 监听的。

  3. 端口监听信息
    从0开始在腾讯云上部署一个 flask 项目_第14张图片

2.13 mysql 配置

  1. 我们突然想要扩展程序的功能, 为他添加一个爬虫程序, 这里设想的是, 爬虫程序将爬取到的数据存储到对应的数据库表中, 即可实现自动发图功能, 因而不在使用sqlite 数据库。
    从0开始在腾讯云上部署一个 flask 项目_第15张图片
  2. 安装 mysqldb

    yum install python-devel mysql-devel
    pip install python-mysql==1.2.3

    出现问题
    参考文章: http://stackoverflow.com/questions/5178292/pip-install-mysql-python-fails-with-environmenterror-mysql-config-not-found

  3. 从0开始在腾讯云上部署一个 flask 项目_第16张图片
    参考资料: http://www.linuxdiyf.com/viewarticle.php?id=75335
    不过应该采用

 /etc/init.d/mysql restart

3. 效果

项目发布地址: http://115.159.144.61:8001/
显示效果:
从0开始在腾讯云上部署一个 flask 项目_第17张图片

你可能感兴趣的:(linux,nginx,python,数据库,flask)