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
目录
相关文章
|
应用服务中间件 Linux 网络安全
如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书
如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书
544 1
|
6月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
720 87
|
6月前
|
应用服务中间件 Linux 网络安全
技术指南:如何把docsify项目部署到基于CentOS系统的Nginx中。
总结 与其他部署方法相比,将docsify项目部署到基于CentOS系统的Nginx中比较简单。以上步骤应当帮助你在不花费太多时间的情况下,将你的项目顺利部署到Nginx中。迈出第一步,开始部署你的docsify项目吧!
304 14
|
11月前
|
负载均衡 Ubuntu 应用服务中间件
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
1121 13
|
中间件 应用服务中间件 nginx
Nginx+uWSGI+Django原理
Nginx+uWSGI+Django原理
|
应用服务中间件 Linux nginx
CentOS7安装Nginx
CentOS7安装Nginx
|
应用服务中间件 Linux 网络安全
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
这篇文章提供了在CentOS 7系统上通过源码安装Nginx的详细步骤,包括从官网下载Nginx源码包、上传至虚拟机、解压、删除压缩包、编译安装前的配置、安装PCRE库(因为Nginx使用PCRE库解析正则表达式)、安装zlib和OpenSSL库(用于支持HTTPS协议)、重新编译Nginx、安装后启动Nginx服务、关闭服务、修改默认端口、以及重启服务测试等步骤。文章还提供了相关命令和操作截图,帮助用户更好地理解和执行安装过程。
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
|
监控 应用服务中间件 nginx
nginx+uwsgi+flask
nginx+uwsgi+flask
|
应用服务中间件 Linux 测试技术
Nginx+uWSGI
【8月更文挑战第22天】
128 6
|
监控 应用服务中间件 nginx
详细解释容器以及虚拟机centos7.9容器化部署基础服务(容器化部署nginx)
容器是一种轻量级、可移植的软件打包和隔离技术,将应用程序及其依赖项打包,确保在任何环境中一致运行。容器共享主机操作系统内核,相比虚拟机更高效、轻量,具有快速启动和高资源利用率的特点。容器的关键技术包括命名空间(如 PID、NET 等)、控制组(cgroups)和联合文件系统(UnionFS)。使用容器可以提高开发和部署效率,简化管理,确保环境一致性。例如,在 CentOS 7.9 上部署 Nginx 时,可以通过 Docker 下载和运行 `nginx:1.20` 镜像,并通过端口映射使外部请求访问 Nginx 服务。此外,还可以将测试页面复制到容器中,进一步验证容器的功能。
368 0