Django项目迁移笔记


python的Django博客项目服务器迁移记录

1、新服务器准备

1.1 环境及数据库准备

1.1.1 购买服务器

Linux操作系统,例如Ubuntu。

1.1.2 更新包

sudo apt update && sudo apt upgrade

1.1.3 安装Python及pip

sudo apt install python3 python3-pip

1.1.4 安装MySQL

sudo apt install mysql-server

1.1.5 创建应用所需的python虚拟环境:

pip install vitualenv,virtualenv /path/yourenv/

1.1.6 安装Nginx

sudo apt install nginx

1.1.7 安装uWSGI

sudo pip3 install uwsgi

2、数据库备份和项目打包及数据传输

2.1 数据库备份(数据库mysql)

备份旧服务器数据:mysqldump -u [username] -p [password] [database_name.sql] > [backup_datanamme.sql]

2.2 打包Django应用文件(tar)

打包应用:tar -czvf [packge_name.tar.gz] [/path/to/your/django/app]

2.3 打包依赖

python环境:pip freeze > requirements.txt

2.4 传输数据到新服务器(scp)

scp数据传输(django应用):scp [packge_name.tar.gz] user@new_server_ip:/path/to/destination scp数据传输(数据库备份):scp database_name.sql user@new_server_ip:/path/to/detination scp数据传输(环境依赖包):scp requirements.txt user@new_server_ip:/path/to/detination

3、新服务器上恢复数据

3.1创建同名数据库并导入备份:

mysql -u username -p CREATE DATABASE new_database_name;
mysql -u username -p new_database_name < /path/to/database_backup.sql

3.2 解压项目文件并安装依赖

tar -xzvf myproject_backup.tar.gz
cd /path/to/unzipped/project
pip install -r requirements.txt

3.3 迁移数据库模型并收集静态文件

python manage.py migrate
python manage.py collectstatic

4 服务配置

4.1 Nginx配置

编辑 /etc/nginx/sites-available/your_site 并创建软链接到 /etc/nginx/sites-enabled 配置文件示例:

# nginx_conf
upstream django {
             server unix:///yourpath/DjangoBlog/mysite.sock; # for a file socket
                        # server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
server {
            listen      443 ssl;
            server_name www.runker.xyz runker.xyz; # substitute your machine's IP address or FQDN
            ssl_certificate      /path/your/cert.pem;
            ssl_certificate_key  /path/your/key.pem;
            ssl_session_timeout 5m;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:**********************************;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
          # ssl_prefer_server_ciphers  on; 
          # listen 80;
          # server_name your_ip;
          # charset  uft-i;
          # client_max_body_size 75M;
         location /static  {
             alias /yourpath/collectedstatic;  # your Django project's media files - amend as required
                                                                }
         location /media {
            alias /yourpath/uploads; # your Django project's static files - amend as required
                                                                    }
         location / {
            uwsgi_pass  django;
            include     /yourpath/uwsgi_params; # the uwsgi_params file you installed
                                                                                }
}
server {
            listen      80;
            server_name www.runker.xyz runker.xyz; # substitute your machine's IP address or FQDN
            return 301 https://$server_name$request_uri;
            charset     utf-8;
            client_max_body_size 75M;   # adjust to taste
}

4.2 uwsgi配置

创建uWSGI配置文件,例如myproject.ini,并设置项目路径、环境变量等 配置文件示例:

[uwsgi]
chdir =/yourpath/DjangoBlog
module = djangoblog.wsgi
home = /yourpath/djangoblog
master = true
processes = 10
chmod-socket = 666
socket = /yourpath/DjangoBlog/mysite.sock
vacuum = true~i
daemonize = /yourpath/uwsgi/uwsgi.log
stats = %(chdir)/uwsgi/uwsgi.status
pidfile = %(chdir)/uwsgi/uwsgi.pid
plugin = python3
uid = user
gid = user

5、服务启动

5.1 启动uwsgi

uwsgi --ini myproject.ini

5.2 启动nginx

sudo systemctl restart nginx

6、查看是否能正常打开网页。

6.1 常见问题解决

502 bad gateway nginx权限问题 。。。。。。

7、相关链接

参考视频