Django后台运行uwsgi配置

本文探讨了在配置Django应用通过UWSGI运行时遇到的域名解析失败和端口不通问题,分享了解决步骤和常见配置,包括Nginx整合与常见问题排查技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近搞了一下Django的uswgi配置,很大的时间浪费在了域名解析失败这里,很头疼。配置了几个小时最后发现端口不通了,域名解析不了,刚才换个域名一搞就搞通了。

配置运行

Terminal运行

uwsgi --socket 127.0.0.1:8001 --wsgi-file finance/wsgi.py --master --processes 2 --threads 1 --stats 127.0.0.1:9191

配置文件方式运行

基本就是把Terminal的参数搞成文件即可。

[uwsgi]
socket=0.0.0.0:8001
chdir=/home/root/DateListThingsAnalyse
wsgi-file=DateListThingsAnalyse/wsgi.py
processes=1
threads=1
uid = www
gid = www
enable-threads=true
master=true
pidfile=uwsgi.pid
deamonize=uwsgi.log
buffer-size=3276800
# 上面的配置文件名称为start.ini
nohup uwsgi start.ini >> run.log 2>&1 &
  • nginx 配置

其中的uwsgi_params可以用find / -name uwsgi_params来查找路径;

location / {
    # 其中的路径依据自己服务器来配置
    # 查找: find / -name uwsgi_params
    include /etc/nginx/conf/uwsgi_params;
    uwsgi_pass 127.0.0.1:8001;
}

location /static {
    # 路径依据自己的项目存放地址更改
    alias /home/root/DateListThingsAnalyse/static;
}

可能产生的问题

如需了解更多,请访问: https://www.emperinter.info/2022/02/10/uwsgi/

### 在 Django 项目中正确配置 uWSGI 为了使 uWSGI 能够与 Django 项目配合工作,需要完成几个关键步骤。以下是详细的配置方法: #### 1. ### 创建 WSGI 文件 Django 默认会生成一个 `wsgi.py` 文件作为入口点。此文件位于项目的根目录下,通常命名为 `<project_name>/wsgi.py`。确保该文件存在并已正确配置。 示例内容如下: ```python import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') application = get_wsgi_application() ``` 这是 uWSGI 加载应用的关键部分[^3]。 --- #### 2. ### 安装 uWSGI 并测试基本功能 在虚拟环境中安装 uWSGI: ```bash pip install uwsgi ``` 接着,可以通过简单的命令测试 uWSGI 是否能加载 Django 应用: ```bash uwsgi --http :8001 --chdir /path/to/your/project -w myproject.wsgi ``` 其中: - `/path/to/your/project` 是 Django 项目的根目录。 - `myproject.wsgi` 是指向 `wsgi.py` 的模块名。 如果一切正常,应该可以在浏览器中访问 `http://localhost:8001` 来查看 Django 页面[^3]。 --- #### 3. ### 编写 uWSGI 配置文件 推荐使用 `.ini` 格式的配置文件来管理复杂的部署需求。以下是一个典型的配置示例: ```ini [uwsgi] module = myproject.wsgi:application master = true processes = 4 threads = 2 socket = /tmp/uwsgi.sock chmod-socket = 660 vacuum = true die-on-term = true logto = /var/log/uwsgi/myproject.log ``` 解释各参数的作用: - `module`: 指向 WSGI 入口点。 - `master`: 开启主进程模式。 - `processes`: 设置并发的工作进程数。 - `threads`: 每个工作进程的线程数量。 - `socket`: 使用 Unix Socket 方式通信(推荐用于生产环境)。 - `chmod-socket`: 修改套接字权限以允许 Nginx 访问。 - `vacuum`: 自动清理临时文件。 - `die-on-term`: 接收到终止信号时优雅关闭。 - `logto`: 日志保存路径[^2]。 将上述内容保存为 `uwsgi.ini` 文件,并放置于项目根目录下。 --- #### 4. ### 测试 uWSGI 配置文件 通过以下命令启动 uWSGI: ```bash uwsgi --ini uwsgi.ini ``` 检查日志输出是否正常。如果有错误提示,可以根据具体信息调整配置。 --- #### 5. ### 配置 Nginx 反向代理 为了让外部请求能够到达 uWSGI,需配置 Nginx 作为反向代理。编辑 Nginx 配置文件(通常位于 `/etc/nginx/sites-available/default` 或类似的路径),添加以下内容: ```nginx server { listen 80; server_name yourdomain.com; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /path/to/your/project/; } location / { include uwsgi_params; uwsgi_pass unix:/tmp/uwsgi.sock; } } ``` 主要关注点: - `location /static/`: 映射静态文件路径。 - `include uwsgi_params`: 导入标准的 uWSGI 参数。 - `uwsgi_pass`: 指定 uWSGI 套接字地址。 完成后重启 Nginx: ```bash sudo systemctl restart nginx ``` --- #### 6. ### 系统服务化(可选) 为了实现自动启动和后台运行,可以将 uWSGI 注册为系统服务。创建一个新的 systemd 服务文件 `/etc/systemd/system/uwsgi.service`,内容如下: ```ini [Unit] Description=uWSGI instance to serve myproject After=network.target [Service] User=<username> Group=<groupname> WorkingDirectory=/path/to/your/project/ Environment="PATH=/path/to/venv/bin" ExecStart=/usr/local/bin/uwsgi --ini /path/to/your/project/uwsgi.ini [Install] WantedBy=multi-user.target ``` 启用并启动服务: ```bash sudo systemctl enable uwsgi sudo systemctl start uwsgi ``` --- ### 总结 以上步骤涵盖了从基础到高级的 uWSGI 配置过程,适用于大多数 Django 生产环境部署场景。每一步都经过精心设计,旨在提高稳定性和性能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值