当本地项目能够跑通后,将项目部署进服务器IIS需要的步骤
前端打包
一、首先更正你的前端项目存储的后端URL地址,比如:
import { defineStore} from 'pinia'
export const baseUrl =
{axios_base_url:'http://192.168.0.1:9100/'}
这里是开发环境的后端URL,替换为服务器后端IP及端口,比如:
import { defineStore} from 'pinia'
export const baseUrl =
{axios_base_url:'http://172.168.0.1:9000/'}
如果IIS服务器还未配置,这里下面所有的前端打包操作包括第一项先不管,先配置完IIS后在继续。
二、修改前端根目录下的vite.config.ts文件
修改如下:
export default defineConfig({
plugins: [vue()],
base:'./',
server:{
host:'0.0.0.0',
}
})
base参数会影响打包后生成的index.html中对静态文件的访问路径,比如index.html文件内容如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/jpg" href="./assets/www-BVPKxQIJ.jpg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>1111</title>
<script type="module" crossorigin src="./assets/index-BPbgCyRu.js"></script>
<link rel="stylesheet" crossorigin href="./assets/index-y7qLhSWx.css">
</head>
<body>
<div id="app"></div>
</body>
</html>
所有的静态文件会在当前文件夹的assets中寻找,如果vite.config.ts配置错误则打包后部署上服务器会发生找不到静态文件的错误。
三、最后终端使用npm run build 将前端项目打包,会在前端根目录下生成dist文件夹,该文件夹下有子文件夹assets和一个index.html和vite的图标,检查无缺失则前端项目打包完成。
后端配置
四、后端django项目需要注意的是settings.py中数据库(mysql)配置,如果数据库用户非root用户,在服务器中需要使用管理员root登陆mysql后对目标数据库用户授予目标数据库中所有表的权限,无权限的话使用数据迁移时会报错,添加权限如下:
GRANT ALL PRIVILEGES ON mydb.* TO 'user'@'localhost';
这里的mydb为目标数据库名,'user'为数据库用户名
之后刷新权限
FLUSH PRIVILEGES;
执行成功后再进行数据迁移不会提示无权限而失败。
五、如项目使用的是django自带的后台,需要使用python manage.py collectstatic收集静态文件,在这之前,需要查看你的settings.py中关于静态文件的相关配置
STATIC_ROOT = os.path.join(BASE_DIR, 'frontend')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'frontend/assets')]
这里的STATIC_ROOT告诉Django执行python manage.py collectstatic后收集的文件放在哪里,当前执行会将Django自带的后台样式放在设置的frontend的admin文件夹中。
这里STATICFILES_DIRS是告诉Django额外的静态文件从哪里来,在服务器中会将前端打包的dist文件中的所有文件(一个assets文件夹和一个index.html)替换到frontend文件夹下,这里的配置就告诉Django额外的静态文件就在项目目录frontend/assets下。
六、执行python manage.py collectstatic后,将前端打包的dist文件夹下的内容复制到Django项目frontend文件夹下,这时frontend文件夹有assets文件夹和admin文件夹和一个index.html,这时如果IIS中对该网站添加的虚拟目录是assets文件夹的目录,则需要把admin文件夹复制粘贴到assets文件夹中,此时Django后台样式正常访问。
七、在服务器IIS网站配置完成后,将配置好的Django项目(前端打包文件已在frontend文件夹下)传到服务器,之后在python的Scripts目录下pip安装wfastcgi模块,在你python安装目录如Python\\Python38-64\\.venv\\Lib\\site-packages\\wfastcgi.py中找到wfastcgi.py,
将wfastcgi文件复制到Django项目根目录下,同时在项目根目录新建文件web.config(类型为CONFIG文件),内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="StaticFile" />
<add name="StaticFile" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\\Users\\..\\Python\\Python38-64\\.venv\\Scripts\\python38.exe|"D:\\Program Files\\product\\wfastcgi.py"" resourceType="Unspecified" requireAccess="Script" />
</handlers>
<httpErrors errorMode="Detailed" />
<directoryBrowse enabled="false" />
</system.webServer>
<appSettings>
<add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
<add key="PYTHONPATH" value="" />
<add key="DJANGO_SETTINGS_MODULE" value="product.settings" />
</appSettings>
<system.web>
<identity impersonate="true" />
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
</configuration>
这里的scriptProcessor第一个路径是你的python解释器路径,第二个路径为项目文件中wfastcgi的路径,所有的product为你的项目名,自行替换
之后再于frontend/assets下添加web.config文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<!– this configuration overrides the FastCGI handler to let IIS serve the static files –>
<handlers>
<clear/>
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
</handlers>
</system.webServer>
</configuration>
此时再于项目根目录(有manage.py的目录)地址栏输入cmd,python manage.py migrate
迁移成功后项目就部署成功了
评论前必须登录!
注册