环境是本地的虚拟机,自己环境上部署时遇见了一些问题解决后,就写个稍微流畅点的自己可以看看,算是总结笔记吧
跟着这个大佬的文档部署的:
自己的环境信息:
centos:7.9
python:3.12.1
django:5.0.2
mysql:5.7
(尽量不要用 mariadb,不然后面安装 mysqlclient 会有问题,不过有大佬解决了)
Centos操作系统新安装的Python3中安装mysqlclient库_specify mysqlclient_cflags and mysqlclient_ldflags-CSDN博客
一、python 环境所需依赖安装
1.1、更新系统软件并安装相关依赖
yum update
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel wget gcc make
## 安装 mysqlclient 所需的依赖
### 这里我 django orm 连接的是 mysql 数据库,所以需要用到 mysqlclient
yum install python3-devel mysql-devel
1.2、更新 openssl
centos默认带的openssl版本太低,要升级openssl版本
不然后面安装会报错:"Can't connect to HTTPS URL because the SSL module is not available"
openssl 下载地址:[ Old Releases ] - /source/old/index.html
1.2.1、下载
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
1.2.2、解压
tar xzf openssl-1.1.1w.tar.gz
1.2.3、编译安装
cd openssl-1.1.1w ./config --prefix=/usr/local/openssl make && make install
1.2.4、备份旧的openssl
mv /usr/bin/openssl{,.back} mv /usr/include/openssl{,.back}
1.2.5、配置新的openssl
cd /usr/local/openssl ln -s `pwd`/include/openssl/ /usr/include/openssl ln -s `pwd`/lib/libssl.so.1.1 /usr/local/lib64/libssl.so ln -s `pwd`/bin/openssl /usr/bin/openssl
1.2.6、修改系统配置
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
1.2.7、使用新配置立即生效
openssl version
二、Python 环境安装配置
2.1、下载编译安装
2.1.1、下载源码包
## 官网的,很慢,等了一会才下好
wget https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tgz
2.1.2、解压缩
tar xzf Python-3.12.1.tgz
2.1.3、配置安装路径和指定依赖
cd Python-3.12.1 ./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl
2.1.4、编译安装
make && make install
2.2、配置环境
2.2.1、设置软连接(或者直接将 /usr/local/python3/bin/ 加入 PATH 环境变量
## 删除因之前安装python3-devel时自动做的软连接 rm -rf /usr/bin/python3 rm -rf /usr/bin/pip3 ## 用自己的新版本来做 cd /usr/local/python3/bin/ ln -s `pwd`/python3.12 /usr/bin/python3 ln -s `pwd`/pip3.12 /usr/bin/pip3 ## 查看版本信息 python3 -V pip --version
2.2.2、配置 PyPI 国内镜像源(这样 pip 安装时就会快点
### 国内一些镜像源的地址 1. 清华大学镜像站:https://pypi.tuna.tsinghua.edu.cn/simple/ 2. 阿里云镜像站:https://mirrors.aliyun.com/pypi/simple/ 3. 中科大镜像站:https://pypi.mirrors.ustc.edu.cn/simple/ 4. 中国科技大学镜像站:https://pypi.mirrors.ustc.edu.cn/simple/ 5. 中国科学技术大学镜像站:https://pypi.mirrors.ustc.edu.cn/simple/ 6. 华中科技大学镜像站:https://pypi.hustunique.com/ 7. 豆瓣:https://pypi.douban.com/simple/ ## 在用户根目录下新建 .pip/pip.conf 文件,并写入 mkdir ~/.pip vim ~/.pip/pip.conf [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple/ [install] trusted-host = pypi.tuna.tsinghua.edu.cn
2.3、虚拟环境安装配置
2.3.1、虚拟环境安装
# 安装虚拟环境 pip3 install virtualenv # 安装虚拟环境扩展包 pip3 install virtualenvwrapper # 新建一个文件夹用来保存虚拟环境 mkdir ~/.virtualenv # 建立软连接 ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
2.3.2、配置虚拟环境
vim ~/.bashrc # WORKON_HOME:定义 mkvirtualenv 新建虚拟环境的默认路径 export WORKON_HOME=~/.virtualenv # 指定 python 解释器 export VIRTUALENVWRAPPER_PYTHON=/usr/local/python3/bin/python3 # 加载 virtualenvwrapper source ~/Python/python3.8.10/bin/virtualenvwrapper.sh
# 刷新 source ~/.bashrc
2.3.3、virtualenv 虚拟环境常用命令
查看当前有哪些虚拟环境:workon 创建虚拟环境:virtualenv 环境名称 指定python解释器创建虚拟环境:virtualenv -p /usr/bin/python3.8 环境名称 激活虚拟环境: cd 环境目录/bin source activate 进入\切换 虚拟环境: workon 环境名称 进入虚拟环境(需要先进入到虚拟环境所在的目录):cdvirtualenv 退出当前虚拟环境:deactivate 删除虚拟环境:rmvirtualenv 环境名称
三、安装 mysql
3.1、创建项目所需的数据库
mysql> create database staff_manage default charset utf8 collate utf8_general_ci;
四、Django 项目配置部署
4.1、上传项目
4.1.1、上传项目
## 我这里因为是本地的环境,就用的 xftp 把包整体移过来的
也有其他方法:
将文件使用 git 上传 GitHub,或者码云等平台,再在服务器中下载;使用 Xftp 等三方工具将文件直接上传到服务器;使用 Pycharm 上传代码
4.2、新建并配置虚拟环境
4.2.1、新建虚拟环境
# staffmanage 是写自己的环境名 mkvirtualenv staffmanage # 将上传的项目文件移到虚拟环境中(也可以不用移到虚拟环境的目录下 cp -r staffmanage/* ~/.virtualenv/staffmanage/
4.2.2、安装需要的库
# res.txt 里是自己需要的库名 django==5.0.2 requests mysqlclient # 进入虚拟环境 workon staffmanage # 进入当前环境目录 cdvirtualenv # 批量安装 pip install -r res.txt
4.3、修改项目设置
## 根据自己情况修改
4.3.1、因为这里用的 mysql5.7,迁移表时会报错,需要修改源码
"django.db.utils.NotSupportedError: MySQL 8.0.11 or later is required (found 5.7.44)"
# 根据报错信息,进入对应文件,找到 self.check_database_version_supported() 并注释掉
vim /root/.virtualenv/staffmanage/lib/python3.12/site-packages/django/db/backends/base/base.py
4.3.2、修改项目 settings.py 设置
# 可以让任何 IP 访问 ALLOWED_HOSTS = ['*']
4.4、迁移项目需要的表到数据库
(staffmanage) [root@master staffmanage]# python3 manage.py makemigrations (staffmanage) [root@master staffmanage]# python3 manage.py migrate
五、项目运行
# 直接启动服务,访问服务接口,测试能否正常访问
(staffmanage) [root@master staffmanage]# python3 manage.py runserver 0.0.0.0:8000
没问题了 T-T,over
还有 uwsg、nginx 等后面搞好再补充