宝塔部署(Django4+Vue-Cli5+uwsgi+Nginx+Mysql)超详细

1. 打包vue-cli5

1.1 配置vue3

如果不配置的话,打包出来运行是空白的。下面跟着配置配置

在router目录下的index.js里

image-20230110080127913

导入:createWebHashHistory

然后拉到最下面

image-20230110080204134

history: createWebHashHistory(process.env.BASE_URL),

然后到vue.config.js配置这4句

image-20230110080309324

assetsDir: 'static',
publicPath: './',
outputDir: 'dist',
indexPath:'index.html',

然后配置代理

image-20230110080439530

配置完成后,现在就可以打包了

npm run build

打包完成后目录有个dist文件,就是我们打包好了的文件,复制到桌面,然后访问index.html文件。能访问就是正常的。然后下一步整合到Django里!

2.整合到Django

2.1 整合

复制dist文件夹到Django,注意!这里与APP同级

image-20230110081810873

然后配置sttings.py

image-20230110081909854

'DIRS': ['./dist', ]

继续配置

image-20230110082011491

接着配置

image-20230110082041903

STATIC_ROOT = os.path.join(BASE_DIR, "static")

然后配置主路由urls

image-20230110082126550

image-20230110082156499

引入TemplateView

from django.views.generic import TemplateView

配置路由

path('', TemplateView.as_view(template_name='index.html')),

然后运行项目

python manage.py runserver

image-20230110082417560

运行成功后访问,看看是否正常

正常接着往下走。生成安装依赖。在pycharm终端执行

pip freeze > requirements.txt

生成完成后我们在目录就能看到requirements.txt文件

image-20230110082738342

然后打开DjangoProjece文件夹,压缩成压缩包

image-20230110084155408

然后全选,添加压缩文件。

image-20230110084234155

OK,然后我们去宝塔部署项目了。能走到这一步没有bug说明你是个极度幸运的人。

3.部署到宝塔

3.1安装宝塔环境

Nginx,Mysql,Python项目管理器是我们需要的环境。 重要的事情说三遍!!

注意!!! 安装Python项目管理器1.9版本

注意!!! 安装Python项目管理器1.9版本

注意!!! 安装Python项目管理器1.9版本

image-20230110083952836

安装好了我们去创建站点

image-20230110092626296

创建完成后我们进入站点

image-20230110084647404

删除这两个,然后上传我们打包好的文件

image-20230110084740892

解压文件

image-20230110084805303

3.2 配置uwsgi

然后我们新建一个名为uwsgi.ini的文件

image-20230110084854575

image-20230110084907372

然后点击进去编辑

image-20230110085156418

#添加配置选择
[uwsgi]
#配置和nginx连接的socket连接
socket=127.0.0.1:9888
#配置项目路径,项目的所在目录
chdir=/www/wwwroot/www.yunjiexi123.top/
#配置wsgi接口模块文件路径,也就是wsgi.py这个文件所在的目录
wsgi-file= djangoProject/wsgi.py
#配置启动的进程数
processes=4
#配置每个进程的线程数
threads=2
#配置启动管理主进程
master=True
#配置存放主进程的进程号文件
pidfile=uwsgi.pid
#配置uwsgi日志记录
daemonize=uwsgi_01.log

配置uwsgi,主要修改的两个地方chdir,wsgi-file,其他根据需要自己配置,记住你填写的socket端口。配置好了后就ctrl+s保存

3.3 添加项目

打开Python项目管理器,首页没有就去软件商店点已安装–设置

image-20230110085450171

然后我们安装Python版本,版本多少根据自己需要安装

image-20230110085546448

安装好了后我们点项目管理—>添加项目

image-20230110085841352

添加项目路劲

image-20230110090041233

选择框架和启动方式

image-20230110090251877

启动文件夹就选我们项目下最开始创建的uwsgi.ini文件,这里有个bug,看不见,你选完了看路劲对不对就行了,有时候你选择的时候就不见了,你就重新去项目目录下重新创建配置一遍!

image-20230110090505305

检查路劲

image-20230110090623716

端口天写我们在uwsgi.ini里配置的。

image-20230110090700620

image-20230110090716171

来个完整图

image-20230110090910995

点击确定后,我们回到站点修改setting.py。

image-20230110091052272

修改DEBUG和ALLOWED_HOSTS

image-20230110091222104

然后我们修改数据库,没有自己新建一个

image-20230110091409120

回到Stting.py修改数据库连接

image-20230110091716262

3.4 配置Nginx

image-20230110091829394

image-20230110092129209

然后随便找个地方

image-20230110092257704

location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9888; #端口要和uwsgi里配置的一样
uwsgi_param UWSGI_SCRIPT djangoProject2.wsgi; #wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /www/wwwroot/www.yunjiexi123.top/; #项目路径
}
location /static/ {
alias /www/wwwroot/www.yunjiexi123.top/static/; #静态资源路径
}

3.5 导出导入Mysql数据库

image-20230110095006185

导出到桌面后我们去mysql数据库里导入数据

现在我们就可以验收成果啦!

宝塔部署Django遇到的问题

1. 访问Internal Server Error

在Python项目管理器了。找到项目,点击模块,不想在这里配置的话也可以进入虚拟环境安装。

检查模块是否完整

image-20230110093037022

我们发现,宝塔有时候BUG并不会给你安装模块,你自己在上面搜索安装!注意还有一个BUG就是模块名称,一定要小写。我安装PyMysql就会安装失败。输入pymysql才能成功。

image-20230110093205551

需要安装什么模块你自己去你的requirements.txt里看

2. 访问项目504 Gateway Time-out

第一种办法,重启项目

image-20230110093629704

重启后还是不行,参考其他博主的解决方式

解决办法

3. 样式丢失

image-20230110094059271

虚拟环境名

image-20230110094130559

然后我们打开终端

image-20230110094154220

cd 到项目目录下

cd /www/wwwroot/www.yunjiexi123.top

然后,激活虚拟环境。

source mydjango_venv/bin/activate

image-20230110094503704

这样我们就激活了虚拟环境,然后我们收集静态资源

image-20230110094552203

python manage.py collectstatic

image-20230110094645923

大功告成!

4. 关于数据库导入失败的问题

image-20230110095228314

我们宝塔mysql版本是5.7.自己使用的版本是8.0或者5.7以上。排序规则是utf8mb4,而5.7版本是utf8的排序规则,所以我们就需要去修改导出的数据库。

打开数据库文件。全局替换

  • utf8mb4替换为utf8

  • utf8mb4_0900_ai_ci 替换为 utf8_general_ci

  • utf8_0900_ai_ci 替换为 utf8_general_ci

  • utf8_croatian_ci替换为utf8_general_ci

  • utf8mb4_general_ci替换为utf8_general_ci

  • utf8mb4 替换为 utf8

    我这里就用pycharm替换了。pycharm的快捷键是ctrl+r(唱跳rap加R)

image-20230110100042818

image-20230110100223362

修改完成后我们最好进入phpMyAdmin 去导入,看看是否添加数据进去了

image-20230110100356560

image-20230110100451682

然后拉到最下面,点击导入

image-20230110100522370

image-20230110100541230
OK,这里可以看到我们已经成功的导入数据啦。

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是详细的步骤: 1. 首先,安装Docker和Docker Compose。可以在Docker官网上找到适合您操作系统的安装包。 2. 创建项目目录,并在其中创建以下文件和文件夹: - `docker-compose.yml`: Docker Compose配置文件 - `Dockerfile`: Django应用程序的Dockerfile - `requirements.txt`: Django应用程序的依赖项列表 - `app/`: Django应用程序的代码 - `uwsgi.ini`: uWSGI服务器配置文件 3. 编写Dockerfile文件,以构建Django应用程序的Docker镜像。以下是一个示例Dockerfile: ``` # 使用Python 3.8作为基础镜像 FROM python:3.8 # 设置工作目录 WORKDIR /app # 将当前目录中的文件复制到容器中的/app目录下 COPY . /app # 安装应用程序依赖项 RUN pip install -r requirements.txt # 设置环境变量 ENV DJANGO_SETTINGS_MODULE=myproject.settings.production # 运行uWSGI服务器 CMD ["uwsgi", "--ini", "/app/uwsgi.ini"] ``` 4. 编写uwsgi.ini文件,以配置uWSGI服务器。以下是一个示例uwsgi.ini: ``` [uwsgi] http = :8000 chdir = /app module = myproject.wsgi:application master = true processes = 2 threads = 2 vacuum = true ``` 5. 编写docker-compose.yml文件,以定义Docker Compose服务。以下是一个示例docker-compose.yml: ``` version: '3' services: web: build: . command: uwsgi --ini /app/uwsgi.ini volumes: - .:/app ports: - "8000:8000" depends_on: - db - redis db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: myproject volumes: - db_data:/var/lib/mysql redis: image: redis:latest volumes: db_data: ``` 6. 运行Docker Compose服务: ``` $ docker-compose up ``` 7. 访问http://localhost:8000,即可查看Django应用程序。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值