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目录
手动执行 pnpm build
,将 dist
文件夹的内容部署为静态站点即可,请注意需要于 /config/buildadmin.php
配置文件内,允许该静态站点的域名允许跨域请求。
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
,那么就算请求被拦截,我请求的参数等数据也不可能被破译。