nginx+uwsgi部署实践的踩坑总结(二)

本文是nginx+uwsgi部署实践的第二部分,详细记录了配置过程中遇到的问题及解决方法,包括:nginx报错分析、Python ImportError、no python application found错误、IP地址分配错误和uwsgi内存管理问题。通过这些经验分享,帮助读者避免或解决类似问题。

承接上一篇 nginx+uwsgi部署实践的踩坑总结(一)
这篇中将继续罗列我在配置nginx+uwsgi中踩过的坑。
如果在这篇中没有找到的问题可以去前一篇中查看。

1.一段非常常见的nginx报错

在启动nginx后,查看日志,会看到这么一段报错

[error] 1198#1198: *224 connect() to unix:///home/myproject/myproject.sock failed (111: Connection refused) while connecting to upstream, client: 37.102.213.142, server: 37.102.213.142, request: "GET /common/page_contents/ HTTP/1.0", upstream: "uwsgi://unix:///home/myproject/myproject.sock:", host: "37.102.213.142:8000", referrer: "http://37.102.213.142/main"

我在google上直接搜索这段报错,得到了各种各样的原因分析和解决方案。
从报错信息来看,错因是nginx 向uwsgi转发请求,然后这个请求被uwsgi拒绝。
基本上,错误的原因不在于nginx, 而在于uwsgi服务器内部发生了错误,导致转发的请求被拒绝。
所以,应该去检查uwsgi的日志。
检查uwsgi的日志,发现是python有了一段报错,就这样发现了另一个坑,这个坑如下。

2. python ImportError : No module named ‘
<think>嗯,用户这次的需求很明确,聚焦在宝塔面板的三个具体问题上:网址打不开的原因排查、学习资源获取和Python项目部署教程。从引用内容看,用户之前可能尝试过部署但遇到障碍,特别是引用[2][3]提到Python环境配置和端口问题,引用[4]提到服务器配置经验,说明用户有一定实操基础但需要系统指导。 关于面板打不开的问题,需要分层排查。最可能是服务器防火墙阻拦,CentOS的firewalld和Ubuntu的ufw都需放行8888端口(引用[1]安装脚本默认端口)。其次是安全组配置,公有云平台的安全组规则容易被忽略,这点在引用[4]的nacos配置部分也有印证——云服务器需要显式配置公网访问规则。另外用户可能没注意到宝塔安装完成后的随机安全入口地址,初次安装会生成带随机字符的URL(如https://ip:8888/abcd123),这个细节在引用[1]的安装脚本输出里有提示但容易被忽略。 学习资源方面,宝塔官方文档其实很完善(bt.cn),但用户可能需要更直观的教程。YouTube上的实操视频和GitHub的开源项目示例(关键词bt-panel django)可能更符合动手型学习者的需求。考虑到用户部署的是Python项目,补充推荐Python虚拟环境管理的专项教程会很有必要,因为引用[2][3]都提到虚拟环境依赖问题。 部署Python项目的核心痛点其实是环境隔离和进程管理。教程需要强调:1)在宝塔"Python项目管理器"里创建独立虚拟环境(避免引用[2]的依赖冲突);2)用gunicorn配置启动文件时务必指定worker数(引用[3]的langchain案例启动失败常因资源不足);3)Nginx反向代理需要禁用默认的80端口占用(这点引用未提及但实际常)。对于Django项目,额外要提醒关闭DEBUG模式并配置ALLOWED_HOSTS(引用[4]的springboot配置思路类似)。 用户可能还隐含更深层的需求:如何验证部署是否成功。应该在教程末尾补充简单的测试方法,例如在views.py写个ping接口,用curl测试服务可达性。另外引用[4]提到的日志查看技巧(项目日志vs系统日志)也值得展开,因为报错信息可能分散在不同位置。 </think>以下是针对宝塔Linux面板使用问题的详细解答,结合引用内容和实际经验整理: --- ### **一、宝塔面板网址打不开的常见原因** 1. **防火墙未放行端口** - 宝塔默认使用 **8888端口**(HTTP)和 **888端口**(HTTPS),需在服务器防火墙和安全组中放行: ```bash # 开放端口命令示例(CentOS) firewall-cmd --zone=public --add-port=8888/tcp --permanent firewall-cmd --reload ``` - **云服务器需额外操作**:在阿里云/腾讯云控制台的**安全组规则**中添加8888端口入站规则 [^1][^3]。 2. **面板服务未启动** 执行以下命令检查状态: ```bash /etc/init.d/bt status # 查看面板状态 /etc/init.d/bt restart # 重启面板 bt 1 # 启动面板(若未运行) ``` 3. **端口冲突或被占用** 检查是否有其他程序(如Nginx/Apache)占用8888端口: ```bash netstat -tunlp | grep 8888 ``` 若冲突,需修改面板端口: ```bash bt 8 # 进入菜单修改面板端口 ``` 4. **安全入口限制** 安装完成后命令行显示的**随机安全入口路径**(如`/abcd123`)需完整拼接到URL: `https://服务器IP:8888/abcd123` - 若忘记路径,执行 `bt 14` 查看。 5. **SSL证书问题** 若强制使用HTTPS但证书无效,浏览器会拦截。可尝试: ```bash rm -f /www/server/panel/data/ssl.pl && bt restart # 关闭面板SSL ``` --- ### **、宝塔面板学习资源** 1. **官方文档** [宝塔面板教程中心](https://www.bt.cn/bbs/thread-19376-1-1.html) - 含部署、故障排查等。 2. **视频教程** - [B站:宝塔面板Python项目部署教程](https://www.bilibili.com/video/BV1X44y1u7yH) - YouTube搜索 "宝塔部署Django/Flask"。 3. **社区支持** - 宝塔论坛:`https://www.bt.cn/bbs` - Stack Overflow:标签 `#bt-panel` --- ### **三、Python项目部署教程(以Django为例)** #### **步骤1:安装环境** 1. 在宝塔面板 **软件商店** 安装: - **Python项目管理器**(推荐) - **Nginx**(反向代理) - **MySQL/PostgreSQL**(数据库) #### **步骤2:创建Python项目** 1. 打开 **Python项目管理器** → **添加项目**: - 选择Python版本(需提前在"版本管理"安装) - 项目路径:上传代码或通过Git克隆 - 框架:选择 **Django** - 端口:自定义(如8000,需放行防火墙)[^2][^3] 2. 配置虚拟环境: ```bash # 在项目目录生成依赖文件 pip freeze > requirements.txt ``` - 项目管理器会自动安装依赖 [^2]。 #### **步骤3:配置数据库** 1. 在宝塔面板创建MySQL数据库,记录用户名、密码。 2. 修改Django的 `settings.py`: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '数据库名', 'USER': '用户名', 'PASSWORD': '密码', 'HOST': '127.0.0.1', 'PORT': '3306', } } ``` #### **步骤4:启动项目** 1. 在 **Python项目管理器** 中: - 启动方式:选择 **uWSGI** 或 **Gunicorn** - 填写WSGI路径:`项目名/wsgi.py` - 点击 **启动** [^3] 2. **关键排查点**: - 启动失败时:点击 **日志** → 查看错误信息(常见问题:依赖缺失/端口冲突)。 - 确保虚拟环境激活:项目管理器会自动处理 [^2]。 #### **步骤5:Nginx反向代理** 1. 在宝塔添加站点,域名填写服务器IP或域名。 2. 修改站点配置,添加反向代理: ```nginx location / { proxy_pass http://127.0.0.1:8000; # 指向Python项目端口 proxy_set_header Host $host; } ``` --- ### **常见问题解决** - **依赖安装失败**: 手动进入项目虚拟环境安装: ```bash source /www/wwwroot/项目名/venv/bin/activate pip install -r requirements.txt ``` - **静态文件加载失败**: 在Django的 `settings.py` 中配置: ```python STATIC_ROOT = '/www/wwwroot/项目名/static' # 执行 collectstatic 后生效 ``` 并在Nginx中添加静态路径映射。 - **端口不通**: 检查:1)云服务器安全组 2)系统防火墙 3)Nginx配置是否冲突 [^3][^4]。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值