初次搭建个人网站和服务器的记录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了,这个下一篇再聊。

posted @ 2021-07-24 17:58  Compasslg  阅读(96)  评论(0编辑  收藏  举报