Django 服务器部署全过程

本文详细介绍了如何将Django工程部署到云服务器,包括准备Git仓库的Django项目,购买和配置云服务器,安装Nginx,设置HTTPS访问,以及使用screen管理终端会话。步骤涵盖了从环境搭建、数据库配置、Nginx代理到SSL证书的获取和配置等关键环节。
摘要由CSDN通过智能技术生成

准备工作

需要准备的内容有:

  1. 托管到git服务器的Django工程;
  2. 购买腾讯、阿里或其他品牌的云服务器;
  3. 如果需要部署https服务,另外购买一个域名。

本文档测试环境:
腾讯云轻量服务器,Ubuntu22.04操作系统,系统自带Python 3.10版
Django工程使用MySQL数据库,redis缓存

服务器软件环境

云服务器建议使用密钥登陆,可在网页端或电脑上使用MobaXterm等ssh终端登陆。

服务器软件环境主要包括 Django的运行环境 和 Nginx服务。

首先安装Django的运行环境软件

echo y | sudo apt update
echo y | sudo apt upgrade
echo y | sudo apt install nginx mysql-server redis python3-dev default-libmysqlclient-dev build-essential

# git 配置
git config --global user.name "xxx"
git config --global user.email "xxx@xx.com"
git config --global credential.helper store

# 切换用户工作目录
cd /home/ubuntu/

# 创建Python 虚拟环境
echo y | sudo apt install python3.10-venv
python3 -m venv django32
source ./django32/bin/activate

# 创建源代代码工作目录, 并同步源代码,需要输入git的账号密码
mkdir webapp
cd webapp

git clone https://gitee.com/xxx/django_project.git

cd django_project
pip install -r requirements.txt

然后准备完成数据库迁移。
需要先为Django项目创建数据库和数据库访问用户,与Django代码中的数据库配置一致
这里需要先在服务器上做好数据库的设置。可参考以下操作命令:

# 初次登陆mysql不需要密码
mysql -u root
# 修改root密码
ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Xpassword'; 
# 为Django项目创建数据库 和 数据库用户
CREATE DATABASE django_db ;
CREATE USER 'django_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON `django_db`.*  TO 'django_user'@'localhost';
GRANT SYSTEM_USER ON *.*  TO 'django_user'@'localhost';
# 退出MySQL
exit;
# Django数据迁移
python manage.py makemigrations 
python manage.py migrate

# Django静态文件迁移
python manage.py collectstatic

这里也可以使用云数据库,修改数据库配置的账号密码,主机地址与云端一一对应即可。

Nginx配置

运行Nginx服务前,需要为Django项目写一个配置文件:

touch /etc/nginx/sites-available/django.conf 
ln -s /etc/nginx/sites-available/django.conf  /etc/nginx/sites-enabled/django

django.conf 参考配置内容如下:

server{
    listen 80;
	server_name 127.0.0.1;                              #访问django项目的网站
	client_max_body_size 8m;                            #上传数据的大小限制
	access_log /var/www/log/nginx.access.log;           #访问日志,需要事先生成这个文件
	error_log /var/www/log/nginx.error.log;             #错误日志,需要事先生成这个文件
	location /static/ {
        root /home/ubuntu/webapp/django_project/;
		expires 30d;
    }
	location /uploads/ {                                # 对应Django设置文件中的 MEDIA_ROOT
        alias /home/ubuntu/webapp/django_project/;
		expires 30d;
    }
    location / {
        #动态请求交给gunicorn ,这里的端口号与下文 gunicorn 执行命令中的端口号必须一致
		proxy_pass http://127.0.0.1:8899;
		proxy_connect_timeout 500s;		# 超时时间设置
		proxy_read_timeout 500s;
		proxy_send_timeout 500s;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

执行以下命令检查Nginx配置是否正确,并重启Nginx

nginx -t 
ningx -s reload

运行Django项目:gunicorn -k gevent -t 120 -w 2 -b 127.0.0.1:8899 django_project.wsgi. 这里的端口号必须与Nginx配置项一致
至此已经可以通过IP地址访问Django网站了。

https访问配置

https配置需要事先买一个域名,并配置好域名解析。

https配置参考certbot网站的方案:

在certbot网页界面上选择web服务软件和服务器操作系统,按提示命令一步步操作。

然后在打开文件 /etc/nginx/sites-available/default ,将其中SSL配置项复制到Django项目的Nginx配置文件中:

server{
    listen 443 ssl; # managed by Certbot
    server_name you_domain.com;                              # 域名
    ssl_certificate /etc/letsencrypt/live/clzw.tech/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/clzw.tech/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    # listen 80;
	# server_name ;                              #访问django项目的网站
	client_max_body_size 8m;                            #上传数据的大小限制
	access_log /var/www/log/nginx.access.log;           #访问日志,需要事先生成这个文件
	error_log /var/www/log/nginx.error.log;             #错误日志,需要事先生成这个文件
    ...
}

重启nginx服务。

如果出现静态资源目录下面文件无法访问,浏览器访问提示403 forbidden,可以修改 /etc/nginx/nginx.conf 配置文件头部的user设置。参考链接

终端管理工具 screen

使用screen 可以让linux命令行( 比如 gunicorn 命令行 )在退出MobaXTeam或网页终端界面后继续执行 ,下次登陆时可以回到先前的中断界面 查看程序输出。
常用的命令参数如下:

screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值