最近阿里云的服务器快到期了,打算换个国外服务器vultr,这样不仅可以自己搭一个shadowsocks,同时还可以把博客平台迁过来,一举两得。
登录服务器后,第一步要做的就是安装相关必要软件。
因为服务器一般是Linux系统,python2是默认自带的,在此就忽略啦。
安装 pip
一般地,因为我们是python 项目,所以pip是一定少不了。但pip依赖一个叫setuptools的软件包,在安装pip前先安装它。
1. download get-pip.py
2. python get-pip.py
get-pip.py 在默认情况下会自动帮你安装上setuptools,这样就达到了一步到位地效果。当然你也可以分别下载setuptools和pip的安装包手动运行安装。
( 附上get-pip.py的下载地址 )
安装Django
用pip安装Django非常简单,但在安装时有一点需要注意,因为是项目迁移,所以最好先查询下之前服务器上的Django版本,然后再安装与之对应的Django版本,避免因为版本升级造成额外的麻烦。
pip install Django == 1.7( old version )
当安装完之后,运行如下命令,如没有异常则表明Django已安装成功。
python
import django
django.get_version()
sudo apt-get install nginx
sudo /etc/init.d/nginx start # 启动 nginx
uWSGI的安装相对比较麻烦,依赖于C编译器,gcc和clang都可以。
当然我们可以通过pip命令一次性把python build中所需的环境安装完成。
#On a Debian/Ubuntu system
apt-get install build-essential python
然后就可以直接通过pip安装uWSGI了。
pip install uwsgi
更多安装参考详见官方文档
数据库
在我的博客项目中使用的是MySQL数据库,下面就简单介绍下MySql的配置方法。
MySql的安装其实非常简单,通过apt-get可以直接进行安装。
sudo apt-get install mysql-server
安装期间会提示输入密码,这里可以输入也可以选择忽略。
然后就可以在shell中输入命令进入MySql了。
mysql -u root -p
但这里有两点需要注意:
另一点就是MySql的字符集问题(这个问题坑了我好久-,-)。
MySql的存储的默认字符集是****,而Django的默认字符集是utf-8,所以如果直接将数据迁入的话会造成数据错乱,并且数据库由于输出的数据不是utf-8格式,还会造成Django发生异常。
首先使用命令show variables like 'collation_%' 和 show variables like 'character_%'; 查看Mysql的字符集和排序方式。
可以从图中看到有些字符集的配置都是latin1,而导致乱码的罪魁祸首就是server端的character不是uf8。
1. vim /etc/mysql/my.cnf
2. character_set_server = utf8 #在 [mysql] 标签下添加
3. service mysql restart
当修改完之后,可以再查看数据库当前字符集配置,你会发现server端的character变成utf-8了,这就说明大工告成了。
完成上面的准备工作,基本上整个博客项目的迁移就完成了60%,剩下的主要就是Django的生产环境配置和数据库的数据迁移。
生产环境配置
生产环境的配置其实主要是两个配置文件的迁移,分别是nginx的配置文件nginx.conf 和 uWSGI的配置文件uwsgi.ini。
方式也非常简单,直接使用scp命令从服务器拷贝出来,然后再修改与本地路径相关的一些参数即可。
至于nginx.conf 和 uwsgi.ini怎么配置,可以参考官方文档进行配置。
数据库内容迁移
Django的基础框架建设非常的完善,所以数据库的内容迁移自然也是非常简单。
Django 提供了一个命令可以直接将数据库中的内容导出成json格式的文本文件。
1. python manage.py dumpdata > all.json # 指定导出的json名字
2. python manage.py dumpdata [appname] > blog.json # 指定导出的json名字
上述命令1是默认导出Django项目中所有app的数据,当然你也可以使用命令2单独指定导出一个app的数据,不过并不建议这么做,除非你没有使用Django的用户管理,后台管理等系统功能( 显然这是不常见的 )。
在正在执行数据导入前,我们还需要先将项目对应的数据库建立起来。
1. mysql -u root -p
2. create database; [数据库名称];
3. show databases;
这里需要注意的是新创建的数据库名字最好和Django项目的settings文件中配置的数据库名字保持一致,不然将无法找到数据库。
然后再调用Django命令将项目中的数据模型在数据库中建立起来(就是创建表)。
python manager.py migrate
最后再将之前导出的数据导入至新服务器的数据库中,就大功告成啦。
python manage.py loaddata blog_dump.json
启动服务器
nginx服务器之前已经启动,现在我们只需启动Django配置的uwsgi服务器,就可以监听相应的端口号,响应nginx服务器分发的动态请求了。
uwsgi --ini pcms_uwsgi.ini
至此一个简单的Django项目迁移流程就结束了,欢迎访问我的博客xyczero.com,如有疑问欢迎提出。
最后安利一波,如果你也想在vultr上建立自己的服务器或shadowsocks,欢迎点击优惠链接>> ,互惠互利嘛^ . ^ 。
参考资料 :
欢迎查看 个人博客.
2025 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123