Appearance
部署
请直接将
BuildAdmin当作普通的Thinkphp站点进行部署,部署之前于开发环境点击后台右上角WEB终端中的重新发布即可正常访问,以下是关于部署的更多细节。
后台部署
- 推荐使用
git管理代码,部署之前请检查根目录/.gitignore文件,其中的注释说明了部署时应该删除和可以删除的忽略规则(请注意:勿将/modules文件夹上传至公开仓库) - 建议删除
/install目录 - 线上环境可以选择不上传
/web目录,前端每次重新发布后,只将/public/assets 目录和/public/index.html 文件,同步到服务器上即可 - 使用
Nginx、Apache、Workerman 模块等服务器软件/方式运行站点,而不再是php think run - 站点的根目录配置为
buildadmin的项目目录,站点运行目录为buildadmin/public,如无运行目录配置项,请直接将根目录配置为buildadmin/public - 配置 Thinkphp 的 URL重写规则
- 可以选择配置:隐藏index.html
- 本地与服务器的数据库同步,可以使用
Navicat的工具->数据同步、工具->结构同步实现
Web 工程独立部署
系统前后端分离,但部署默认不分离,若您需要单独部署 Web 端,可参考以下步骤:
- 修改
/web/.env.production文件中的线上环境接口地址VITE_AXIOS_BASE_URL - 请服务端开发者,于
/config/buildadmin.php配置文件内,允许前端静态站点域名的跨域请求 - 于
/web目录手动执行pnpm build命令,等待编译完成后,将dist文件夹的内容部署为静态站点即可
WebNuxt 工程部署
请转到 WebNuxt 工程部署文档
线上安全防范
站点上线,就意味着任何人都可以访问站点,其中自然包括黑客,部署的安全是最基本的安全防范。
一、自定义后台入口
BuildAdmin 从 v2.0+ 起,已经支持了自定义后台入口,建议在开发环境阶段就自定义后台入口,并在入口可能暴露时立即对入口进行修改。
二、禁用危险函数
建议线上环境禁用不利于安全的函数,比如:eval、exec、shell_exec、system
三、关闭调试
参考 开启调试文档,反向操作即可
四、目录权限
bash
# 修改目录所有者为 www 用户
sudo chown www:www /www/wwwroot/example.com -R
# 整个站点根目录权限改为 555
sudo chmod 555 /www/wwwroot/example.com -R
# 以下两个目录为所有者增加写权限
sudo chmod u+w /www/wwwroot/example.com/runtime -R
sudo chmod u+w /www/wwwroot/example.com/public/storage -R五、防止浏览器自动预览执行脚本
bash
location ~ .*\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$ {
add_header Content-Disposition attachment;
}bash
# public/.htaccess
<FilesMatch "\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$">
ForceType application/octet-stream
Header set Content-Disposition attachment
</FilesMatch>六、禁止上传目录执行代码
bash
server
{
listen 80;
server_name example.com;
index index.html index.php index.htm default.php default.htm default.html;
root /www/wwwroot/example.com/public;
# 禁止上传存储目录执行 php 代码(它应该被添加在下方的 PHP 引用配置之前) - START
location ~ ^/storage/.*\.(php|php5|jsp)$ {
deny all;
}
# 禁止上传存储目录执行 php 代码 - END
include enable-php-80.conf; # PHP 引用配置
}bash
<Directory "/www/wwwroot/example.com/public/storage">
<Files ~ ".php">
Order allow,deny
Deny from all
</Files>
</Directory>七、XSS攻击防范
虽然系统是前后端分离的,天然对 XSS 代码有更强的防范作用,但仍然请您注意:
- 前端尽量不要使用
v-html - 过滤所有用户输入,参考这里
八、CSRF攻击和会话劫持防范
后台本身不使用 Cookie 和 Session,建议你继续保持不使用它们,如果要使用 Cookie,请开启 httponly
九、创建 HTTPS 服务
笔者普通电信宽带,在请求百度时共经历了 14 个路由器,期间请求内容随时可能被拦截,若百度启用了 https,那么就算请求被拦截,我请求的参数等数据也不可能被破译。
