当前位置: 首页 > article >正文

在 Ubuntu 服务器上使用宝塔面板搭建博客

📌 介绍

在本教程中,我们将介绍如何在 Ubuntu 服务器 上安装 宝塔面板,并使用 Nginx + PHP + MySQL 搭建一个博客(如 WordPress)。

主要步骤包括:

  1. 安装宝塔面板
  2. 配置 Nginx + PHP + MySQL
  3. 绑定域名与 SSL 证书
  4. 安装 WordPress 并优化

📌 1. 安装宝塔面板

宝塔官网

在 Ubuntu 服务器上执行以下命令:

# 更新系统
sudo apt update && sudo apt upgrade -y

# 下载并安装宝塔面板(适用于 Ubuntu)
wget -O install.sh http://www.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

安装完成后,终端会显示 宝塔面板的访问地址、账号和密码,请妥善记录。


📌 2. 登录宝塔面板并配置环境

  • 在浏览器访问 http://服务器IP:8888
  • 输入 账号 & 密码 登录

安装必备环境:

  1. 进入 “软件商店”
  2. 安装以下软件:
    • Nginx(Web 服务器)
    • MySQL(数据库)
    • PHP 8.0+(用于运行 WordPress)
    • phpMyAdmin(数据库管理工具)

配置 PHP:

  • 上传限制:128M
  • 执行时间:300 秒
  • 启用 fileinfo 扩展

📌 3. 配置域名解析

在域名管理平台(如 Cloudflare、阿里云、腾讯云)中添加 DNS 解析:

  1. A 记录解析到服务器 IP
    • 主机记录@
    • 记录值:服务器 IP
  2. 添加 www 解析
    • 主机记录www
    • 记录值:服务器 IP

测试解析是否生效:

ping example.com

如果返回 服务器 IP,说明解析成功。


📌 4. 配置反向代理隐藏宝塔面板端口

配置反向代理可以参考 Nginx 上安装 SSL 证书并启用 HTTPS 访问 。如果已经在宝塔上安装了Nginx就不要安装单独的 Nginx,不然两个冲突了确实挺麻烦的。

  1. 进入宝塔面板设置绑定域名
  2. 添加一个域名,例如 panel.example.com
  3. 进入 Nginx 配置,添加以下反向代理:
proxy_cache_path /www/wwwroot/域名/proxy_cache_dir levels=1:2 keys_zone=主机记录(. 替换成 _)_cache:20m inactive=1d max_size=5g;

server {
    listen 80;
    listen 443 ssl;
    listen 443 quic;
    http2 on;

	listen [::]:80;

    server_name 域名;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/域名;

    #CERT-APPLY-CHECK--START
    # 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
    include /www/server/panel/vhost/nginx/well-known/域名.conf;
    #CERT-APPLY-CHECK--END

    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    ssl_certificate    /www/server/panel/vhost/cert/域名/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/域名/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_tickets on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    add_header Alt-Svc 'quic=":443"; h3=":443"; h3-29=":443"; h3-27=":443";h3-25=":443"; h3-T050=":443"; h3-Q050=":443";h3-Q049=":443";h3-Q048=":443"; h3-Q046=":443"; h3-Q043=":443"';
    error_page 497  https://$host$request_uri;

    #SSL-END
    #REDIRECT START

    #REDIRECT END

    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END

    #PHP-INFO-START  PHP引用配置,可以注释或修改

    include enable-php-00.conf;
    #PHP-INFO-END

    #IP-RESTRICT-START 限制访问ip的配置,IP黑白名单


    #IP-RESTRICT-END

    #BASICAUTH START

    #BASICAUTH END

    #SUB_FILTER START

    #SUB_FILTER END

    #GZIP START

    #GZIP END

    #GLOBAL-CACHE START

    #GLOBAL-CACHE END

    #WEBSOCKET-SUPPORT START

  	proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    #WEBSOCKET-SUPPORT END

     #PROXY-CONF-START
     location ^~ / {
     	auth_basic "Authorization";
     	auth_basic_user_file /www/server/pass/域名/SNUZu.htpasswd;
   	 	proxy_pass https://127.0.0.1:18395;
      	proxy_set_header Host $http_host;
     	proxy_set_header X-Real-IP $remote_addr;
      	proxy_set_header X-Real-Port $remote_port;
      	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      	proxy_set_header X-Forwarded-Proto $scheme;
      	proxy_set_header X-Forwarded-Host $host;
      	proxy_set_header X-Forwarded-Port $server_port;
      	proxy_set_header REMOTE-HOST $remote_addr;
      	proxy_ssl_server_name on;
      	proxy_connect_timeout 60s;
    	proxy_send_timeout 600s;
    	proxy_read_timeout 600s;
      	proxy_http_version 1.1;
      	proxy_set_header Upgrade $http_upgrade;
      	proxy_set_header Connection $connection_upgrade;
    }

    #PROXY-CONF-END

    #SERVER-BLOCK START

    #SERVER-BLOCK END

    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
    {
    	return 404;
    }

    #一键申请SSL证书验证目录相关设置
    location /.well-known{
        allow all;
    }

    #禁止在证书验证目录放入敏感文件
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

    #LOG START

	access_log  /www/wwwlogs/域名.log;
	error_log  /www/wwwlogs/域名.error.log;

    #LOG END
}
  1. 重启 Nginx,然后你可以通过 https://域名 访问宝塔面板,而无需暴露端口 端口

PS:上面的配置是通过在命令行输入 bt,然后开启/关闭【80、443】端口访问面板设置时自动生成的。生成的配置文件的路径是 /www/server/panel/vhost/nginx
在这里插入图片描述


📌 5. 在宝塔面板中添加网站

  1. 进入 “网站管理”点击 “添加站点”
  2. 填写信息:
    • 域名example.com
    • 根目录/www/wwwroot/example.com
    • 数据库MySQL
    • PHP 版本PHP 8.0+
  3. 点击 “创建”

修改 Nginx 伪静态(适用于 WordPress):

location / {
    try_files $uri $uri/ /index.php?$args;
}

在这里插入图片描述

🔹 下载并解压 WordPress (手动安装:可选)

cd /www/wwwroot/example.com
wget https://wordpress.org/latest.zip
unzip latest.zip
mv wordpress/* .
rm -rf wordpress latest.zip
chown -R www:www /www/wwwroot/example.com
chmod -R 755 /www/wwwroot/example.com

📌 6. 配置 SSL 证书(HTTPS)

  1. 进入 “网站管理”选择 example.com
  2. 点击 “SSL”申请 Let’s Encrypt 证书
  3. 自动续期并启用 HTTPS 强制跳转

加入阿里云的 DNS解析:
在这里插入图片描述

获取 key
在这里插入图片描述

申请证书:
在这里插入图片描述
开启自动续签:
在这里插入图片描述


📌 8. 创建 WordPress 数据库

  1. 进入宝塔面板数据库管理创建数据库
    • 数据库名wordpress
    • 用户名wp_user
    • 密码强密码
  2. 点击 “创建”

📌 9. 配置 WordPress

  1. 访问 https://example.com
  2. 选择 语言
  3. 填写数据库信息:
    • 数据库名wordpress
    • 用户名wp_user
    • 密码你设置的密码
    • 数据库主机localhost
  4. 点击提交安装 WordPress
  5. 创建管理员账号
    • 用户名admin
    • 密码强密码
    • 邮箱你的邮箱

在这里插入图片描述


📌 10. 配置 WordPress 主题和插件

🔹 进入 WordPress 后台https://example.com/wp-admin):

  1. 安装主题
    • 外观主题选择你喜欢的主题
  2. 安装推荐插件
    • Yoast SEO(优化 SEO)
    • WP Super Cache(加速网站)
    • Classic Editor(经典编辑器)

🎉 结论

✅ 你已经成功:

  • 安装宝塔面板
  • 配置 Nginx + MySQL + PHP
  • 启用 HTTPS 并配置 SSL 证书
  • 成功安装 WordPress
  • 创建了属于自己的博客网站!

📌 现在,你可以访问 https://example.com 开始写博客了!🚀


http://www.kler.cn/a/588798.html

相关文章:

  • Three.js 阴影 (Shadow) 知识点整理
  • Node.js 与 MongoDB:高效的企业级应用开发
  • 如何使用IDEA Maven构建本地jar包和POM文件?
  • 【C++多线程】thread
  • SpringBoot动态加载JAR包实战:实现插件化架构的终极指南
  • 全球领先的光学方案设计公司:倚光科技
  • 【QT笔记---QText】
  • Android Dagger2 框架编译时注解处理模块深度剖析(二)
  • 简单爬虫--框架
  • 用户身份认证与令牌管理全解析:从原理到分布式实践
  • 每日Attention学习26——Dynamic Weighted Feature Fusion
  • 泽众TestOne推出快速测试用例设计,让自动化更快捷
  • Keytool常见问题全解析:从环境配置到公钥提取
  • Advanced Intelligent Systems 软体机器手助力截肢者玩转鼠标
  • DeepSeek-R1思路训练多模态大模型-Vision-R1开源及实现方法思路
  • JavaScript相关面试题
  • 前端面试题---vue项目打包时, 内存不足了怎么办 为什么会出现这样的情况
  • Web开发-PHP应用文件操作安全上传下载任意读取删除目录遍历文件包含
  • 深入解析工厂模式及其C#实现
  • 【k8s002】k8s健康检查与故障诊断