从零开始在腾讯云上部署一个 flask 项目
- 前言
- 配置流程
- 1 添加个人账户
- 2 为个人账户添加sudo 权限
- 3 添加科大的镜像源
- 4 添加 python 和 pip
- 5 安装 lnmpa 集成开发环境
- 6 gunicorn安装
- 7 flask 安装
- 8 virtualenv 使用
- 9 从仓库下载 flask 工程文件
- 10 运行工程项目
- 11 配置nginx 服务器脚本
- 12 防火墙设置
- 效果
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)
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
2.3 添加科大的镜像源
参考资料: Centos镜像使用帮助
2.4 添加 python 和 pip
参考资料: CentOS6.5上安装Python2.7和PIP
2.5 安装 lnmpa 集成开发环境
参考资料: LNMPA 一键安装
2.6 gunicorn安装
参考资料: Installation
pip install gunicorn
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 工程文件
- git 操作, 当然也可以直接用filezila 将工程传递上去
- 注意这里需要同时安装 工程相关的依赖插件 flask-login 之类的
- 需要特别注意的是, 使用
pip install xxx
和sudo pip install xxx
的效果是不一样的, 由于我们最终使用sudo运行, 因此, 这里所有依赖的插件都应该使用sudo pip
进行安装, 否则运行错误
- 需要特别注意的是, 使用
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 指令
3.参考资料: Docs » Running Gunicorn
2.11 配置nginx 服务器脚本
安装完的nginx 在
/usr/local/nginx
目录下, 我们可以找到conf
文件夹下的nginx.conf
文件, 将其修改添加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 项目
2.12 防火墙设置
-
参考资料:
- 解决 RHEL 7/ CentOS 7/Fedora 出现Unit iptables.service failed to load
- centOS防火墙中端口的开启和关闭
- linux 中防火墙配置 iptables 命令参数的含义介绍
防火墙设置信息
可以看到 我们的8000, 8001 端口都是开放的, 但是 8000 端口上没有程序监听 (我们的程序只监听本机的 8000 端口)
而 8001 端口是通过 nginx 监听的。端口监听信息
3. 效果
项目发布地址: http://115.159.144.61:8001/
显示效果: