初次搭建个人网站和服务器的记录1:安装和配置Django
作者: Compasslg
日期: 2021-07-24
一、前言
之前主要精力都花在写游戏上,只是很久以前在AWS的EC2上搭建过简单的服务器(PHP+Apache)和Sql数据库,现在基本上已经忘光了。最近突然想弄一个简单的个人网站,所以打算顺便记录一下搭建过程和中途遇到的一些问题。如果有人碰到同样的问题可以参考一下,我的配置方式如果有问题有大佬看到也欢迎指正。
二、服务器选择
起初原因是被阿里云的新用户折扣吸引了,包了个入门级的ECS,结果近期朋友买了Orange Pie又顺便帮我在住的地方搭了一个,也挺适合当服务器用的,不过出于稳定考虑我最后选择相信大公司,毕竟说不定什么时候家里停电或者啥时候就要搬家了,而且自己在线下搭的服务器维护起来也比较麻烦。
三、框架选择
个人对网站搭建的了解非常有限,基本上都是学校里那一套(而且由于教授比较老,用的都是很过时的技术),所以做之前肯定是需要研究一番的。由于之前只用过PHP,虽然我对这个语言的感官不怎么样,但查了下目前依旧还算比较流行,搭配 Django 应该算是不错的选择了。
四、配置环境
系统方面我选择的是Centos7,这应该算是比较公认的最适合当服务器的Linux系统了。
一开始我选择自己安装了最新的Python版本,结果编译时遇到了各种依赖的版本问题以及缺失问题,在安装Django后运行时又碰到了sqlite3版本不对的问题,
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
即使更新并重新编译Python也没有解决,最后还是通过将系统盘杀掉重来,使用自带的Python3.6才解决的,具体失败的流程就不细说了,事实上只要有耐心解决其他所有的依赖问题,是可以通过下面第3步的最后一条解决上面这个报错的。这里重点讲一下我最终选择的成功的步骤,相较起来比较省心一点。
1. 将默认 Python 版本从 Python2.7 改成 Python3.6
-
删除并备份原本的 Python 入口
mv /usr/bin/python /usr/bin/python.bak
-
通过添加Link来配置 Python3.6 为默认的 Python 入口 (这里是直接配置的自带的Python3.6,如果是通过yum下载或者自行从官网下载编译的,则需要设置其他的路径,通常默认是在/usr/local/bin/python3)
ln -s /usr/bin/python3.6 /usr/bin/python
-
由于yum依赖于 Python2 才能正常运行,但在引用时是直接使用的/usr/bin/python,所以需要手动修改其配置
vi /usr/bin/yum vi /usr/libexec/urlgrabber-ext-down
将第一行的 !/usr/bin/python 改为 !/usr/bin/python2 即可。
2. 安装最新的 Sqlite3 版本
-
起初可以通过以下指令看到系统自带的sqlite3版本为 sqlite3.7
sqlite3 --version
-
如果希望使用较新版本的 Django (2.2以后的版本),就需要将Centos7默认的sqlite3.7升级到sqlite3.8以上。所以我选择在官网下载了最新的稳定版本并本地编译
wget https://www.sqlite.org/2021/sqlite-autoconf-3360000.tar.gz tar zxvf sqlite-autoconf-3360000.tar.gz cd sqlite-autoconf-3360000 ./configure make sudo make install
-
默认情况下会被安装到 /usr/local/ 路径下,这个时候重复上面修改 Python 入口的步骤就可以依样画葫芦的替换 sqlite3 的版本了。
mv /usr/bin/sqlite3 /usr/bin/sqlite3.bak ln -s /usr/local/bin/sqlite3 /usr/bin/sqlite3
-
这个时候通过
sqlite3 --version
可以看到默认版本已经改为了最新的 3.36.0,但如果通过python -c "import sqlite3; print(sqlite3.sqlite_version)"
查看则会发现python依然引用不到最新的sqlite3版本。这个时候需要通过
export LD_LIBRARY_PATH=/usr/local/lib
来增加引用的路径。此时再通过
python -c "import sqlite3; print(sqlite3.sqlite_version)"
就可以发现Python已经可以引用到最新的sqlite3版本了。
3. 安装 Django
完成了 Python 和 Sqlite3 的配置,就可以比较轻松的安装 Django 了。这个我直接跟着官网的步骤通过pip完成了。
pip3 install Django==3.2.5
然后
django-admin startproject mysite
cd mysite
python manage.py runserver
就可以发现django是否运行正常了。
五、总结
虽然说有一些波折,但总算是初步将Django搭好了, 之后就是花时间学一下 Django 然后搭建 Apache了,这个下一篇再聊。