## 参考地址 https://docs.djangoproject.com/zh-hans/4.0/intro/tutorial01/ https://inner.wei-group.net/DeepBIO/#/ ## 项目说明 ### 安装 django pip3 install django ps.可能需要配置环境变量,python export PATH=/Users/didi/Library/Python/3.8/bin:$HOME/bin:$PATH ### 创建 django 项目 django-admin startproject admin_site ### 初始化配置 python3 manage.py migrate ### 创建 user 子模块 python3 manage.py startapp user ### 安装mysql 使用说明:https://juejin.cn/post/6844904070117851143 docker run -p 3306:3306 --name mysql -v /Users/didi/code/python_project/python_841507/mysql_db:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 -d c20987f18b13 docker run -p 3306:3306 --name mysql -v /Users/honghaitao/code/python_93040206/mysql_db:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 -d c20987f18b13 ### 使用 创建远程访问用户 CREATE USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 分配权限给用户 GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%'; ### 安装 mysqlclient 安装说明:https://pypi.org/project/mysqlclient/ 使用说明:https://www.liujiangblog.com/course/django/165 我选择用mysql-clint代替 pip3 install mysqlclient 配置Django的settings.py ### 注意网络和权限问题 由于各种各样的原因,很多新手在第一次部署MySQL服务器的时候,总是会出现问题。下面将一些排查手段列出: - 确保你的Linux发行版没有给你挖坑,不要选小众版本 - 确保MySQL的版本合格,越新越好 - 确保Django服务器主机能访问MySQL主机 - 查看防火墙、端口、用户权限、虚拟机桥接和NAT - 通过ssh、ping等一切手段验证网络是畅通的 - 确保mysqlclient库是最新可用的 - 确保mysqlclient被安装在了正确的虚拟环境中 - 通过navicat确保Mysql服务启动并正常工作 - 确保mysite数据库被正确安装了 - 确保mysite数据库对当前Django服务器IP发出的,以数据库用户名登录的用户具有正确的权限 - 确保数据库用户名和密码正确 - 确保你使用的数据库用户对我们创建的mysqite数据库有读写权限 - 确保数据库是utf-8模式 总之: - 服务可用 - 网络可达 - 权限满足 - 模式正确 ## 部署 参考地址:https://www.dusaiphoto.com/article/71/ ssl授权证书(free):https://certbot.eff.org/#ubuntutyakkety-nginx ### 生产环境依赖 - mysql:latest - django:4.x - nginx:latest ### nginx 配置 ``` server { # listen [::]:80; server_name www.suzuran.fun; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://127.0.0.1:8000; # 转发规则 proxy_set_header Host $proxy_host; # 修改转发请求头,让8080端口的应用可以受到真实的请求 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } ``` ### 项目依赖 #### 配置依赖项 pip freeze > requirements.txt #### 省级pip3 pip3 install --upgrade pip #### 安装库 pip3 install -r requirements.txt - 安装依赖过程中会提示版本不对,就把版本号改一下 - 安装mysqlclient会保一些问题:安装mysqlclient提示mysql_config not found问题:https://www.cnblogs.com/yoyoketang/p/12131101.html #### 收集静态资源 python3 manage.py collectstatic #### 数据库迁移 python3 manage.py migrate ### 启动(保存后台运行) gunicorn admin_site.wsgi:application -D