TUTORIAL

宝塔面板(BT Panel)从零到上线完全教程

返回教程中心
  • 共 78 步
  • 入门
  • 30

宝塔面板(BT Panel)从零到上线完全教程

适用版本:宝塔 Linux 面板 9.x(LTS 稳定版 9.0.0 / 正式版 9.3.0+)
最后更新:2026-10
面向读者:没有运维基础,但想把网站真正跑起来的同学

一句话概括:宝塔面板把"敲命令行配服务器"变成了"点鼠标配服务器"。
安装环境、建站点、配数据库、申请 HTTPS 证书、定时备份,全在网页里点。


STEPS

操作步骤

照着做即可。做完一步就勾上,勾过的步骤会变灰,下次回来还是这个进度。

0 / 78 步已完成

  1. 一、先搞清楚:宝塔是什么、能干什么二、准备工作三、安装宝塔面板四、第一次登录与环境搭建(LNMP)五、面板界面导览六、核心实战:把第一个网站跑起来七、数据库管理八、文件管理与 FTP九、SSL 证书与 HTTPS十、备份与计划任务十一、进阶玩法十二、安全加固(必做)十三、性能优化十四、常用 bt 命令行十五、故障排查速查表十六、一份上线检查清单

    1. 一台裸的 Linux 服务器,要跑一个 WordPress 站点,传统做法是:
      # 传统做法(劝退现场)
      yum install nginx # 装 Web 服务器
      vi /etc/nginx/conf.d/site.conf # 手写虚拟主机配置
      yum install mysql-server # 装数据库
      mysql_secure_installation # 初始化数据库
      CREATE DATABASE wpdb; # 建库
      CREATE USER 'wpuser'@'localhost'; # 建用户 + 授权
      yum install php php-fpm php-mysqlnd ... # 装 PHP 和一堆扩展
      vi /etc/php-fpm.d/www.conf # 调 PHP-FPM
      certbot --nginx -d example.com # 申请证书
      crontab -e # 写定时备份

      宝塔把上面这一整套变成:软件商店点三下装环境 → 网站页点"添加站点" → SSL 页点"申请" → 计划任务页点"添加任务"。

    2. 能干说明一键安装运行环境Nginx/Apache、MySQL/MariaDB/PostgreSQL、PHP 5.6~8.x 多版本共存、Redis、Memcached、Node.js、Java(Tomcat)、Python 项目管理器可视化建站添加站点自动生成 Nginx 配置、自动建目录、可选自动建库建 FTP免费 SSLLet's Encrypt / LiteSSL 一键申请,90 天自动续签文件管理网页版上传、解压、编辑、改权限,相当于一个在线资源管理器数据库管理建库建用户、phpMyAdmin 网页管理、一键导入导出定时备份网站文件 + 数据库 → 本地 / FTP / 阿里云 OSS / 腾讯云 COS / 七牛云监控与日志CPU、内存、磁盘、流量实时图表;站点日志、错误日志一键查看安全管理系统防火墙、SSH 管理、面板动态口令、防 CC、目录保护
      不能指望它做的:
      它不帮你写代码、不帮你备案、不帮你买域名。它不会自动让你的网站变快 —— 性能还得靠你调配置和代码。它不会自动让你变安全 —— 装完不加固,暴露在公网的面板是重点被打对象,见 第十二章。

    3. 版本定位谁用免费版基础运维功能齐全个人、学习、小站点 —— 本教程以免费版为准专业版增加企业级插件(防篡改、负载均衡等)中小企业企业版多服务器集中管理、工单支持运维团队
      关键结论:建站常用的功能,免费版全都有。 学习阶段不要花钱。

    4. Linux 面板Windows 面板运行环境Nginx/Apache + MySQL + PHPIIS + SQL Server + ASP.NET适用PHP 项目(WordPress、Typecho、Laravel、ThinkPHP)、Node/Python/JavaASP / ASP.NET / .NET Core推荐度⭐⭐⭐⭐⭐ 服务器首选只在必须跑 .NET Framework 老项目时选
      除非你的项目是 ASP.NET,否则一律选 Linux 面板。 本教程讲 Linux 版。

    1. 东西说明大概成本一台服务器云服务器(ECS / 轻量应用服务器 / CVM)或本地虚拟机学生机 ¥10/月 左右一个域名(可选)国内服务器建站需要备案;测试阶段可以直接用 IP 访问¥30~60/年一个 SSH 工具Windows 用 FinalShell / Xshell / MobaXterm;macOS/Linux 直接用终端免费

    2. 场景CPU内存系统盘说明学习 / 单博客1 核1~2 GB40 GB最低 1 GB 内存,低于 1 GB 编译 PHP 容易失败多个小站2 核2~4 GB60 GB最常见配置生产 / 有流量2 核+4 GB+100 GB+MySQL 5.7+ 建议 ≥2 GB
      内存是硬门槛。 512 MB 的机器装 MySQL 8.0 基本必崩,老老实实用 MySQL 5.6/5.7 或 MariaDB。

    3. 宝塔官方支持(推荐这几个,别用冷门发行版):
      ✅ CentOS 7.x / Rocky Linux 8-9 / AlmaLinux —— 教程最多,坑最少✅ Ubuntu 20.04 / 22.04 / 24.04 LTS✅ Debian 10 / 11 / 12⚠️ CentOS 8 已停止维护,不要用⚠️ Ubuntu 非 LTS 版本不要用
      给新手的建议:装 Ubuntu 22.04 LTS 或 Rocky Linux 9。 CentOS 7 也已接近 EOL。

    4. 必须是纯净系统。 已经装过 Nginx / Apache / MySQL / PHP 的机器,装宝塔会冲突。
      → 新买的云服务器重装系统最省事。必须是 root 用户。 执行 whoami,输出不是 root 就先 sudo -i。必须放行端口。 云服务器有两道墙:云厂商安全组 + 系统/面板防火墙。两边都要开,缺一个就访问不了(这是新手第一大坑)。

    1. Windows 打开 FinalShell / Xshell,新建连接:
      主机:你的公网 IP(如 47.98.123.45)
      端口:22
      用户:root
      密码:购买时设置的(或重置后的)

      macOS / Linux 直接终端:
      ssh [email protected]

      看到 [root@xxx ~]# 就说明进去了。

    2. # Ubuntu / Debian
      apt update && apt upgrade -y
      apt install -y wget curl vim

      # CentOS / Rocky / AlmaLinux
      yum update -y
      yum install -y wget curl vim

      顺手把时区设对(时间不对会导致 SSL 证书申请失败、计划任务错乱):
      timedatectl set-timezone Asia/Shanghai
      date # 确认输出的是 CST 且时间正确

    3. 通用脚本(推荐,自动识别系统):
      url=https://download.bt.cn/install/install_lts.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O install_lts.sh $url;fi;bash install_lts.sh ed8484bec

      分系统脚本:
      # Ubuntu / Debian
      wget -O install.sh https://download.bt.cn/install/install_lts.sh && bash install.sh ed8484bec

      # CentOS / Rocky / AlmaLinux
      yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_lts.sh && bash install.sh ed8484bec

      上面装的是 LTS 稳定版 9.0.0。想装更新的正式版(9.3.0+),把脚本名换成
      https://download.bt.cn/install/installStable.sh 即可。生产环境建议 LTS。
      安装过程会问一句 Do you want to install Bt-Panel to the /www directory now?(y/n),输入 y 回车。
      耗时:3~15 分钟,取决于机器性能和网络。可以去倒杯水。

    4. 装完终端会打印:
      ==========================Congratulations!Installed successfully!==========================
      外网面板地址: http://47.98.123.45:8888/a1b2c3d4e5
      内网面板地址: http://10.0.0.5:8888/a1b2c3d4e5
      username: xxxxxxxx
      password: xxxxxxxx
      ==========================================================================================

      立刻复制到本地记事本保存。 三样东西缺一不可:
      项目说明外网面板地址IP + 端口 8888 + 随机安全入口(/a1b2c3d4e5 这一段)。入口路径丢了就进不去登录页,这是宝塔的防扫描机制username面板登录用户名password面板登录密码(随机生成)
      忘了怎么办? 回到 SSH 执行 bt default(或直接 bt → 输入 14),重新显示以上全部信息。

    5. 面板默认端口 8888。必须放行,否则浏览器打不开。
      第一步:云厂商安全组(控制台操作)
      云厂商位置阿里云ECS 控制台 → 安全组 → 配置规则 → 入方向添加腾讯云CVM 控制台 → 安全组 → 入站规则华为云 / 其他控制台找"安全组 / 防火墙"
      入方向放行(授权对象 0.0.0.0/0,后期可收紧):
      端口用途是否必须8888宝塔面板✅80HTTP 网站✅443HTTPS 网站✅22SSH✅888phpMyAdmin建议3306MySQL 远程❌ 默认不开,需要时再临时开
      第二步:系统防火墙
      # 如果用 firewalld(CentOS 系)
      firewall-cmd --permanent --add-port=8888/tcp
      firewall-cmd --permanent --add-port=80/tcp
      firewall-cmd --permanent --add-port=443/tcp
      firewall-cmd --reload

      # 如果用 ufw(Ubuntu 系)
      ufw allow 8888/tcp
      ufw allow 80/tcp
      ufw allow 443/tcp
      ufw reload

      装完宝塔后,面板自己的"安全 → 系统防火墙"里也能放行。建议统一在一处管理,避免规则打架。

    6. 访问 http://47.98.123.45:8888/a1b2c3d4e5,输入用户名密码 → 登录。
      首次登录会让你:
      绑定宝塔账号 —— 官网 bt.cn 注册一个,绑定后可以装部分插件、用手机 APP。可以跳过,但建议绑。选择环境套件 —— 见下一章。

    1. 套件组成怎么选LNMPLinux + Nginx + MySQL + PHP✅ 默认选这个。 高并发性能好,资源占用低LAMPLinux + Apache + MySQL + PHP需要 .htaccess 伪静态、老项目迁移时选
      新手直接选 LNMP,别纠结。
      版本搭配建议:
      组件推荐版本说明Nginx1.22 ~ 1.26稳定版即可MySQL5.7(内存 ≤2G)8.0(内存 ≥4G)8.0 吃内存;老程序(部分老 CMS)只兼容 5.xPHP8.1 / 8.2(新项目)7.4(老项目兼容)WordPress 最新已支持 8.x;ThinkPHP 5 老项目用 7.4phpMyAdmin4.9 / 5.2网页管理数据库用

    2. 方式 A:首次登录的推荐弹窗(最快)
      勾选 LNMP → 一键安装。
      方式 B:软件商店手动装(更可控)
      左侧「软件商店」→ 搜索组件 → 点「安装」。
      安装方式选"编译安装"还是"极速安装"?
      极速安装:用预编译包,几分钟完事,省时间。编译安装:源码现场编译,30 分钟~2 小时,但可以自定义扩展、性能略优。
      新手、低配机器一律选极速安装。 1 核 1G 的机器编译 PHP 会卡死或 OOM。

    3. Nginx(1~3 分钟)
      ↓
      MySQL(3~10 分钟,最慢)
      ↓
      PHP(5~20 分钟)
      ↓
      phpMyAdmin(1 分钟,依赖 PHP)

      软件商店里可以看到实时进度和日志。全部变绿"已安装"就成了。

    4. 网站程序经常需要额外扩展。位置:软件商店 → 已安装 → PHP-8.2 → 「安装扩展」。
      扩展用途建议opcachePHP 字节码缓存,提速明显✅ 强烈建议redis / memcached缓存站点用 Redis 缓存时装fileinfo文件类型识别✅ 很多 CMS 强制要求imagick / gd图片处理有图片上传/缩略图时装exif图片元信息相册类程序需要zip压缩包处理✅ 建议(在线解压/更新用)ionCube / sg11商业加密脚本解密用了加密的付费主题/插件才装swoole常驻内存框架Laravel Octane / Hyperf 才需要
      典型报错:"您的 PHP 似乎没有安装 fileinfo 扩展" → 装完扩展记得重启 PHP 服务才生效。

  2. ┌─────────────┬──────────────────────────────────────┐
    │ 首页/概览 │ CPU、内存、磁盘、流量图表;系统状态 │
    │ 网站 │ ★ 建站、站点设置、SSL、伪静态、日志 │
    │ FTP │ FTP 账号管理 │
    │ 数据库 │ ★ 建库、改密、phpMyAdmin、导入导出 │
    │ 文件 │ ★ 网页版文件管理器(上传/解压/编辑) │
    │ 计划任务 │ ★ 定时备份、定时脚本、释放内存 │
    │ 软件商店 │ ★ 装环境、装插件、一键部署 │
    │ 安全 │ 系统防火墙、SSH 管理、防 CC │
    │ 监控 │ 资源监控报表(需装插件) │
    │ 终端 │ 网页版 SSH(应急用) │
    │ 面板设置 │ ★ 改端口/用户名/密码/安全入口/SSL │
    └─────────────┴──────────────────────────────────────┘

    带 ★ 的是日常 90% 时间会用到的。
    几个高频入口:
    我想……去哪改面板密码 / 端口 / 安全入口面板设置看网站为什么 502网站 → 站点设置 → 错误日志;软件商店 → PHP → 服务状态上传网站代码文件 → /www/wwwroot/你的域名备份整站计划任务 → 添加任务重启服务软件商店 → 对应组件 → 重启(或首页快捷)
    默认目录结构(记住这几个,很有用):
    /www
    ├── wwwroot/ # 所有网站的代码都在这
    │ └── example.com/ # 单个站点根目录
    ├── wwwlogs/ # 站点访问日志、错误日志
    ├── backup/ # 备份文件默认存放处
    │ ├── site/ # 网站文件备份
    │ └── database/ # 数据库备份
    ├── server/ # 环境安装目录
    │ ├── nginx/
    │ ├── mysql/
    │ └── php/
    └── panel/ # 面板自身

  3. 以部署 WordPress 为例,其他 CMS(Typecho、Discuz、ThinkPHP 项目)流程完全一样。

    1. 域名解析 → 添加站点 → 上传程序 → 建数据库 → 网页安装向导 → 配伪静态 → 申请 SSL

    2. 去你的域名注册商后台(阿里云万网 / 腾讯云 DNSPod),添加一条记录:
      记录类型主机记录记录值[email protected](你的服务器 IP)Awww47.98.123.45
      生效时间:几分钟到几小时。验证方法(本地电脑执行):
      ping example.com
      nslookup example.com

      看到返回的 IP 是你的服务器,就生效了。
      没有域名怎么办? 添加站点时域名栏直接填服务器公网 IP,用 http://47.98.123.45 访问。
      但这样不能申请 SSL 证书(证书只发给域名)。

    3. 左侧「网站」→「添加站点」,填这几项:
      字段怎么填域名example.com 和 www.example.com 都填(换行分隔),一次绑定两个备注给自己看的,随便写根目录默认 /www/wwwroot/example.com,保持默认FTP选"创建",方便以后用 FileZilla 传文件(也可以不建,用面板文件管理器)数据库选"创建 MySQL",会自动建一个同名库。账号密码立刻复制保存数据库编码utf8mb4(支持 emoji,别选 utf8)PHP 版本选你装好的,如 PHP-82分类默认
      点「提交」。宝塔会自动:生成 Nginx 配置 → 建目录 → 建数据库 → 建 FTP 账号 → 放一个默认首页。
      现在访问 http://example.com,应该能看到宝塔的默认页。
      数据库密码只在这一次显示,忘了只能去「数据库」页点"改密"重设。

    4. 方法 A:面板文件管理器(推荐新手)
      左侧「文件」→ 进入 /www/wwwroot/example.com删掉默认的 index.html、.htaccess 等文件点「上传」→ 选择本地的 wordpress.zip → 上传右键压缩包 →「解压」→ 确认如果解压后多了一层 wordpress/ 目录,要把里面的文件剪切到根目录(即 index.php 要在 example.com/ 下,而不是 example.com/wordpress/ 下)
      方法 B:远程下载(更快,不用本地中转)
      文件管理器左上角「远程下载」→ 粘贴 URL:
      https://cn.wordpress.org/latest-zh_CN.zip

      下载完直接解压。
      方法 C:FTP(FileZilla)
      用建站时创建的 FTP 账号连接:主机填服务器 IP,端口 21,用户名/密码填 FTP 账号。

    5. WordPress 等程序需要对目录有写权限。文件管理器里选中站点根目录 → 右键「权限」:
      所有者:www
      权限:755(目录)/ 644(文件)

      命令行等价操作:
      chown -R www:www /www/wwwroot/example.com
      find /www/wwwroot/example.com -type d -exec chmod 755 {} \;
      find /www/wwwroot/example.com -type f -exec chmod 644 {} \;

      简单粗暴的 chmod -R 777 能跑,但不安全,别在生产环境用。

    6. 浏览器访问 http://example.com,进入 WordPress 安装向导,填入:
      数据库名:example_com(建站时生成的)
      用户名: example_com
      密码: ********(建站时生成、你保存下来的那个)
      数据库主机:localhost(不要改成 127.0.0.1,除非你知道为什么)
      表前缀: wp_(改个随机前缀如 wp_a3f9_ 更安全)

      提交 → 设置站点标题、管理员账号 → 完成。

    7. WordPress 的文章链接 /2026/10/hello-world/ 需要伪静态(URL 重写)才能访问,否则全是 404。
      位置:网站 → 站点设置 →「伪静态」→ 下拉模板选 wordpress → 保存。
      宝塔内置模板覆盖主流程序:
      程序伪静态模板名WordPresswordpressTypechotypechoDiscuzdiscuzThinkPHPthinkphpLaravellaravel帝国 CMS / 织梦empirecms / dedecms
      Nginx 的伪静态不会读 .htaccess。 用 Apache 才能自动读,Nginx 必须在面板里手动选模板。

    8. 到这里网站已经能跑了,接下来给它上 HTTPS。

    1. 左侧「数据库」页:
      操作位置新建数据库右上角「添加数据库」改密码对应行「改密」备份 / 恢复对应行「备份」/「恢复」网页管理对应行「phpMyAdmin」(需先安装 phpMyAdmin)设置远程访问添加时可指定访问权限(本地服务器 / 指定 IP / 所有人)

    2. 方式场景phpMyAdmin网页点着用,改数据、导 SQL、改表结构。无需额外软件Navicat / DataGrip本地客户端,需要开放 3306 端口 + 授权远程用户命令行mysql -u root -p

    3. SSH 执行:
      bt
      # 输入 7 → 强制修改 MySQL root 密码

    4. 不要给数据库开"所有人"访问权限。 默认 localhost 就够用——网站和数据库在同一台机器上。需要远程连接时,指定你的具体 IP,而不是 %。3306 端口用完就关。暴露公网的 MySQL 是勒索软件最爱。

    1. 功能说明上传 / 下载支持大文件、断点续传在线解压zip / tar.gz 都行,省得命令行在线编辑双击文件编辑,改配置很方便(改前先备份)改权限 / 改所有者右键远程下载直接把 URL 上的文件拉到服务器回收站误删的文件能捞回来

    2. 什么时候需要: 你习惯用 FileZilla 拖拽、或者要给同事开一个只能传文件的账号。
      要不要建: 个人用面板文件管理器完全够,FTP 可以不建(少一个攻击面)。
      连接信息:
      主机:服务器 IP
      端口:21
      用户/密码:建站时创建的 FTP 账号

      FTP 是明文传输的,公共 WiFi 下别用。要安全就用 SFTP(走 22 端口,FileZilla 里协议选 SFTP)。

    1. 位置:网站 → 站点设置 →「SSL」→ 证书类型选 Let's Encrypt 或 LiteSSL
      1. 选择验证方式:文件验证(默认,最省事)
      2. 勾选你要保护的域名(example.com 和 www.example.com 都勾上)
      3. 点「申请」
      4. 等 10~30 秒 → 提示申请成功
      5. 打开「强制 HTTPS」开关

    2. 类型有效期费用适合Let's Encrypt90 天(自动续签)免费✅ 个人站、博客、中小企业站LiteSSL90 天(自动续签)免费宝塔提供,Let's Encrypt 申请失败时的备选自定义证书1 年付费企业站需要 OV/EV 证书(显示公司名)

    3. 宝塔会每天检查证书有效期,到期前自动续签,不需要手动操作。
      前提(这三条不满足就会续签失败):
      域名解析一直指向这台服务器80 端口可访问(Let's Encrypt 的文件验证走 80 端口)面板计划任务正常运行

    4. 现象原因解决验证超时 / DNS 问题域名没解析到本机ping 域名 确认 IP 正确无法访问验证文件80 端口没放行安全组 + 防火墙放行 80443 打不开443 没放行放行 443频繁申请被限流Let's Encrypt 有频率限制(每周 5 次同域名)等一周,或换 LiteSSL 试试强制 HTTPS 后重定向循环程序本身也在做跳转关掉程序内的 HTTPS 强制,只留面板的
      验证命令:
      openssl s_client -connect example.com:443 -servername example.com | openssl x509 -noout -dates

      输出 notBefore / notAfter 说明证书生效了。

  4. 这一章是整篇教程最值得花钱花时间的地方。 服务器会被误操作、会被黑、云盘会坏。
    有没有备份,决定了"事故"和"灾难"的区别。

    1. 左侧「计划任务」→ 任务类型选「备份数据库」和「备份网站」:
      任务类型执行周期保留份数备份到备份数据库每天 03:007 份本地 + 云存储备份网站每周日 04:003 份本地 + 云存储
      保留份数别写 0(0 = 永不删除,迟早撑爆磁盘)。

    2. 本地备份在服务器挂掉时会一起没。异地备份才是真备份。
      位置:计划任务 → 添加任务 → 备份到 → 选云存储
      云存储准备阿里云 OSS建 Bucket + AccessKey腾讯云 COS建存储桶 + SecretId/Key七牛云建空间 + AK/SKFTP 存储另一台服务器的 FTP 账号
      费用参考:个人站每月几毛到几块,比数据丢了便宜太多。

    3. 任务类型用途释放内存小内存机器每天释放一次,缓解内存不足日志切割防止日志撑爆磁盘Shell 脚本自定义,比如每天同步文件、拉取代码访问 URL定时触发某个接口(如定时生成 sitemap)

    4. /www/backup/database/ # 数据库备份(.sql.gz)
      /www/backup/site/ # 网站文件备份(.tar.gz)

      恢复数据库: 数据库页 → 对应库 →「恢复」→ 选择备份文件
      恢复网站: 计划任务 → 任务列表里点「恢复」→ 选备份
      务必定期做一次恢复演练。 没验证过的备份等于没有备份。

    1. 直接「添加站点」再加一个就行。Nginx 按域名区分,互不干扰。1 核 2G 的机器跑 3~5 个小站没问题。

    2. 添加站点时域名填 blog.example.com,DNS 加一条 A 记录指向同一 IP。

    3. 场景:Node 服务跑在 127.0.0.1:3000,想用 api.example.com 访问。
      1. 添加站点 api.example.com(PHP 版本选"纯静态")
      2. 站点设置 →「反向代理」→「添加反向代理」
      代理名称:api
      目标 URL:http://127.0.0.1:3000
      发送域名:$host
      3. 保存,访问 api.example.com 即可

      同理可用于:Docker 容器、Java(Tomcat 8080)、Python(uvicorn 8000)。

    4. 软件商店装「Python 项目管理器」或「PM2 管理器」:
      Python:装 Python 项目管理器 → 添加项目 → 选框架(Flask/Django/FastAPI)
      → 填入口文件、端口 → 启动 → 再用反向代理绑定域名

      Node:装 PM2 管理器 → 添加项目 → 填启动文件(app.js)→ 启动
      → 反向代理绑定域名

    5. 把 example.com 跳到 www.example.com:
      站点设置 →「重定向」→ 类型 301 → 源域名 example.com → 目标 https://www.example.com
      多个域名指向同一站: 站点设置 →「域名管理」→ 添加。

    6. 给 /admin 加一层 Basic 认证:站点设置 →「目录保护」→ 添加 → 填目录、账号密码。
      适合后台地址、测试环境。

    7. 软件商店 →「一键部署」→ 选择 WordPress / Typecho / Discuz / 可道云等。
      比手动上传快,但版本可能不是最新,部署完记得升级。

    8. 软件商店装「网站监控报表」,能看到 PV/UV、来源、蜘蛛抓取、真实 IP。
      做 SEO 或看访问量时很有用。

  5. 警告:装完不加固的宝塔面板,暴露在公网上平均几小时内就会被扫描器盯上。
    下面每一项 5 分钟以内能做完,做完能挡掉 90% 的自动化攻击。

    1. 位置:左侧「面板设置」
      #操作作用1改面板端口 8888 → 一个五位数随机端口(如 35678)躲开批量扫 8888 的脚本2改安全入口 改成自定义字符串(如 /mypanel2026)不知道入口连登录页都打不开3改用户名和密码 别用 admin;密码 16 位以上大小写数字符号混合防暴力破解4开启面板 SSL登录过程加密,防止嗅探5开启动态口令(Google Authenticator / 微信)即使密码泄露也进不去6绑定宝塔账号 + 开启登录告警有异常登录会通知你
      改完后,新端口要在安全组里放行一次。

    2. 位置:安全 →「SSH 管理」
      操作说明改 SSH 端口 22 → 22022 之类挡掉绝大多数扫 22 的脚本禁止 root 直接登录新建普通用户 + sudo 提权用密钥登录替代密码最安全;密钥文件本地保管
      改 SSH 端口前,一定要先放行新端口再断开旧连接,否则可能把自己锁在门外。
      # 改 /etc/ssh/sshd_config
      Port 22022
      PermitRootLogin no
      PasswordAuthentication no # 确认密钥能登录后再改这一项
      # 然后:systemctl restart sshd

    3. 只放行必要的端口,其余全部关闭:
      ✅ 80 (HTTP)
      ✅ 443 (HTTPS)
      ✅ 你的 SSH 端口(如 22022)
      ✅ 你的面板端口(如 35678,最好限制来源 IP)
      ❌ 3306 (MySQL) —— 别开
      ❌ 6379 (Redis) —— 千万别开,Redis 未授权访问是最常见的入侵方式
      ❌ 8888 (默认面板端口) —— 改了端口就删掉这条

    4. 工具位置作用系统防火墙安全 → 系统防火墙端口管控、IP 黑白名单fail2ban 类防护软件商店搜"系统加固 / 防暴力"连续失败自动封 IP网站防 CC站点设置 →「流量限制」「CC 防御」防刷接口Nginx 防火墙软件商店WAF,拦 SQL 注入、XSS(部分收费)

    5. PHP 禁用危险函数:软件商店 → PHP →「禁用函数」,默认已禁用 exec、system、passthru 等,别为了装某个插件去解开。防止跨站攻击:宝塔默认开启"防跨站攻击(open_basedir)",一个站被黑不会连累其他站。及时更新:CMS、插件、主题有更新就升。绝大多数站点被黑是因为用了有已知漏洞的旧版插件。后台目录改名 / 加目录保护。删掉没用的东西:测试站点、phpinfo 文件、默认首页、未使用的数据库。

    6. 看「安全」→ 登录日志,有没有异地/异常登录看「首页」监控,CPU 突然飙高可能是被挖矿了看计划任务有没有被塞入不明任务last 命令看最近的登录记录

  6. 按性价比从高到低排:
    优先级优化项怎么弄效果⭐⭐⭐⭐⭐开 OPcachePHP → 安装扩展 opcachePHP 执行快 2~3 倍,零成本⭐⭐⭐⭐⭐开 Redis 对象缓存装 Redis → 站点装缓存插件数据库查询骤降⭐⭐⭐⭐Nginx 开 Gzip / BrotliNginx → 配置修改传输体积减 60%+⭐⭐⭐⭐静态资源缓存站点设置 → 配置文件加 expires重复访问秒开⭐⭐⭐上 CDN阿里云 CDN / 腾讯云 CDN / Cloudflare静态资源加速 + 隐藏源站 IP⭐⭐⭐MySQL 调优软件商店 → MySQL → 性能调优 → 按内存选方案内存小的机器效果明显⭐⭐⭐PHP 并发参数PHP → 性能调整,按内存选"并发方案"防止高并发 502⭐⭐图片优化WebP 格式 + 懒加载页面体积大降
    低配机器(1~2G)必做:
    MySQL 选 5.7 或 MariaDB,别用 8.0PHP 并发方案选"低配"或"1-2G"档加计划任务「释放内存」,每天一次开 SWAP(2GB),防止 OOM 杀进程:
    # 宝塔有现成插件:软件商店搜「Linux 工具箱」→ Swap 设置
    # 或命令行:
    dd if=/dev/zero of=/swapfile bs=1M count=2048
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

  7. SSH 里输入 bt 打开菜单,或直接 bt 数字:
    ===============宝塔面板命令行==================
    (1) 重启面板服务 (9) 清除面板缓存
    (2) 停止面板服务 (10) 清除登录限制
    (3) 启动面板服务 (11) 取消域名绑定限制
    (4) 重载面板服务 (12) 取消 IP 限制
    (5) 修改面板密码 (13) 关闭/开启 面板 SSL
    (6) 修改面板用户名 (14) 查看面板默认信息 ★
    (7) 强制修改 MySQL 密码 (15) 清理系统垃圾
    (8) 修改面板端口 (16) 修复面板 ★
    (22) 显示面板错误日志
    ===============================================

    最该记住的四条:
    场景命令忘了面板地址/账号/密码bt default(= bt 14)面板打不开了bt 1(重启)→ 还不行 bt 16(修复)忘了 MySQL root 密码bt 7登录被锁(错误次数太多)bt 10
    其他常用运维命令:
    # 面板服务状态
    /etc/init.d/bt status

    # 查看安装日志(安装失败时看这里)
    cat /root/bt_install.log

    # 面板端口
    cat /www/server/panel/data/port.pl

    # 重启 Nginx / MySQL / PHP
    /etc/init.d/nginx restart
    /etc/init.d/mysqld restart
    /etc/init.d/php-fpm-82 restart

    # 磁盘与 Inode 检查
    df -h # 磁盘空间
    df -i # Inode(小文件太多会先把 Inode 用光)

    1. 现象排查顺序面板打不开① 安全组放行端口?② 系统防火墙放行?③ bt 1 重启面板 ④ 地址里的安全入口对不对?⑤ bt 22 看错误日志忘了密码bt 5 改密码 或 bt 14 看原密码忘了安全入口bt 14 会显示完整地址;或 bt 12 取消 IP 限制提示"登录次数超限"bt 10 清除登录限制面板卡死/白屏bt 16 修复面板;bt 9 清缓存绑定了域名但打不开bt 11 取消域名绑定限制

    2. 现象原因 & 解决502 Bad Gateway① PHP-FPM 没启动(软件商店 → PHP → 重启)② PHP 并发数超出(调性能方案)③ 内存不足(OOM,加 SWAP)④ 看 /www/wwwlogs/域名-error.log404 全部页面(除了首页)伪静态没配 → 站点设置 → 伪静态 → 选对应模板403 Forbidden① 根目录没有 index 文件 ② 文件权限/所有者不对(应为 www:www)③ Nginx 配置里禁止了目录访问500 Internal Server Error程序报错。看站点错误日志;PHP 版本不兼容就换版本访问到宝塔默认页根目录里的默认 index.html 没删网站能访问但样式全乱静态资源 404,通常是上传时路径错位(多了一层目录)打开很慢① 服务器在国外/线路差 ② MySQL 慢查询 ③ 没开缓存 ④ 图片没压缩只能 IP 访问,域名不行DNS 没解析或没生效;nslookup 域名 确认

    3. 现象解决网站报"数据库连接失败"核对配置文件里的库名/用户/密码;主机应为 localhost忘了 root 密码bt 7phpMyAdmin 打不开888 端口没放行;或 phpMyAdmin 没装导入 SQL 失败文件太大 → 用命令行导入:mysql -u用户 -p 库名 < file.sql数据库突然没了先看备份(/www/backup/database);警惕勒索,检查是否被入侵

    4. 现象解决软件装不上 / 编译失败① 磁盘空间够吗(df -h)② 内存够吗 ③ 用"极速安装"替代"编译安装" ④ 看 /root/bt_install.log提示磁盘不足清理日志(/www/wwwlogs)、旧备份(/www/backup)、面板回收站提示 Inode 不足 10%磁盘还有空间但小文件太多 → df -i 确认 → 清理海量小文件(session、缓存碎片)内存占用 100%看进程(htop)→ MySQL 调优 / 加 SWAP / 计划任务释放内存CPU 突然飙高检查是否被挖矿:看进程、计划任务、定时任务 crontab -l

    5. 1. 看现象:浏览器报什么错?
      2. 看日志:/www/wwwlogs/ 下对应域名的 error.log
      3. 看服务:软件商店里 Nginx / MySQL / PHP 是不是都在"运行中"
      4. 看资源:首页监控,CPU / 内存 / 磁盘 / Inode
      5. 看端口:安全组 + 防火墙,两边都要开
      6. 看最近改动:是不是刚改了配置/升级了程序?

  8. 站点要正式对外前,逐条打勾:
    功能
    域名解析生效,HTTP 和 HTTPS 都能访问 www 和主域名都能访问(做了 301 统一) 伪静态配置正确,内页不 404 表单/注册/支付等关键流程实测通过 手机端显示正常
    安全
    SSL 证书已申请,强制 HTTPS 已开启 面板端口已改(非 8888)+ 安全入口已改 面板用户名密码已改,动态口令已开 SSH 端口已改,root 登录已禁 防火墙只放行必要端口,3306/6379 未暴露 CMS、插件、主题都是最新版 测试文件、phpinfo、默认首页已删除 数据库未开放"所有人"访问
    可靠
    数据库每日备份(本地 + 异地),保留 ≥7 份 网站文件每周备份 做过一次恢复演练,确认备份真的能用 计划任务正常运行(看执行日志)
    性能
    PHP OPcache 已开 Gzip/Brotli 已开 静态资源缓存已配 首页加载时间可接受(可用 PageSpeed Insights 测)
    合规
    国内服务器:域名已完成 ICP 备案 有用户注册:已准备隐私政策/用户协议 有评论/UGC:已配置内容审核机制

  9. 程序推荐 PHP伪静态模板备注WordPress8.1 / 8.2wordpress需 fileinfo、zip、imagick(可选)Typecho7.4 / 8.1typecho轻量,低配机器首选Discuz! X7.4discuz新版支持 8.x 需测ThinkPHP 5/67.4 / 8.0thinkphp根目录要指到 publicLaravel8.1+laravel根目录指到 public,需 fileinfo、composer织梦 DedeCMS5.6 / 7.0dedecms老项目,注意安全漏洞帝国 CMS7.4empirecms
    重要:ThinkPHP / Laravel 项目的站点根目录要设成 public(或 public_html),
    否则源码(含 .env 数据库密码)会直接被下载 —— 这是非常常见的信息泄露事故。
    设置位置:站点设置 →「网站目录」→ 运行目录 → 选 /public。

  10. 第 1 天:装面板 + 装环境 + 跑通一个 WordPress
    第 2 天:搞懂域名解析、SSL、伪静态这三件事
    第 3 天:备份 + 安全加固(这是分水岭)
    第 1 周:多站点、反向代理、数据库管理
    第 1 月:学一点 Linux 命令和 Nginx 配置,开始脱离面板也能排查问题

    最后一句忠告: 宝塔让你"不用懂 Linux 也能建站",但不能让你"不用懂 Linux 也能救站"。
    真正出问题时,命令行和日志才是你的救命稻草。面板是拐杖,不是腿。

    本教程基于宝塔 Linux 面板 9.x 编写。面板界面会随版本迭代微调,若某个按钮位置与文中不符,以当前版本的菜单名为准。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注