CentOs6搭建nginx+uwsgi+flask

简介: CentOs6搭建nginx+uwsgi+flask

一、安装pyton3.6.5

执行 shell脚本 安装

📎insertPy3.sh

测试是否成功

测试 ssl模块是否正常加入,没报错就是正常

测试pip3是否成功


二、创建虚拟环境

创建一个项目文件夹,然后创建一个虚拟环境。创建完成后项目文件夹中会有一个 venv 文件夹:

mkdir /usr/local/project
cd /usr/local/project
python3 -m venv venv

进入虚拟环境

. venv/bin/activate


三、安装flask、uwsgi

pip3 install Flask -i https://pypi.tuna.tsinghua.edu.cn/simple

pip3 install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple


创建 helloworld.py 启动Flask web应用

fromflaskimportFlask, jsonify, requestapp=Flask(__name__)
@app.route("/",methods=["GET"])
defindexFun():
return"index"@app.route("/helloWorld")
defhelloWorld():
print('请求方式----》', request.method)
args=request.args.get("name") or"args没有"print('', args)
form=request.form.get('test') or'form没有'print('', form)
returnjsonify(success=True, args=args, form=form)
if__name__=='__main__':
app.run(host='0.0.0.0', port=8987, debug=True)


创建uwsgi.ini

[uwsgi]
http=:8987
socket=127.0.0.1:8001
wsgi-file=/usr/local/project/helloword.py
callable=app
processes=4
threads=2
stats=127.0.0.1:9191
vacuum=true


安装 nginx

yum install nginx


修改nginx.conf文件 代理uwsgi请求

upstream flask{
server 127.0.0.1:8001;
    }
server {
listen       80;
server_name  localhost;
#charset koi8-r;#access_log  logs/host.access.log  main;location / {
include uwsgi_params;
uwsgi_pass flask;
        }
  }


nginx启动

/usr/local/nginx/sbin/nginx

uwsgi启动

uwsgi uwsgi.ini  /  后台启动 uwsgi -d --ini uwsgi.ini

退出虚拟环境

deactivate


请求

http://localhost  

http://localhost/helloWorld?name=haha


后记

pip3 安装组件 最好换源 -i https://pypi.tuna.tsinghua.edu.cn/simple 国内源快很多,还有尽量都使用同一个源安装,以防出现不兼容问题。


新补充

使用 supervisor 管理uwsgi服务,以及后续遇到的问题解决方案:

https://blog.csdn.net/qq_35304570/article/details/80304482

此链接中 supervisor 部分


安装supervisor,新增配置文件到etc下

pip3 install supervisor
echo_supervisord_conf > supervisor.conf  # 生成 supervisor 默认配置文件vim supervisor.conf            # 修改 supervisor 配置文件,添加 uwsgi 进程管理mv supervisor.conf /etc/


修改配置文件增加uwsgi子进程配置

vim /etc/supervisor.conf
[program:uwsgi]
redirect_stderr=true
command=/usr/local/project/venv/bin/uwsgi /usr/local/project/uwsgi.ini  ;supervisor启动命令
directory=/usr/local/project                         ; 项目的文件夹路径
startsecs=0                                ; 启动时间
stopwaitsecs=0                              ; 终止等待时间
autostart=true                              ; 是否自动启动
autorestart=true                             ; 是否自动重启
stdout_logfile=/usr/local/project/uwsgi/logs/uwsgi.log              ; log 日志
stderr_logfile=/usr/local/project/uwsgi/logs/uwsgi.err              ; 错误日志


打开这几项注释

[inet_http_server]         ; inet (TCP) server disabled by default
port=*:9001        ; ip_address:port specifier, *:port for all iface
username=user              ; default is no username (open server)
password=123               ; default is no password (open server)


新建uwsgi日志文件

mkdir /usr/local/project/uwsgi/logs
touch /usr/local/project/uwsgi/logs/uwsgi.log 
touch /usr/local/project/uwsgi/logs/uwsgi.err


启动supervisor 和 uwsgi子服务

supervisord -c /etc/supervisor.conf
supervisorctl -c /etc/supervisor.conf status 
supervisorctl -c /etc/supervisor.conf start uwsgi


启动过程中可能遇到的错误:

unix:///var/run/supervisor.sock no such file

https://blog.csdn.net/weixin_41762173/article/details/88901970

解决办法:

修改/etc/supervisor.conf中路径

[unix_http_server]
file=/var/run/supervisor.sock   ; the path to the socket file
...
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket
touch /var/run/supervisor.sock
chmod777 /var/run/supervisor.sock
supervisorctl reload


运行supervisorct 报如下错误:

supervisorctl unix:///var/run/supervisor.sock refused connection

解决办法:

unlink /var/run/supervisor.sock
unlink /tmp/supervisor.sock


如果报如下错:

Unlinking stale socket /var/run/supervisor.sock

解决办法:

unlink /var/run/supervisor.sock
目录
相关文章
|
2月前
|
应用服务中间件 Linux 网络安全
如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书
如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书
171 1
|
16天前
|
中间件 应用服务中间件 nginx
Nginx+uWSGI+Django原理
Nginx+uWSGI+Django原理
|
16天前
|
应用服务中间件 Linux nginx
CentOS7安装Nginx
CentOS7安装Nginx
|
20天前
|
监控 应用服务中间件 nginx
详细解释容器以及虚拟机centos7.9容器化部署基础服务(容器化部署nginx)
容器是一种轻量级、可移植的软件打包和隔离技术,将应用程序及其依赖项打包,确保在任何环境中一致运行。容器共享主机操作系统内核,相比虚拟机更高效、轻量,具有快速启动和高资源利用率的特点。容器的关键技术包括命名空间(如 PID、NET 等)、控制组(cgroups)和联合文件系统(UnionFS)。使用容器可以提高开发和部署效率,简化管理,确保环境一致性。例如,在 CentOS 7.9 上部署 Nginx 时,可以通过 Docker 下载和运行 `nginx:1.20` 镜像,并通过端口映射使外部请求访问 Nginx 服务。此外,还可以将测试页面复制到容器中,进一步验证容器的功能。
|
2月前
|
应用服务中间件 Linux 网络安全
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
这篇文章提供了在CentOS 7系统上通过源码安装Nginx的详细步骤,包括从官网下载Nginx源码包、上传至虚拟机、解压、删除压缩包、编译安装前的配置、安装PCRE库(因为Nginx使用PCRE库解析正则表达式)、安装zlib和OpenSSL库(用于支持HTTPS协议)、重新编译Nginx、安装后启动Nginx服务、关闭服务、修改默认端口、以及重启服务测试等步骤。文章还提供了相关命令和操作截图,帮助用户更好地理解和执行安装过程。
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
|
1月前
|
监控 应用服务中间件 nginx
nginx+uwsgi+flask
nginx+uwsgi+flask
|
2月前
|
应用服务中间件 Linux 测试技术
Nginx+uWSGI
【8月更文挑战第22天】
37 6
|
2月前
|
应用服务中间件 Linux nginx
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
这篇文章介绍了在CentOS系统上使用Nginx源码包进行安装和配置的详细步骤,包括源码包的获取、解压、配置、编译、安装、启动验证以及注意事项。
259 0
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
|
2月前
|
网络协议 Unix 应用服务中间件
Nginx七层(应用层)反向代理:UWSGI代理uwsgi_pass篇
Nginx七层(应用层)反向代理:UWSGI代理uwsgi_pass篇
128 1
|
2月前
|
物联网 应用服务中间件 Linux
CentOS7.9 Nginx+EMQX集群组建MQTTS平台
通过以上步骤,您已成功搭建了一个基于CentOS 7.9、Nginx和EMQX的MQTTS平台。这个平台既能保证数据传输的安全性,又能利用Nginx的负载均衡能力和EMQX的高性能、高并发处理能力,实现稳定高效的消息服务。在部署和配置过程中,务必注意证书、域名以及EMQX配置的正确性,确保系统安全和稳定运行。此外,定期更新软件和系统,以及监控系统性能,也是保证MQTTS平台长期稳定运行的重要环节。
85 4