django在linux上部署

目录结构

image.png

nginx配置文件 nginx.conf


#user  nobody;
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       /usr/local/nginx/conf/mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

	server {
		listen 80;
		server_name localhost;

		root /home/abel/code/website;

		location /static {
			alias /home/abel/code/website/static;
		}
		location / {
			include /usr/local/nginx/conf/uwsgi_params;
			uwsgi_pass 127.0.0.1:8011;
		}

	}
}

uwsgi配置文件 uwsgi.ini (django)

[uwsgi]
# 使用nginx反向代理时使用
;socket = 127.0.0.1:8011
# 直接作为web服务器使用 记得host一定要是0.0.0.0
http = 0.0.0.0:8010
# 配置工程目录
chdir = /tmp/pycharm_project_368
# 配置项目的wsgi目录 注意是相对于工程目录 wsgi.py 文件时django框架自动生成的
wsgi-file = testdjango/wsgi.py
# 配置虚拟环境
;home = /root/.venvs/py38
# 配置进程线程的信息
processes = 1
threads = 1

uwsgi配置文件 uwsgi.ini (flask)


[uwsgi]
#uwsgi启动时,所使用的地址和端口(这个是http协议的)
http = 0.0.0.0:5001
# 虚拟环境路径
virtualenv = /root/.venvs/py38
#指向网站目录
chdir = /tmp/pycharm_project_697
#python 启动程序文件
wsgi-file = myflask.py
#python 程序内用以启动的application 变量名
callable = app
#处理器数
processes = 4
#线程数
threads = 2

注意:flask程序中 app.run(host=‘0.0.0.0’) host 一定要写 要不然远程访问不了

uwsgi 相关命令

进入虚拟环境 安装uwsgi

pip install uwsgi

测试uwsgi,创建test.py文件:

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]
uwsgi --http :8001 --wsgi-file test.py

在这里插入图片描述

  • 停止

uwsgi --stop /home/abel/code/website/uwsgi.pid

  • 开启 (一定要先进入虚拟环境)

uwsgi --ini /home/abel/code/website/uwsgi.ini

nginx 相关命令

  • 关闭

sudo nginx -s quit

  • 重新加载配置文件

sudo nginx -s reload

  • 测试配置文件

sudo nginx -t -c /home/abel/code/website/nginx.conf

  • 启动

sudo nginx -c /home/abel/code/website/nginx.conf

  • 查看服务是否活着

ps -ef | grep nginx

### Django 项目部署Linux 服务器的最佳实践 #### 准备工作 为了成功将 Django 项目部署Linux 服务器,需先准备好云服务器并确保能够通过 SSH 工具(如 Xshell)连接该服务器[^4]。 #### 配置环境 在服务器上安装必要的软件包和依赖项。对于 Python 应用程序来说,推荐使用虚拟环境来隔离项目的依赖关系。创建一个新的虚拟环境可以防止不同版本库之间的冲突: ```bash python3 -m venv myvenv source myvenv/bin/activate pip install django mysqlclient gunicorn ``` 这里不仅包含了 Django 的安装,还加入了 MySQL 数据库驱动 `mysqlclient` 和应用服务器 Gunicorn 的安装,以支持更稳定的生产环境运行[^1]。 #### 设置 Web Server 虽然可以直接利用 Django 自带的开发服务器进行测试性的发布,但对于正式上线的应用而言,建议采用 Nginx 或 Apache 结合 Gunicorn 来提供服务。Gunicorn 是一个 WSGI HTTP 服务器,专为 Python web应用程序设计;而Nginx 则作为反向代理处理静态资源请求以及负载均衡等功能[^2]。 启动 Gunicorn 并将其设置为后台进程执行可保证即使关闭终端窗口后也能继续正常运作: ```bash nohup gunicorn --workers=3 --bind=unix:/tmp/guni.sock projectname.wsgi & ``` 此命令中的参数指定了三个工作线程数(`--workers`)及绑定地址(`--bind`),其中 `/tmp/guni.sock` 表示 Unix 域套接字路径用于与 Nginx 进行通信。 #### 构建 Nginx 反向代理配置文件 编辑位于 `/etc/nginx/sites-available/projectname.conf` 中的内容如下所示: ```nginx server { listen 80; server_name yourdomain.com; location /static/ { alias /path/to/static/; } location /media/ { alias /path/to/media/; } location / { proxy_pass http://unix:/tmp/guni.sock; include proxy_params; } } ``` 上述配置定义了一个监听于端口 80 上的服务实例,并针对不同的 URL 路径设置了相应的响应策略。特别是当访问根目录下的页面时,则会转发给由 Gunicorn 提供的服务接口处理。 #### 启动与维护 完成以上步骤之后,重启 Nginx 让新的配置生效即可让网站对外公开访问。另外需要注意的是,在实际操作过程中可能会遇到权限不足等问题,这时可以通过调整文件夹读写属性等方式加以解决[^3]。 最后提醒一点,尽管有简便快速的方式可以让初学者迅速搭建起自己的在线平台,但从长远来看掌握完整的流程有助于更好地理解和优化整个系统的性能表现。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值