0%

CentOS 7 + Python Flask + MySQL + Nginx 配置

不是很常用,算是给自己留个记录吧
部分资料参考自网络

0.切换到 root 用户

1
sudo su

1.安装并启动 Nginx

1
2
3
yum install nginx
systemctl start nginx.service # 开启 nginx 服务
systemctl enable nginx.service # 跟随系统启动

此时使用 localhost 应该会出现 Welcome to nginx 的欢迎页面了

2.安装并启动 MySQL
(这里我用的是 MariaDB,就是 MySQL 换个壳,没多大区别…)

1
2
3
yum install mariadb-server mariadb
systemctl start mariadb # 开启 mysql 服务
systemctl enable mariadb # 跟随系统启动

3.初始化 MySQL 安全策略

1
mysql_secure_installation

会提示输入 root 密码,默认为空,直接回车即可
然后就问是否重新设置 root 密码,当然是要重新设置的啦。设置完后还有几个问题都输入 y 同意就行了

4.安装并配置 Python 和 pip

1
yum install python34 # 安装 3.4.x 版本

由于 CentOS 自带了 Python 2.7 的版本,所以某些情况下,直接替换掉原始的版本可能出现未知问题,比如 yum 没法用之类的,就需要手动去 /usr/bin/python 修改链接关系,使其正确链接到 Python2,可用 ls -l 命令检查,这里我上一张正确的连接图

后面执行命令的时候我将会用 Python3 来执行,python3 xxx

5.安装 pip,Gunicorn 和 flask

1
2
3
yum install python34-pip # 安装 pip
pip3 install flask
pip3 install gunicorn

6.配置 Flask
编写文件 /home/web/api/api.py

1
2
3
4
5
6
7
8
9
10
11
12
from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
return 'Hello World!'


if __name__ == '__main__':
app.run()

7.使用 Gunicorn 启动项目

1
2
3
4
5
6
7
8
9
10
11
12
13
gunicorn -D -w 3 -b 127.0.0.1:8000 api:app

注意要在项目根目录下执行这条命令

-D 后台运行
-w 启动 3 个工作线程
-b 指定 IP 和端口号

最后的那个 api:app
api 就是那个 Python 文件的名称(不包括后缀/模块名)
app 就是 Flask 实例的名称

可参见上文 api.py 的代码

可以使用 ps -aux 命令查看系统运行的进程
同样,你也可以使用 kill [PID] 来关闭 Gunicorn 的进程

8.配置 Nginx
主要就是配置 nginx 目录,这里我以 api 为例

1
vim /etc/nginx/conf.d/api.conf
1
2
3
4
5
6
7
8
9
10
server {
listen 80;
server_name api.iacn.me; # 外部域名

location / {
proxy_pass http://127.0.0.1:8000; # 反向代理 Gunicorn 本地的服务地址
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

保存好然后重启 Nginx

1
systemctl restart nginx

9.可以查看一下端口信息
snipaste20170405_150243.png

10.已经可以从外部访问了
snipaste20170405_150322.png