部署Django服务器遇到的各种坑

本文详细记录了在部署Django服务器过程中遇到的常见问题及解决方案,包括指定Python3.6为默认版本、解决远程连接MySQL错误、处理Django运行时报错、安装uwsgi失败以及MySQL大小写敏感设置。通过具体步骤指导,帮助读者顺利部署Django项目。

01-指定python3.6为默认

参考:https://www.cnblogs.com/andu99/p/9145386.html

  • 安装python3.6
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:jonathonf/python-3.6 
sudo apt-get update 
sudo apt-get install python3.6
  • 安装pip
sudo apt-get install python3-pip
  • 用python3.6升级pip,指定pip为python3.6版本
python3.6 -m pip install --upgrade pip
  • 查询pip版本结果
pip -V
  • 将原有python命令删除
sudo rm /usr/bin/python

建立新命令python链接指向python3.6

sudo ln -s /usr/bin/python3.6 /usr/bin/python

02-远程连接服务器mysql报错问题

参考:https://www.cnblogs.com/invban/p/5824891.html

报错信息: Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0 mysql

  • 修改配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf 
  • 在[mysqld]下增加内容
skip-name-resolve

03-django运行报错

参考:https://blog.youkuaiyun.com/sars231/article/details/78999084

报错信息:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.

  • 安装pymysql
pip install pymysql
  • 打开项目内的 init.py 文件并添加如下代码
import pymysql
pymysql.install_as_MySQLdb()

04-安装uwsgi出错

报错信息:Failed to build uwsgi

  • 安装python3.6-dev
sudo apt-get install python3.6-dev
  • 安装uwsgi
pip install uwsgi --upgrade

05-mysql大小写区分

参考:https://www.cnblogs.com/skyessay/p/9082148.html

由于django的模型里写的类都为大写开头,但是对应到mysql内的表为小写,调用的时候是用大写调用,如果区分大小写的话会查不到数据,因此需要修改mysql配置文件

  • 修改mysql配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
  • 在[mysqld]下添加一行
lower_case_table_names=1
  • 保存后进入root模式重启mysql
systemctl restart mysql
<think>好的,我现在需要帮助用户了解如何在云服务器部署Django后端。首先,我应该回顾用户提供的引用内容,看看有没有相关的信息。用户给出了五个引用,都是关于Django部署的,包括使用WSL、uWSGI配置、数据库迁移、React前端集成以及Nginx优化等。 首先,用户的问题是如何在云服务器部署Django后端,所以我要整理出一个步骤指南。根据引用中的信息,可能需要包括环境准备、项目上传、虚拟环境设置、依赖安装、数据库配置、静态文件处理、使用uWSGI和Nginx部署,以及最后的测试和维护。 接下来,引用[1]提到了使用uWSGI配置文件来启动服务器,这里需要详细说明如何创建和配置uwsgi.ini文件。引用[2]和[3]涉及数据库迁移和运行服务器命令,比如makemigrations、migrate,以及使用nohup常驻服务。引用[4]和[5]提到了Nginx的反向代理和动静分离,这部分需要整合到部署步骤中,说明如何配置Nginx来处理静态文件并将请求转发给uWSGI。 然后,我需要确保每个步骤清晰,比如先准备云服务器环境,安装必要的软件如Python、Nginx、MySQL等。然后上传项目,建议使用Git或者SCP,用户可能对这两种方法比较熟悉。设置虚拟环境可以隔离依赖,安装requirements.txt中的包是关键步骤,避免依赖问题。 在数据库配置部分,要提到修改settings.py中的数据库设置,使用云服务器的数据库服务,比如MySQL,可能需要安装mysqlclient库,并进行迁移操作。静态文件收集是Django生产部署的重要步骤,需要配置STATIC_ROOT和运行collectstatic命令。 关于uWSGI和Nginx的配置,引用[1]和[5]提供了配置文件的示例和优化方法。需要说明如何编写uWSGI的ini文件,以及Nginx的配置文件,特别是设置反向代理和静态文件的位置。还要注意安全组设置,开放相应的端口如80和8000。 测试部分需要指导用户检查服务是否正常运行,查看日志文件排查错误。维护方面,可能需要提到使用版本控制、监控工具和备份策略。 最后,生成相关问题要考虑用户可能遇到的后续问题,比如性能优化、HTTPS配置、自动化部署、静态文件CDN整合以及高可用架构,这些都是部署后常见的进阶话题。 需要检查是否有遗漏的步骤,或者引用中的信息是否被充分利用。例如,引用[3]提到的nohup命令用于常驻服务,但实际生产环境可能更推荐使用uWSGI和Nginx的组合,而是直接运行runserver,所以可能需要说明这一点,避免用户使用开发服务器在生产环境中。 还要注意语法正确,使用中文回答,行内公式用$...$,独立公式用$$...$$,但在这个问题中可能涉及较少数学公式,但需要确保LaTeX正确。过当前问题主要是部署步骤,可能用上数学表达式,所以这部分可能需要处理。 总结,我需要将引用中的各个步骤整合成一个连贯的指南,分步骤详细说明,同时确保引用标记正确,并在最后生成相关问题。</think>### 如何在云服务器部署 Django 后端 #### 一、环境准备 1. **云服务器配置** - 选择阿里云、腾讯云等平台的云服务器(推荐 Ubuntu/CentOS 系统) - 开放安全组端口(如 80/HTTP、443/HTTPS、8000/Django 开发端口) 2. **安装基础依赖** ```bash sudo apt update sudo apt install python3-pip python3-venv nginx mysql-server ``` --- #### 二、项目部署流程 1. **上传项目代码** - 通过 Git 克隆或 SCP 上传本地项目到云服务器 ```bash git clone <项目仓库地址> # 或 scp -r /本地/项目路径 user@服务器IP:/目标路径 ``` 2. **创建虚拟环境并安装依赖** ```bash python3 -m venv myenv source myenv/bin/activate pip install -r requirements.txt ``` 3. **配置数据库** - 修改 `settings.py`,使用云服务器 MySQL 服务: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '数据库名', 'USER': '用户名', 'PASSWORD': '密码', 'HOST': 'localhost', 'PORT': '3306', } } ``` - 执行迁移命令[^2]: ```bash python manage.py makemigrations python manage.py migrate ``` 4. **收集静态文件** ```bash python manage.py collectstatic ``` --- #### 三、使用 uWSGI + Nginx 部署 1. **配置 uWSGI** - 在项目目录创建 `uwsgi.ini` 文件[^1]: ```ini [uwsgi] chdir = /home/MyDjango/MyDjango # 项目路径 module = MyDjango.wsgi:application home = /home/MyDjango/venv # 虚拟环境路径 master = true processes = 4 socket = :8000 vacuum = true ``` - 启动 uWSGI 服务: ```bash uwsgi --ini uwsgi.ini ``` 2. **配置 Nginx 反向代理** - 创建 Nginx 配置文件(如 `/etc/nginx/sites-available/myproject`)[^5]: ```nginx server { listen 80; server_name 你的域名或IP; location /static/ { alias /home/MyDjango/static/; # 静态文件路径 } location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; } } ``` - 重启 Nginx: ```bash sudo systemctl restart nginx ``` --- #### 四、测试与维护 1. **验证服务状态** - 访问服务器 IP 或域名,检查 Django 应用是否正常运行 - 查看日志排查问题: ```bash tail -f /var/log/nginx/error.log # Nginx 错误日志 ``` 2. **常驻服务管理** - 使用 `systemd` 管理 uWSGI 进程(替代 `nohup`[^3]) - 定期备份数据库和代码 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值