插件窝 干货文章 怎么将Django项目迁移到linux系统中

怎么将Django项目迁移到linux系统中

项目 路径 sudo Gunicorn 174    来源:    2025-04-21

将Django项目迁移到Linux系统的完整指南

迁移前的准备工作

  1. 备份项目

    • 确保本地开发环境中的项目完整备份
    • 包括源代码、数据库、静态文件和媒体文件
  2. 检查依赖

    • 记录所有依赖包:pip freeze > requirements.txt
    • 检查项目使用的Python版本是否与目标Linux系统兼容

迁移步骤

1. 将项目文件传输到Linux服务器

# 使用scp命令传输文件(从本地到服务器)
scp -r /本地/项目路径 username@服务器IP:/目标路径

# 或者使用git克隆(如果项目在git仓库)
git clone 项目仓库地址

2. 设置Python环境

# 安装Python和pip(以Ubuntu为例)
sudo apt update
sudo apt install python3 python3-pip python3-venv

# 创建虚拟环境
python3 -m venv myenv
source myenv/bin/activate

3. 安装项目依赖

# 进入项目目录
cd /项目路径

# 安装依赖
pip install -r requirements.txt

4. 数据库迁移

如果使用SQLite:

  • 直接复制数据库文件即可

如果使用MySQL/PostgreSQL:

# 安装数据库服务(以MySQL为例)
sudo apt install mysql-server

# 创建数据库和用户
sudo mysql -u root
CREATE DATABASE dbname;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
exit

# 修改Django settings.py中的数据库配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dbname',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

# 迁移数据库
python manage.py migrate

5. 收集静态文件

# 修改settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

# 运行收集命令
python manage.py collectstatic

6. 配置生产环境设置

# 修改settings.py
DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com', '服务器IP']

7. 部署选项

选项1:使用Gunicorn + Nginx

# 安装Gunicorn
pip install gunicorn

# 测试运行
gunicorn --bind 0.0.0.0:8000 项目名.wsgi:application

# 安装Nginx
sudo apt install nginx

# 配置Nginx(创建/etc/nginx/sites-available/yourproject)
server {
    listen 80;
    server_name yourdomain.com;

    location /static/ {
        alias /项目路径/staticfiles/;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

# 启用配置
sudo ln -s /etc/nginx/sites-available/yourproject /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx

选项2:使用Apache + mod_wsgi

# 安装Apache和mod_wsgi
sudo apt install apache2 libapache2-mod-wsgi-py3

# 配置Apache(创建/etc/apache2/sites-available/yourproject.conf)
<VirtualHost *:80>
    ServerName yourdomain.com

    Alias /static /项目路径/staticfiles
    <Directory /项目路径/staticfiles>
        Require all granted
    </Directory>

    <Directory /项目路径/项目名>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess yourproject python-path=/项目路径 python-home=/项目路径/myenv
    WSGIProcessGroup yourproject
    WSGIScriptAlias / /项目路径/项目名/wsgi.py
</VirtualHost>

# 启用配置
sudo a2ensite yourproject.conf
sudo systemctl restart apache2

8. 设置开机自启动(以Gunicorn为例)

# 创建systemd服务文件(/etc/systemd/system/gunicorn.service)
[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=username
Group=www-data
WorkingDirectory=/项目路径
ExecStart=/项目路径/myenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/项目路径/项目名.sock 项目名.wsgi:application

[Install]
WantedBy=multi-user.target

# 启动服务
sudo systemctl start gunicorn
sudo systemctl enable gunicorn

常见问题解决

  1. 权限问题

    sudo chown -R www-data:www-data /项目路径
    sudo chmod -R 755 /项目路径
    
  2. 静态文件404错误

    • 检查Nginx/Apache配置中的静态文件路径
    • 确保运行了collectstatic命令
  3. 数据库连接问题

    • 检查数据库服务是否运行
    • 验证settings.py中的数据库凭据
  4. 端口冲突

    sudo netstat -tulnp | grep :80
    sudo kill <PID>
    

完成以上步骤后,你的Django项目应该已经在Linux系统上成功运行。记得定期备份数据库和项目文件。