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权限问题 。。。。。。