Skip to content

部署

请直接将 BuildAdmin 当作普通的 Thinkphp 站点进行部署,部署之前于开发环境点击后台右上角 WEB终端 中的 重新发布 即可正常访问,以下是关于部署的更多细节。

后台部署

  1. 推荐使用 git 管理代码,部署之前请检查 根目录/.gitignore 文件,其中的注释说明了部署时 应该删除可以删除 的忽略规则(请注意:勿将 /modules 文件夹上传至公开仓库)
  2. 建议删除 /install 目录
  3. 线上环境可以选择不上传 /web 目录,前端每次 重新发布 后,只将 /public/assets 目录/public/index.html 文件,同步到服务器上即可
  4. 使用 Nginx、Apache、Workerman 模块 等服务器软件/方式运行站点,而不再是 php think run
  5. 站点的根目录配置为 buildadmin 的项目目录,站点运行目录为 buildadmin/public,如无运行目录配置项,请直接将根目录配置为 buildadmin/public
  6. 配置 Thinkphp 的 URL重写规则
  7. 可以选择配置:隐藏index.html
  8. 本地与服务器的数据库同步,可以使用 Navicat工具->数据同步工具->结构同步 实现

Web 工程独立部署

系统前后端分离,但部署默认不分离,若您需要单独部署 Web 端,请于 /web目录 手动执行 pnpm build,将 dist 文件夹的内容部署为静态站点即可,请注意需要于 /config/buildadmin.php 配置文件内,允许该静态站点的域名允许跨域请求。

WebNuxt 工程部署

请转到 WebNuxt 工程部署文档

线上安全防范

站点上线,就意味着任何人都可以访问站点,其中自然包括黑客,部署的安全是最基本的安全防范。

一、自定义后台入口

BuildAdminv2.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 代码有更强的防范作用,但任然请您注意:

  1. 前端尽量不要使用 v-html
  2. 过滤所有用户输入,参考这里

八、CSRF攻击和会话劫持防范

后台本身不使用 CookieSession,建议你继续保持不使用它们,如果要使用 Cookie,请开启 httponly

九、创建 HTTPS 服务

笔者普通电信宽带,在请求百度时共经历了 14 个路由器,期间请求内容随时可能被拦截,若百度启用了 https,那么就算请求被拦截,我请求的参数等数据也不可能被破译。