• 部署django项目
    # 部署django项目 将 django 项目从windows迁移并部署到linux,本项目核心基于 django + vue3 + mysql搭建 本项目部署主要分为四步:1.传代码,2.配置环境3.传数据库4.配置并运行项目 此外在数据库迁移时出现了问题,因此还涉及 linux 的 python 源码编译安装,以及 mysql 的安装过程 项目目录: <img src="/media/uploads/articles_image/202601/20260127_025104_image.png" height="500" alt="项目目录"> ## 一、传代码 这一部分摘要:这一部分主要是通过 `requirements.txt` 提前备份版本,通过 git 将文件传到 linux 上 ### 1.requirements.txt备份 首先在本地项目里生成一个requirements.txt文件,用来备份虚拟环境中用到的 python 库的版本: ```shell pip freeze > requirements.txt ``` 文件结构大概这样: ```Plaintext asgiref==3.11.0 <-- 库名 == 版本号 cssselect==1.3.0 Django==6.0 ... ``` ### 2.把代码推送到 Gitee 或 GitHub #### 1.1 创建.gitignore文件 不需要上传 venv 文件夹(虚拟环境)和 __pycache__ 文件夹 db.sqlite3: 数据 media: 用户上传文件目录 ```Plaintext venv/ __pycache__/ *.pyc db.sqlite3 media/ .DS_Store .vscode/ ``` #### 1.2 上传 - 创建github仓库 - 在本地项目文件夹: ```bash git init git add . git commit -m "首次部署" git branch -M main git remote add origin <你的仓库地址> git push -u origin master ``` ### 2 克隆代码 ```bash cd ~ git clone https://github.com/LuminovaBeta/my_blog_v1.git my_blog ``` 如果github连接慢,直接告诉 Git 使用代理,防止以后直连出问题,克隆完成后,取消代理 ```Bash cd ~ git config --global http.proxy http://192.168.1.101:7890 git config --global https.proxy http://192.168.1.101:7890 git clone https://github.com/LuminovaBeta/my_blog_v1.git my_blog git config --global --unset http.proxy git config --global --unset https.proxy ``` ## 二、配置虚拟环境和系统依赖 首先由于虚拟环境必须前提是电脑自己带的环境,因此需要装以下根项目的版本比较接近的python版本,如果版本差距比较大,建议装一下版本差不多的例如我的项目是`Python 3.12.4`,但是我的系统是 `Python 3.8.1` 这个时候就需要在保留系统自带 Python 3.8 的同时,安装你指定的 Python 3.12.4,因此需要使用 源码编译安装 (Source Compilation) 并配合 altinstall 命令。 源码构建官网教程地址 ```url https://devguide.python.org/getting-started/setup-building/#unix ``` 1. 安装编译依赖 Python 编译需要很多底层库的支持(比如 SSL 加密、SQLite 数据库、解压支持等)。如果这一步缺了东西,装出来的 Python 会出现“缺胳膊少腿”的情况(比如 pip 用不了,或者连不上 HTTPS)。 ```bash sudo apt update sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev liblzma-dev tk-dev uuid-dev libmysqlclient-dev ``` 2. 下载Python源码 ```bash cd ~ wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz tar -xvf Python-3.12.4.tgz cd Python-3.12.4 ``` 3. 配置与编译 配置环境(开启优化): ```bash ./configure --enable-optimizations --with-lto ``` 编译 ```bash make -j4 ``` 安装必须使用 altinstall,绝对不要用 install ```bash sudo make altinstall ``` 验证安装 ```bash python3 --version # 输出应该是原版: Python 3.8.10 python3.12 --version # 输出应该是: Python 3.12.4 ``` 4. 为你的项目创建**虚拟**环境 首先确保没有旧的虚拟环境 创建新的环境: ```bash /usr/local/bin/python3.12 -m venv venv ``` 激活环境: ```bash source venv/bin/activate ``` 5. 进入虚拟环境并安装依赖 根据 `requirements.txt` 文件安装依赖 ```bash sudo apt update pip install -r requirements.txt ``` ![安装完成检查](/media/uploads/articles_image/202601/20260127_025201_image-1.png "安装完成") ## 三、传数据库 由于本项目并没有用django默认的db.sqlite3,用的是MySQL 本次迁移windows上用的是 MySQL 8.0 香橙派上用的版本是 MariaDB 然后进行数据库传输 MySQL 是一个服务,不能直接把 Windows 里的文件夹复制到香橙派。你必须在香橙派上重新搭建一套一样的数据库环境,然后把数据导入进去。 ### 1. 在香橙派上安装 MySQL 服务 #### 1.1 卸载旧的 MariaDB 检查版本: ```bash mysql --version ``` 这里我的输出是:(版本不合适) ```bash mysql Ver 15.1 Distrib 10.3.39-MariaDB, for debian-linux-gnu (aarch64) using readline 5.2 ``` 如果当前有比较老的版本,比如 `10.3.39-MariaDB` 的话建议先卸载 ```bash # 停止服务 sudo systemctl stop mariadb # 卸载软件 sudo apt purge mariadb-server mariadb-client mariadb-common -y sudo apt autoremove -y # 关键:删除旧数据目录(否则新版安装会冲突) # 注意:这会删除你之前尝试导入的所有数据 sudo rm -rf /var/lib/mysql sudo rm -rf /etc/mysql ``` #### 1.1 安装 MySQL 8.0 ##### 安装服务和开发库 ```bash cd ~ # 下载配置包 wget https://dev.mysql.com/get/mysql-apt-config_0.8.28-1_all.deb # 安装配置包 sudo dpkg -i mysql-apt-config_0.8.28-1_all.deb ``` 执行后会弹出蓝色菜单,直接选 OK(默认就是 MySQL 8.0)即可。 ![安装mysql](/media/uploads/articles_image/202601/20260127_025258_image-2.png "安装mysql") ![安装mysql](/media/uploads/articles_image/202601/20260127_025319_image-3.png "安装mysql") ##### 正式安装 ```bash sudo apt update sudo apt install mysql-server -y ``` 如果刚刚删除过数据库这个时候直接运行安装命令可能会报错`mysqld: Can't read dir of '/etc/mysql/conf.d/'` 这是因为刚刚把整个 `/etc/mysql` 目录删除了,需要先创建 `sudo mkdir -p /etc/mysql/conf.d/`, `sudo mkdir -p /etc/mysql/mysql.conf.d/` 启动并进行安全配置 ##### 检查 版本输出: ```bash orangepi@orangepi5pro:~$ mysql --version mysql Ver 8.0.42-0ubuntu0.20.04.1 for Linux on aarch64 ((Ubuntu)) ``` 后台是否启动? ```bash sudo systemctl status mysql ``` #### 1.2 创建用户和数据库 创建root用户: ```bash sudo mysql -u root -p ``` ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'my_blog', # 数据库的名字 'USER': 'root', # 用户名 'PASSWORD': 'root', # 密码 'HOST': '127.0.0.1',# 地址 'PORT': 3306 # 端口 } } ``` 根据在 `setting.py` 创建一个不需要root权限登录的用户: ```SQL -- 创建用户: 这里的 'my_blog_user' 和 'password' 对应你 settings.py 里的配置 CREATE USER 'my_blog_user'@'localhost' IDENTIFIED BY 'password'; -- 授予权限 GRANT ALL PRIVILEGES ON my_blog.* TO 'my_blog_user'@'localhost'; -- 刷新权限 FLUSH PRIVILEGES; ``` 创建数据库: 首先需要先进入数据库 ```sql show databases; create database my_blog; ``` ### 2.数据库迁移 #### 数据库版本兼容问题(弃) 在之前的版本兼容问题参考,可以忽略这一部分 在windows上用的是 MySQL 8.0 而香橙派上用的版本是 MariaDB 之间存在版本兼容性问题,并且如果你的数据库比较老的话,django 建表的命令会报错无法使用 主要是直接生成的 `.sql` 文件里面还包括很多SQL 的语法,这些 SQL 语法差异会导致迁移数据库报错,因此先用django自带的建表命令 `python manage.py migrate` 创建数据结构,再只导出“数据”,不导出“结构” 创建数据结构: ```bash python manage.py makemigrations python manage.py migrate ``` ##### 问题与解决-加密验证驱动库安装 ```bash python manage.py makemigrations python manage.py migrate ``` 如果使用上面创建数据表的命令,报错: ```bash # 报错信息 RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods ``` 解决(用清华园比较快): ```bash pip install cryptography -i https://pypi.tuna.tsinghua.edu.cn/simple ``` #### 2.1 数据库导出 在原服务器上导出(Dump)仅导出数据文件,使用 mysqldump 工具将数据库打包成文件: ```bash # 2. 使用 -r 确保编码是 UTF-8,避免之前的 \0 乱码报错 mysqldump -u root -p --databases my_blog -r my_blog_full.sql ``` #### 2.2 数据库导入 按照 `settings.py` 中的配置 上面已经在服务器上创建一个数据库,运行: ```bash # my_blog_db 为真实数据库名称 sudo mysql -u root -p my_blog_db < blog_data_only.sql sudo mysql -u root -p < /home/orangepi/my_blog_full.sql ``` #### 2.3 数据库检查 查看是否成功创建,运行:`use my_blog;`, `SHOW tables;` 看看输出全不全,可以根原数据库对比 ![数据库迁移完成](/media/uploads/articles_image/202601/20260127_025348_image-4.png "数据库迁移完成") ## 四、运行项目 ### 终端运行 #### 仅在本机访问 ```bash python manage.py runserver ``` - 默认端口:127.0.0.1:8000。 #### 允许局域网访问 ```bash python manage.py runserver 0.0.0.0:8000 ``` - 0.0.0.0:告诉 Django 监听香橙派所有的网络接口。 - :8000:手动指定端口号。如果你想用别的端口(比如 8080),直接修改这个数字即可。 这个时候你可以尝试访问,但如果没有配置django项目应该会报错 ##### 允许ip访问 打开 settings.py 找到 `ALLOWED_HOSTS` 这一行 原来的内容: ```python ALLOWED_HOSTS = [] ``` 修改后的内容: ```python ALLOWED_HOSTS = ['*'] ``` ### 服务运行 ```bash sudo vim /etc/systemd/system/my_blog.service ``` 复制下面的内容进去 ``` [Unit] Description=Django My Blog Service After=network.target mysql.service [Service] # 你的香橙派用户名 User=orangepi # 项目根目录路径 WorkingDirectory=/home/orangepi/my_blog # 使用虚拟环境里的 python 运行项目 ExecStart=/home/orangepi/my_blog/venv/bin/python /home/orangepi/my_blog/manage.py runserver 0.0.0.0:8000 # 崩溃后 5 秒自动重启 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target ``` 启动服务: ```bash # 1. 重新加载系统配置,让它识别新写的服务 sudo systemctl daemon-reload # 2. 启动博客服务 sudo systemctl start my_blog # 3. 设置开机自启 sudo systemctl enable my_blog # 4. 查看运行状态 sudo systemctl status my_blog ``` 重启服务 `sudo systemctl daemon-reload`,`sudo systemctl restart my_blog` ## 五、用户 media 目录迁移 可以直接用命令 `scp` 完整的传过去
    35 666 6324 2026-01-27
  • 在 windows 上安装 MySQL
    # 在 windows 上安装 MySQL ## 一、安装 从官网网址下载安装包:进入后找到MSI下的可以下载的文件,找到比较大的版本,MySQL的32位版本是支持64位电脑的 安装下载的网址 ```url https://dev.mysql.com/downloads/installer/ ``` 然后下载后安装,安装界面会有很多配置选项 Choosing a Setup Type (choosing a setup type) :选择 Full Accounts and Roles (账户与角色) : 配置密码 其他的选项基本上不用配置 Connect To Server:测试能否连接数据库,建议配置一下 <img src="/media/uploads/articles_image/202601/20260129_025144_安装界面4.png" width=700px alt="连接服务器"> 后面的一直next即可,安装完成后会弹出两个界面,一个是mysql shell和mysql workbenck <img src="/media/uploads/articles_image/202601/20260129_025442_安装完成1.png" width=700px alt="mysql shell"> <img src="/media/uploads/articles_image/202601/20260129_025537_安装完成2.png" width=700px alt="mysql workbenck"> ## 二、配置环境变量 一般默认会安装到下面的路径下,找到这个路径,并且进入下面这个路径下的bin目录下 ```powershell C:\Program Files\MySQL\MySQL Server 8.0\bin ``` 找到以后复制这个bin的路径,新建环境变量并添加,然后在终端测试 ## 三、查看并创建数据库 - 进入mysql ```poewrShell mysql -uroot -proot ``` - 列出当前有的数据库 ```sql show databases; ``` - 创建新的数据库 ```sql create database my_blog; ```
    2 666 607 2026-01-29