Django项目上线与部署方法全攻略:从零到一篇文章搞定

2024-12-06 0 924

项目开发完成后,为了让用户能够使用,我们必须将程序安置在服务器上。这个过程表面看似容易,但实际上充满了众多需要注意的细节。一旦出现差错,之前所有的努力都可能白费,这是每个开发者都必须面对的难题。

项目部署前准备

项目初期,我们必须对项目资料进行归类打包。这并非轻率之举,须得如同呵护即将交付的精密设备一般,格外谨慎。首先,将待部署的项目文件压缩成.zip格式。这个压缩包宛如藏有珍宝的包裹,等待被送往目标地点。稍有疏忽,文件在压缩过程中损坏或遗失,后续部署工作便难以继续。随后,我们需要将此压缩包上传至服务器。比如,将安装在Windows系统中的项目压缩包,利用FTP协议传输至机房内的Linux服务器,这好比一场接力赛,将任务从本地顺利传递到服务器端。

Mac与linux系统
    scp 本地文件路径 root@服务器ip:存储位置
    例:scp D:xxx/xxx.zip root@127.0.0.0:/home/spider/ask
windows:
    ftp工具上传:filezilla
        下载地址:https://filezilla-project.org/download.php?type=client
    xshell工具:
        进入到服务器预定存储系统目录下,将.zip包在本地直接拖拽到服务器中
		cmder 工具:
    		使用方式与Mac和linux系统一样

压缩包上传至服务器后,项目还不能立即启动。首先,我们必须安装相应的解释器,这相当于为项目搭建运行的平台。不同项目可能对解释器环境有不同需求。推荐使用专门的工具来搭建和设置虚拟环境。比如,在Python项目中,可以用virtualenv来构建一个独立的虚拟环境。每个操作系统都有其特性,若不采用独立的虚拟环境,很可能会因为模块或解释器版本的不匹配而引发各种问题。

环境搭建与依赖安装

如果在本地开发,可以在项目根目录下执行   pip freeze >  requirements.txt  生成环境依赖包
将环境依赖包上传到服务器中
将python解释器切换到相应的虚拟环境
执行 pip install -r requirements.txt 来安装所有需要的依赖模块

项目的运作需要依赖相应的模块和框架支持,就好比汽车行驶不能缺少轮胎。我们需在服务器上部署这些关键组件。以Django项目为例,可能还需安装Django框架及pymysql等数据库连接库。安装过程中可能会遇到问题,比如因网络问题导致某些模块下载缓慢或失败。这时,更换下载源或许能解决问题,就如同为汽车更换一条道路以达成目标。

yum install unzip # 安装解压工具
unzip 压缩包

确认依赖安装无误后,我们需对先前上传的.zip文件进行解压。这一步骤虽简单,却至关重要,就好比揭开一个藏有秘密的宝盒。若此时密码错误或提取路径不对,将会影响项目的进展。

文件调整与部署细则

ALLOWED_HOSTS = ['*',]  # 定义hosts地址
DEBUG = False  # 关闭DEBUG模式
STATIC_ROOT = 'static'  # 配置项目静态文件存储路径

文件解压完毕,接下来得修改.py文件。这些文件里含有不少设置,比如数据库连接的设置,得根据服务器实际情况来调整。比如,得把本地测试的数据库地址换成服务器上的真实地址,这就像搬家后得重新布置家里的电器。

python manage.py collectstatic

项目里的应用程序和整体静态资料得放到恰当的地方。这就像整理房间,得把各种东西分别放进各自的抽屉。一个Django项目可能包含好几个应用程序,每个程序的静态资料得有固定的存放路径,确保项目运行时能准确找到这些资源。

Nginx安装与配置

yum install nginx # 安装nginx

接下来,我们将部署Nginx以实现反向代理功能。Nginx是一款功能强大的HTTP及反向代理服务器。在多数Linux系统中,安装它通常依赖特定的软件包管理器,比如在Ubuntu系统中,可以通过apt-get命令完成。Nginx的配置文件位于/etc/nginx/nginx.conf,它相当于Nginx运作的指导图。在这里,我们可以设定端口监听、域名转发等关键信息。一旦配置出现失误,用户可能无法访问项目,甚至可能引发网络问题。

配置完Nginx的文件后,我们就可以启动Nginx了。这一步就好比打开了一扇门,将用户和项目连接起来。

user root;  # 当前用户
worker_processes 8;  # 开启的进程数【一般和CPU核数一致】
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
    worker_connections  1024;  # 监听多少个socket变化
}
http {
    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  /var/log/nginx/access.log  main;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   60;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    upstream django {
        server 127.0.0.1:8001; 
    }
    server {
        listen      80;
        charset     utf-8;
        # max upload size
        client_max_body_size 100M;
        location /static {
            alias  /server/ask/static; # static的路径
        }
        location / {  # 其他url处理
            uwsgi_pass  django;  # 与上面upstream django关联
            include     uwsgi_params;
        }
    }
}

uwsgi相关操作

接下来,我们要部署uwsgi,并用它来替代wsgi来运行项目。uwsgi是一款高效、能自动修复且深受开发者和系统管理员喜爱的应用程序容器服务器。安装完成后,还需进行必要的配置。这就像对新工具进行调试,以确保它能与项目完美匹配。

systemctl start nginx

负载均衡或集群配置

进行负载均衡或构建集群时,需对uwsgi进行额外设置。这包括调整uwsgi配置文件以实现负载均衡,可能还需修改原有uwsgi文件,如同调整复杂机械的内部结构。此外,还需执行诸如复制并修改.ini文件名等操作,之后启动项目以启用集群或负载均衡功能。整个过程犹如组建一个团队,每个成员各司其职,共同协作确保项目高效运作。

pip3 install uwsgi

各位读者,在项目实施阶段,大家最忧虑的是哪个环节可能出错?不妨在评论区留言交流,同时也欢迎点赞并转发本篇文章。

# 简单运行方式:
vim uwsgi_ask.ini
# 添加一下内容
[uwsgi]
http = 0.0.0.0:8001  # 所有人都可以访问
# scoket = 0.0.0.0:8001 # 仅能本机访问
chdir = /server/ask/
wsgi-file = ask/wsgi.py
process = 4  # 开启进程数
static-map = /static=/server/ask/static
# 启动
uwsgi --ini /server/ask/uwsgi_ask.ini

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 行业资讯 Django项目上线与部署方法全攻略:从零到一篇文章搞定 https://www.7claw.com/2800001.html

七爪网源码交易平台

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务