将本地Django项目部署到服务器上(Ubuntu20.04)

本文介绍了如何将Django项目部署到Ubuntu服务器上,包括购买阿里云服务器、配置SSH连接、安装Python、Django、Nginx和uWSGI,以及设置开机自启和Nginx配置,旨在帮助初学者解决部署过程中遇到的问题。

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

最近因为项目的需求开始正在搭建一个个人网站。在本地完成了项目后端的内容后需要部署到服务器上以供用户访问。因为后端使用的是Django框架,就在网上找了很多有关将Django项目部署到网站上的教程。由于本人在网络这块属于小白,原理了解甚少,在一边参照各种教程一边实操的过程中碰了不少壁,总算是成功实现…因此写这篇博客来记录自己配置的过程,也希望能对正在学习Django的小伙伴提供一些帮助~
本文主要是参考了极客点儿的博客进行配置,是我在网上众多教程中找到的最清晰的一篇,为原博主疯狂点赞!!!

一、云服务器

1.1 购买云服务器

首先搭建一个网站需要一个远程服务器来运行项目。阿里云有个飞天免费试用计划,可以免费试用1核2G的云服务器ECS,试用期为3个月,个人用为仅用来学习网站搭建足矣。

在这里插入图片描述

试用(或购买)服务器后选择操作系统等就可以开始使用。这里不建议选Windows系统。本人选择的是Ubuntu20.04。不同版本的Ubuntu在配置上也有一些区别,这里建议选择版本旧一些的如16.04,后面会详细说明。

1.2 连接云服务器

在阿里云控制台实例处可以看到自己购买的服务器,一般第一次连接是无法使用WorkBench或SSH登录的,会提示服务器禁用了密码登录的方式。这是因为在服务器SSH配置文件 /etc/ssh/sshd_config中的 PasswordAuthentication 被设置为 no 。解决方法是通过VNC连接服务器后将上述项修改为 yes 。阿里云官方文档中也提供了对该问题完整的解决步骤,这里就不再赘述。

在这里插入图片描述

如果提示 访问公网IP地址需要在实例安全组白名单中增加Workbench的服务器白名单 ,则在控制台的 安全组 -> 配置规则 -> 入方向 中增加22端口。

在这里插入图片描述

22端口是远程连接端口,因此要通过SSH方式登录服务器肯定需要这个端口开放。这里可以顺便把80(http端口),3306(MySQL)也设置开放。

二、部署项目环境

连接好服务器后,我们需要开始在服务器部署项目需要的环境,安装一些必要的包。以下是本项目中使用到工具和包。

Python 3.8.1
Django 4.2
Nginx 1.18.0 
uWSGI 2.0.21

这里解释一下各个工具的用途。Django项目部署到服务器的方式有很多种,本项目是基于Django+Nginx+uWSGI的方式。这种方式的工作原理是将 Nginx 作为服务器最前端来接收 web 的所有请求,统一管理请求。Nginx 把所有静态请求自己来处理,将所有非静态请求通过 uWSGI 传递给 Django,由 Django 来进行处理,从而完成一次 web 请求。

2.1 安装Python


打开终端,输入以下指令下载Python 3.8.1安装包,如果是其他版本则要按官方下载链接修改,不要选择3.5以下的!!!

wget https://www.python.org/ftp/python/3.8.1/Python-3.8.3.tgz

然后新建一个安装目录:

sudo mkdir -p /usr/local/python3

解压安装包:

tar -zxvf Python-3.8.1.tgz

进入解压后的目录:

cd Python-3.8.1

配置安装的目录:

./configure --prefix=/usr/local/python3

编译Python 3.8.1的代码,并安装:

sudo make install

由于Linux中自带Python2.7,因此需要在终端建立软连接将python3指向Python3.8。
建立软连接运行的名称:

sudo ln -s /usr/local/python3/bin/python3.8 /usr/local/bin/python38
sudo ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3

完成以上过程后在命令行输入python3后有回显>>>就表示安装成功,进入Python环境了。

在这里插入图片描述

2.2 安装Django

这个比较简单,直接pip3 install就可以了。

pip3 install Django==4.0

2.3 安装Nginx

使用apt之前可以先更新一下可用软件包列表和已安装的包

sudo apt update
sudo apt upgrade

然后install

sudo apt install nginx

安装完之后可以在本地输入你的服务器公网IP查看是否显示Nginx欢迎页,显示的话则证明安装成功。

2.3 安装uWSGI

执行pip install安装uWSGI

pip3 install uwsgi

安装完后可以测试一下,先创建一个test.py

#test.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"] # python3
    #return ["Hello World"] # python2

然后在test.py所在目录下运行:

uwsgi --http :8000 --wsgi-file test.py

运行结果跟下图一样就是正常的啦。
在这里插入图片描述

三、配置uWSGI与Django,Nginx之间的通信

3.1 上传本地Django项目到服务器

首先需要将本地的项目上传到阿里云服务器上,这里提供两种方式作为参考:一种是将自己的Django项目上传到GitHub后再在服务器上git clone下来;另一种是通过ftp软件将本地项目传输给服务器。题主原本使用第一种方式但后来发现git仓库不能上传太大的文件(T~T),故改用第二种。
这里我使用的是FileZilla,连接后上传项目文件即可。

在这里插入图片描述

3.2 配置uWSGI

上传项目文件后,cd 进入项目文件夹的根目录创建uwsgi.ini文件。

cd myproject #我的Django项目文件
vi uwsgi.ini

配置uwsgi.ini内容如下:

[uwsgi]

socket          = :8888 
chdir           = /root/myroject
module          = myproject.wsgi
master          = true
processes       = 4
vacuum          = true

socket=:8888 表示指定项目的端口号为8888,chdir为指定的项目目录。
这一步在网上很多教程中,wsgi.py文件的位置都跟我不一样,不知道是不是因为Django版本的问题。我的项目文件中,wsgi.py文件是在同名子目录myproject下的,所以module处应为myproject.wsgi。这里show一下我的项目文件结构,有一样问题的配置文件可以参考这么写。

myproject/
├── manage.py
├── myproject
│   ├── asgi.py
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-310.pyc
│   │   └── ...
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── uwsgi.ini
└── ...

之后就是运行uwsgi --ini uwsgi.ini读取uwsgi.ini启动项目。正常运行结果如下:
在这里插入图片描述

如果报以下错误则需要检查以下该端口是否已被占用,可以执行uwsgi --stop uwsgi.pidpkill -f uwsgi -9关闭进程。
在这里插入图片描述
然后我们可以将uWSGI配置为开机自启。网上一些教程是在/etc/rc.local下添加开机命令,但Ubuntu在20.04版本已经取消了rc.local文件,所以这里提供另一种方法设置开机自启动

首先设置rc-local.service

sudo vi /etc/systemd/system/rc-local.service

内容如下:

[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=forking
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 StandardOutput=tty
 RemainAfterExit=yes
 SysVStartPriority=99

[Install]
 WantedBy=multi-user.target

然后激活rc-local.service

sudo systemctl enable rc-local.service

创建rc.local文件

sudo vi /etc/rc.local

内容如下:

#!/bin/sh -e
# 
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# 开机启动的命令
uwsgi --ini /root/myproject/uwsgi.ini & # 开机自动启动项目,并在后台运行

exit 0

保存退出后,给予脚本执行权限。

sudo chmod +x /etc/rc.local

这样开机自启动就设置好了。

3.3 配置Nginx

首先需要查看一下nginx配置文件,Ubuntu20.04的nginx配置文件为/etc/nginx/sites-available下的default,有些版本的Linux系统下配置文件为/etc/nginx/nginx.conf
修改配置文件运行:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak #这里先对原来的配置文件进行备份
sudo vi /etc/nginx/sites-available/default

在文件后面添加这段:

server {

    listen          80;
    server_name     xx.xxx.xxx.xx #有域名填域名,没有就写自己的公网IP
    charset         UTF-8;
    access_log      /var/log/nginx/myweb_access.log;
    error_log       /var/log/nginx/myweb_error.log;

    client_max_body_size 800M;

    location / {

        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8888; #这里的端口号要与uwsgi.ini中填写的一样
        uwsgi_read_timeout 2;
    }

    location /static {

        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias myproject/static/;
    }
}

这里建议直接复制粘贴进去修改,因为这个配置文件对格式检查比较严格。
配置完后重新启动Nginx:

sudo /etc/init.d/nginx restart

现在在自己的主机或其他设备上的浏览器输入服务器的IP:端口号,就能正常访问自己的项目了。

总结

这两天在完成项目部署的过程中确实是碰了很多壁,加上原先对网络通信这块确实不是很了解,查阅了各种资料后对那些配置文件的内容等还是一头雾水,不懂得背后的原理,报错也不知道从何解决。好在最后还是一点一点的搞定了。希望我的这篇记录能够为同样正在学习Django的朋友提供一些些帮助吧!

### 回答1: 1. 安装Python和pip 首先,需要在Windows上安装Python和pip。可以从Python官网下载最新版本的Python,并按照安装向导进行安装。安装完成后,打开命令提示符,输入“python”和“pip”命令,确认它们都已经正确安装。 2. 安装Django 使用pip安装Django非常简单。在命令提示符中输入“pip install django”,等待安装完成即可。 3. 创建Django项目 在命令提示符中,进入要创建Django项目的目录,输入“django-admin startproject 项目名称”,即可创建一个新的Django项目。 4. 配置数据库 Django默认使用SQLite作为数据库,但也可以使用其他数据库,如MySQL或PostgreSQL。在settings.py文件中,可以配置数据库连接信息。 5. 运行Django项目 在命令提示符中,进入Django项目的根目录,输入“python manage.py runserver”,即可启动Django开发服务器。在浏览器中输入“http://127...1:800/”即可访问Django项目。 6. 部署Django项目 要将Django项目部署到生产环境中,需要使用Web服务器,如Apache或Nginx。可以使用mod_wsgi或uWSGI将Django项目与Web服务器集成。具体的部署步骤可以参考Django官方文档。 ### 回答2: Django是一个流行的Web开发框架,开发出的Web应用可以直接部署在Windows系统上。下面是关于如何将Django项目部署到Windows系统的详细步骤。 1. 安装Python和pip 在Windows系统上部署Django项目之前,必须安装Python及其配套的包管理工具pip。可以从Python官网下载Python的最新版本,安装时勾选“Add Python to PATH”选项,pip将会自动安装。安装完成后,打开命令行工具,输入python和pip命令来验证是否按照顺利。 2. 创建虚拟环境 虚拟环境是Django项目的必备条件。通过虚拟环境可以隔离不同的Django项目所使用的Python包和版本,使得它们之间不会相互干扰。可以通过venv命令创建虚拟环境,并在其中安装Django框架和其它依赖包。 3. 设置环境变量 在Windows系统中,需要手动设置环境变量,让命令行工具能够找到Django项目,并正确运行。将虚拟环境的Scripts目录添加到系统环境变量中即可。 4. 创建Django项目 可以使用Django-admin.py工具创建Django项目。在虚拟环境中打开命令行工具,输入以下命令: django-admin startproject project_name 5. 修改Django配置文件 Django项目中的settings.py文件是项目的核心配置文件,需要根据实际需求进行相应的修改,比如修改数据库设置、开启调试模式等。 6. 测试Django项目 在命令行中切换到Django项目所在目录,在虚拟环境中输入以下命令: python manage.py runserver 运行成功后,在浏览器中访问localhost:8000就可以看到Django的欢迎页面了。 7. 部署Django项目 通常情况下,Django项目会被部署到Web服务器上,以供用户访问。在Windows系统中,可以使用IIS或Apache等Web服务器进行部署。需要将Django项目所在目录设置为Web服务器的Web根目录,并设置好相关的配置文件和路径。 总之,部署Django项目到Windows系统并不难,只需要按照以上步骤进行操作就可以了。在实际项目中,除了以上步骤,还需要考虑安全性、性能优化等问题。 ### 回答3: Django是一个著名的Python Web框架,可以快速、高效地开发Web应用程序。在开发完毕后,将Django项目部署到Windows服务器上,可以使Web应用程序得到更好的性能和稳定性,也可以提高用户体验。本文将介绍Django项目部署到Windows服务器上的方法。 1.安装Python Django是基于Python开发的,因此需要先在Windows服务器上安装PythonPython官方网站提供了Windows版的Python安装包,下载后双击运行安装即可。 2.安装Django 在安装Python后,需要安装Django。可以通过使用pip命令来安装Django,例如: pip install Django 如果你没有安装pip,先要安装pip: python -m ensurepip --default-pip 3.创建Django项目 安装完Django后,可以用Django提供的命令创建一个Django项目django-admin startproject myproject 这里,myproject为项目名称,可以自定义修改。 4.启动Django项目 在创建项目后,可以使用Django提供的启动命令启动Django项目python manage.py runserver 此时,Django项目已经在本地启动,可以通过浏览器访问 http://127.0.0.1:8000 来查看效果。 5.部署Django项目 要将Django项目部署到Windows服务器上,可以通过IIS(Internet Information Services)来实现。具体步骤如下: (1)安装IIS 在Windows服务器上,可以通过服务器管理器或使用PowerShell命令来安装IIS。 (2)安装wfastcgi模块 wfastcgi是一个Python Web服务器,可以用来调度Python应用程序,并与IIS集成。可以使用pip命令安装wfastcgi: pip install wfastcgi 安装完成后,使用以下命令将wfastcgi配置到Django项目中: python manage.py wfastcgi configure 这里需要输入Django项目的完整路径,例如: C:\inetpub\wwwroot\myproject\myapp\wsgi.py 此外,还需要选择将Django项目作为应用程序池的进程: D:\Python37\python.exe|D:\Python37\Scripts\wfastcgi.py 此时wfastcgi已经与Django项目成功集成。 (3)配置IIS 打开IIS,找到“应用程序池”,创建一个新的应用程序池。在“应用程序池”属性中,将“.NET CLR版本”设置为“No Managed Code”,“启动模式”设置为“常规”。 在“网站”根目录中,右键单击“添加网站”,在“网站名称”下输入Django项目的名称,选择刚刚创建的应用程序池,将“物理路径”设置为Django项目所在的路径。 同时,需要在“应用程序池”属性中,将“托管管道模式”设置为“集成”。 (4)测试Django项目 在配置完成后,可以用浏览器访问服务器IP地址,查看Django项目是否成功部署。 以上就是将Django项目部署到Windows服务器上的全部流程。另外,在部署Django项目的过程中,需要注意安全,避免出现漏洞和攻击。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值