在nginx上部署django项目--------Gunicorn+Django+nginx+mysql
一、安装nginx
以前的博客我有写,这里就不写了
http://www.cnblogs.com/wt11/p/6420442.html
二、安装mysql
我用的mysql5.7 64位的二进制包,官网下载安装编译好的二进制包,解压直接使用即可
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
安装二进制mysql5.7http://blog.csdn.net/wb96a1007/article/details/51559741
三、安装gunicorn
pip install gunicorn
在项目目录EdmureBlog下新建gunicorn的配置文件gunicorn.conf.py
[root@localhost EdmureBlog]# pwd
/EdmureBlog
[root@localhost EdmureBlog]# ls
backend db.sqlite3 gunicorn.conf.py manage.py nginx.conf repository static utils
blogss debug.log EdmureBlog gunicorn.error.log Monaco.ttf __pycache__ singleton.py templates web
gunicorn.conf.py
import multiprocessing bind = "127.0.0.1:8080" workers = 2 #workers是工作线程数,一般设置成:服务器CPU个数 + 1 errorlog = '/EdmureBlog/gunicorn.error.log' #accesslog = './gunicorn.access.log' #loglevel = 'debug' proc_name = 'gunicorn_blog_project'
四、在EdmureBlog下新建nginx的配置文件dj.conf ,将其链接到/app/nginx/conf/extra下 ln -s /EdmureBlog/dj.conf /app/nginx/conf/extra/dj.conf
/EdmureBlog/dj.conf
server { listen 8000; server_name www.wt.com; #访问django项目的网站 access_log /EdmureBlog/logss/nginx.access.log;#访问日志 error_log //EdmureBlog/logss//nginx.error.log;#错误日志 location / { proxy_pass http://127.0.0.1:8080;#动态请求交给gunicorn,8080端口就是gunicorn用的端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /robots.txt { alias /EdmureBlog/logss/static/robots.txt; } location /favicon.ico { alias /EdmureBlog/logss/static/img/favicon.ico; } location ~ ^/(media|static)/ { # 注意这个static,如果项目中静态文件的存放目录是 /项目/statics,那么这里也要写成media|statics,然后在html文件中引用css和js的时候,路径也要写成/statics/css/... root /EdmureBlog/; #静态文件存放路径 expires 30d; } # this prevents hidden files (beginning with a period) from being served location ~ /\. { access_log off; log_not_found off; deny all; } }
nginx主配置文件/app/nginx/conf/nginx.conf
user root; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; include extra/dj.conf; #django站点 include extra/www.conf; # 其他站点 include extra/bbs.conf; #其他站点 include extra/status.conf; default_type application/octet-stream; sendfile on; keepalive_timeout 65; }
五、同时,django项目的站点名(www.wt.com)加入到 settings.py的ALLOWED_HOSTS里。
ALLOWED_HOSTS = ['www.wt.com',]
如果要外部访问,则打开8000端口:
/sbin/iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
service iptatbles save
六、运行gunicorn:
[root@localhost EdmureBlog]# pwd
/EdmureBlog
[root@localhost EdmureBlog]# nohup /usr/local/bin/gunicorn EdmureBlog.wsgi:application -c /EdmureBlog/gunicorn.conf.py &
七、启动nginx
/app/nginx/sbin/nginx -t 检查配置语法是否正确
/app/nginx/sbin/nginx 启动nginx服务
八、关闭防火墙,没有dns的话,Windows修改hosts文件,浏览器访问www.wt.com即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性