侧边栏壁纸
博主头像
泡泡吐puber 博主等级

在这里,吐个有趣的泡泡🫧

  • 累计撰写 13 篇文章
  • 累计创建 7 个标签
  • 累计收到 23 条评论

目 录CONTENT

文章目录

​​轻量之选:不依赖宝塔,用 NPM 与命令行部署在线工具箱​

泡泡吐puber
2025-09-13 / 0 评论 / 0 点赞 / 109 阅读 / 0 字 / 正在检测是否收录...

今早醒来,我像往常一样点开自己的博客,翻来翻去总觉得内容有点单薄。除了几篇文章之外,功能寥寥无几,所以就想着能不能给博客加个实用的在线工具箱?放一些编码转换、计算器之类的小工具,让来访的朋友有点新东西可以玩玩。于是开始搜索相关的教程,结果无外乎都是用宝塔面板部署的,但我的服务器没装宝塔,又不想特意去安装那么重的东西。于是我来来回回折腾了一上午,摸索出了一套不依赖宝塔面板的方案,并在此分享细节,希望能帮助到和我有相同需求的朋友们。

🧠 使用的工具:

  • Nginx Proxy Manager (NPM):我只用它来管反向代理SSL 证书。它的界面很清晰,专心负责把外部请求安全地转发到内部服务,并且自动搞定 HTTPS 加密,这点非常省心。
  • Nginx + PHP-FPM:它们俩在后台搭好运行环境,让我的 PHP 工具箱网站在服务器内部的一个特定端口上安静运行,不直接对外暴露。

这样分工,结构清晰,资源占用也少。

⚙️ 操作步骤:

1.📁 创建目录 /www/wwwroot/,上传源码

1.使用 mkdir -p创建目录

sudo mkdir -p /www/wwwroot/

2.上传源码到 /www/wwwroot/

1.使用scp将源码从本地电脑上传至服务器用户home目录:

image-20250913160218746

scp -r tool puber:~/
2.将源码移动到 /www/wwwroot/目录:
sudo mv ~/tool /www/wwwroot/

3. 准备环境:安装 Nginx 和 PHP

请依次执行以下命令来准备环境:

  1. 更新软件包列表:确保获取最新的软件版本信息。

    sudo apt update
    
  2. 安装 Nginx

    sudo apt install nginx -y
    
  3. 添加 PHP 仓库:Ubuntu 官方库中的 PHP 版本可能不全,添加 Ondřej Surý 的 PPA 仓库来获取 PHP 7.4。

    sudo add-apt-repository ppa:ondrej/php -y
    sudo apt update # 更新源后再次更新软件列表
    
  4. 安装 PHP 7.4 及其常用扩展:安装 PHP 核心、进程管理器(FPM)和一些Web开发中常用的扩展。

    sudo apt install php7.4 php7.4-fpm php7.4-mysql php7.4-xml php7.4-mbstring -y
    
  • php7.4-fpm: 用于 Nginx 通过 FastCGI 方式处理 PHP 脚本。
  • php7.4-mysql: 提供 MySQL 数据库支持。
  • php7.4-xml: 处理 XML 文件所必需。
  • php7.4-mbstring: 提供多字节字符串支持(对中文等非英文字符很重要)。

4. 基本配置与设置

安装完成后,需要进行一些基本配置和权限设置。

  1. 启动并设置开机自启

    sudo systemctl start nginx php7.4-fpm       # 启动服务
    sudo systemctl enable nginx php7.4-fpm      # 设置开机自动启动
    
  2. 检查服务状态:确认 Nginx 和 PHP-FPM 都已正常运行。

    sudo systemctl status nginx                 # 检查Nginx状态
    sudo systemctl status php7.4-fpm            # 检查PHP-FPM状态
    

    如果状态显示 active (running),说明服务已成功启动。

  3. 权限设置:确保 Nginx 和 PHP-FPM 进程(通常以 www-data用户和组运行)对你的网站根目录(例如 /www/wwwroot/tool)有读取和执行权限。

    sudo chown -R www-data:www-data /www/wwwroot/tool  # 更改目录所有者和组
    sudo chmod -R 755 /www/wwwroot/tool                 # 设置目录权限
    

    注意:权限设置非常重要,不正确的权限可能导致 403 Forbidden500 Internal Server Error

5. 写 Nginx 配置:告诉服务器怎么运行网站

创建一个配置文件 /etc/nginx/sites-available/webtool.conf,让 Nginx 监听 8000 端口来运行我们的网站(这样就不会和 NPM 抢 80 端口了):

server {
    listen 8000;
    server_name localhost;
    root /www/wwwroot/tool/public;
    index index.html index.htm index.php;

    # ThinkPHP 伪静态规则
    location ~* (runtime|application)/{
        return 403;
    }

    location / {
        if (!-e $request_filename){
            rewrite ^(.*)$ /index.php?s=$1 last; break;
        }
    }

    # 将所有 .php 文件请求转发给 PHP-FPM
    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

写完配置,启用它并测试一下:

sudo ln -s /etc/nginx/sites-available/webtool.conf /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default  # 把默认配置禁用掉,防止端口冲突
sudo nginx -t  # 测试一下配置文件有没有语法错误
sudo systemctl restart nginx php7.4-fpm

6. 让 NPM 接管对外访问

现在内部服务已经准备好了,最后一步就是让 NPM 来接管对外访问:

  1. 打开浏览器,访问 NPM 的后台管理界面。
  2. 点击 Proxy Hosts -> Add Proxy Host
  3. Domain Names 里填你打算用来访问工具箱的域名(事先准备好域名,比如 tool.yourdomain.com)。 SchemehttpForward Hostname / IP172.17.0.1(因为我的NPM是dokcer部署的,172.17.0.1 是 Docker 创建的默认网络桥接接口(docker0)在宿主机(Host Machine)上的IP地址。对于运行在容器内的 Nginx Proxy Manager 来说,这个地址就是它的“网关”,通过这个地址它可以访问到宿主机上运行的服务)。 Forward Port8000(就是我们刚才配的端口)。
  4. SSL 标签页里,选择 Request a new SSL Certificate,勾上 Force SSL,然后点 Save。NPM 会自动帮你申请并配置好 Let's Encrypt 的免费 SSL 证书。

image-20250913163113606

一个小提示:如果你的网站根目录下有个默认的 index.html,它可能会“挡道”,导致直接访问时看不到 PHP 应用。为了确保访问的是 PHP 应用,可以把它删掉:

sudo rm /www/wwwroot/tool/public/index.html

至此,大功告成!

image-20250913163248790

🐞 遇到问题了?别慌,试试这么解决

  • Nginx 启动失败,说 80 端口被占了: 这通常是因为 Nginx 默认的配置文件还占着 80 端口,和 NPM 冲突了。​​解决方法是​​:确保你已经禁用了那个默认配置:sudo unlink /etc/nginx/sites-enabled/default,然后重启 Nginx:sudo systemctl restart nginx
  • 访问域名出现 502 Bad Gateway: 这是​​最常见​​的坑,多半是 Nginx 和 PHP-FPM “握手”失败了。
    • 首先,检查一下 Nginx 配置里的 fastcgi_pass(比如 unix:/var/run/php/php7.4-fpm.sock)和 PHP-FPM 配置文件(一般在 /etc/php/7.4/fpm/pool.d/www.conf)里的 listen 值是不是一模一样,一个字母都不能差。
    • 其次再确认一遍文件权限sudo chown -R www-data:www-data /www/wwwroot/tool
    • 最后,每次修改配置后,都要重启服务让配置生效:sudo systemctl restart nginx php7.4-fpm

💎 总结一下

这套方法的核心就是分工明确

  • NPM:专心处理反向代理和 HTTPS,图形化操作申请证书很方便。
  • Nginx + PHP-FPM:专注在后台运行动态网站。

看起来步骤不少,但一旦你理解并成功跑通一次,下次就会非常顺手。对于不想用宝塔面板,想更轻量、更自主管理服务器的朋友来说,这是个很不错的选择。

希望这篇笔记对你有帮助。如果过程中遇到其他问题,欢迎一起讨论。 最后附上体验链接:

在线工具箱 快来体验吧!

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区