发布网友 发布时间:2022-04-20 01:13
共1个回答
热心网友 时间:2022-04-09 06:37
一、介绍
最近开发要用一个测试环境,是这样的Nginx+uwsgi+flask 的一个结构。下面是一些记录,在Centos 系统上使用Flask 架构部署一个简单的Python应用。然后使用Nginx作为前端反向代理,设置uWSGI应用网关处理web应用程序。
二、条件
1) 环境要求
Server OS:最小化安装 Centos 6.8
Nginx :反向代理
Python2.6~2.7:开发语言
Flask/uWSGI:框架
Pip:python包管理工具
iptables&selinux:开放用到的端口,关闭selinux。
2) 安装必备的开发工具以及环境
更新系统:
[root@hcloud ~]# yum update -y更新完成后,记得重启系统,然后安装工具:
[root@hcloud ~]# yum install wget vim telnet python-devel zlib-devel openssl-devel bzip-devel -y3) 安装python 包管理工具-pip
[root@hcloud ~]# wget strap.pypa.io/get-pip.py && python get-pip.py或者参考此网站
4) 安装uWSGI与Flask
下载软件
[root@hcloud ~]# mkdir soft如果下载该软件比较慢,可以在/etc/reslov.conf dns中添加一个8.8.8.8 ,很快的哦。
安装软件(开发要求固定版本,如果不介意版本的话,可以直接使用pip install packge 即可安装,相当于linux中的yum)
[root@hcloud soft]# tar -xf Flask-0.10.1.tar.gz5) 创建一个测试应用
创建一个Web应用程序存放的文件夹
[root@hcloud ~]# mkdir -pv /usr/local/webtest创建一个python 脚本,内容如下:
[root@hcloud webtest]# cat myproject.py创建WSGI入口点文件,名字为:wsgi.py,内容如下
[root@hcloud webtest]# cat wsgi.py6) 配置uWSGI服务器网关服务运行方式,运行端口等。
上述两个python脚本文件创建完成后,uwsgi命令启动,运行在8000端口上,指定协议http,运行时会出现一些警告,暂时可以忽略,是因为当前是root账户运行的uwsgi,后面从配置文件启动时会配置普通用户nginx即可。
[root@hcloud webtest]# uwsgi --socket 0.0.0.0:8000 --protocol=http -w wsgi可以打开浏览器访问测试一下:http://192.168.30.58:8000
7) 创建uWSGI配置文件
以.ini格式为uwsgi启动配置文件(还有xml,json,等多种格式),这样就不用在命令行输入一大堆命令了,用uwsgi命令启动,后面可以创建uwsgi启动脚本,加入到系统服务
在项目的目录中,创建uwsgi.ini:
[root@hcloud webtest]# cat uwsgi.ini保存并退出。配置文件参考
大致的解释下:
uid 、gid :以哪个用户、组启动服务
socket:监听的ip及端口
master: 启动主进程
workes:服务器启动的进程数
reload-mercy:平滑的重启
pidfile :启动时的pid 文件。
daemonize :启动日志
mole :web应用的入口模块名称
enable-threads : 启用线程模式
8) 创建开机系统启动脚本文件,名字为uwsgid。
uwsgid
创建完成后,赋予执行权限,加入开机启动
[root@hcloud ~]# chmod +x /etc/init.d/uwsgid检查下
[root@hcloud ~]# chkconfig --list uwsgid启动uwsgid
[root@hcloud ~]# service uwsgid start验证下监听端口(注:这里我们使用127.0.0.1 作监听,是为了后期在使用时,对外只有nginx可以访问web应用):
[root@hcloud ~]# netstat -aultnp | grep :8000tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 8945/uwsgi9) 安装Nginx配置代理
先下载安装6.6的epel源
[root@hcloud ~]# wget oject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm[root@hcloud ~]# rpm -ivh epel-release-6-8.noarch.rpm安装nginx
[root@hcloud ~]# yum install nginx -y安装完成后,修改nginx默认配置文件default.conf,修改之前可以先备份下源文件噢。完整内容如下:
[root@hcloud ~]# cat /etc/nginx/conf.d/default.conf以上内容代理了uwsgi的端口,客户端通过访问nginx的80端口,然后nginx在将请求转发到后台flask应用的8000端口上。
启动nginx
[root@hcloud ~]# service nginx start在浏览器内测试访问一下nginx:http://192.168.30.58
每个人都应是守望者,守望我们的心智,我们的理想,以防它在生活中不知不觉地坠落、被操控和被自己遗忘。。。