为 django 项目配置 uwsgi + nginx 步骤如下
1. 准备 uWSGI 配置文件
您需要为 uWSGI 创建一个配置文件,这个文件告诉 uWSGI 如何与您的 Django 项目交互。创建一个名为 project_name_uwsgi.ini
的文件,并将其放在您的 Django 项目目录下(在本例中为 /home/ubuntu/project_name
)。
[uwsgi]
# Django 项目的目录
chdir = /home/ubuntu/project_name
# Django 项目的 wsgi 文件
module = project_name.wsgi:application
# 虚拟环境的路径(可以通过 conda info 查看,我的是/home/ubuntu/anaconda3)
home = /path/to/your/virtualenv
# 使用 socket 而不是 HTTP,以便与 Nginx 通信
socket = /home/ubuntu/project_name/project_name.sock
# 设置 socket 文件的权限,确保 Nginx 可以访问
chmod-socket = 666
# 清理退出时的文件和环境
vacuum = true
# 使用主进程
master = true
# 启动的 uWSGI 工作进程数
processes = 4
# 使用线程
threads = 2
# 日志文件的位置
daemonize = /home/ubuntu/project_name/uwsgi.log
2. 配置 Nginx
接下来,您需要配置 Nginx 以将请求转发给 uWSGI。首先,创建一个 Nginx 配置文件,例如 project_name_nginx.conf
,并将其放在 Nginx 的 sites-available
目录中(通常是 /etc/nginx/sites-available
)。
sudo vim /etc/nginx/sites-available/project_name_nginx.conf
server {
listen 80;
server_name your_domain_or_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ubuntu/project_name;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/home/ubuntu/project_name/project_name.sock;
}
}
将 your_domain_or_IP
替换为域名或服务器 IP 地址。并确保 root
指向 Django 静态文件目录。如果不需要配置静态文件,则仅保留
server {
listen 80;
server_name your_domain_or_IP;
location / {
include uwsgi_params;
uwsgi_pass unix:/home/ubuntu/project_name/project_name.sock;
}
}
然后,创建一个符号链接以启用该配置:
sudo ln -s /etc/nginx/sites-available/project_name_nginx.conf /etc/nginx/sites-enabled/
4. 启动 uWSGI
使用您创建的 uWSGI 配置文件启动 uWSGI:
uwsgi --ini project_uwsgi.ini
后台运行则运行这个:
nohup uwsgi --ini geminiapi_uwsgi.ini &
5. 重启 Nginx
最后,重启 Nginx 以应用更改:
sudo systemctl restart nginx
可能遇到的问题
502 bad gateway
查看日志如果提示权限不足(Permission denied)
则运行这个:
sudo chmod 777 /home/ubuntu/project/project.sock
sudo systemctl restart nginx
常用指令:
# 查看 nginx 日志
sudo tail /var/log/nginx/error.log
# 查看 uwsgi 是否运行
ps aux | grep uwsgi