1. 环境准备

    物理环境:win11专业版/Ubuntu-24.04.2

    安装 Node.js(推荐 v20+)和 pnpm(包管理器)。

    克隆项目代码:

    git clone https://github.com/CorentinTh/it-tools.git

    cd it-tools

    或者直接从GitHub下载源码

  2. 安装依赖

    pnpm install

方法 1:使用官方安装脚本(推荐)

这是 pnpm 官方推荐的安装方式,适用于大多数 Linux 系统:

首先确保系统安装了curl(如果没有可以先安装):

sudo apt update && sudo apt install -y curl

运行 pnpm 官方安装脚本:

curl -fsSL https://get.pnpm.io/install.sh | sh -

安装完成后,需要让系统识别 pnpm 命令,执行以下命令刷新环境变量:

source ~/.bashrc # 如果你用的是bash

# 或者如果是zsh:

# source ~/.zshrc

方法 2:通过 npm 安装(如果已安装 npm)

如果你已经安装了 npm(Node.js 的包管理器),也可以通过 npm 安装 pnpm:

先安装 npm(如果未安装):

sudo apt update && sudo apt install -y npm

用 npm 全局安装 pnpm:

sudo npm install -g pnpm

验证安装

安装完成后,运行以下命令确认 pnpm 已正确安装:

pnpm --version

如果输出版本号,说明安装成功,之后就可以正常运行pnpm install命令了。

  1. 构建生产版本

    pnpm build

  1. 部署静态文件

步骤1.安装 Nginx(若未安装)

根据系统类型执行命令:

Ubuntu/Debian:

sudo apt update && sudo apt install nginx

CentOS/RHEL:

sudo yum install epel-release # CentOS需先装EPEL源

sudo yum install nginx

安装后启动服务并设为开机自启:

sudo systemctl start nginx

sudo systemctl enable nginx

步骤2.复制 dist 目录到 Nginx 站点目录

确定 Nginx 站点根目录:

Nginx 默认站点目录为:

Ubuntu/Debian:/var/www/html

CentOS/RHEL:/usr/share/nginx/html

也可通过查看 Nginx 配置文件(如 /etc/nginx/sites-available/default)确认 root 字段。

创建项目部署目录(以部署到 /var/www/html/it-tools 为例):

sudo mkdir -p /var/www/html/it-tools

复制 dist 文件:

假设你的 dist 目录在项目根目录(如 ~/it-tools/dist),执行:

sudo cp -r ~/it-tools/dist/* /var/www/html/it-tools/

小tips:从GitHub直接下载项目源码时目录名是it-tools-main,建议重命名为it-tools,方便跟随步骤操作

步骤3.配置 Nginx 站点规则

创建 Nginx 配置文件:

sudo nano /etc/nginx/conf.d/it-tools.conf

写入基础配置(适配单页应用路由,避免刷新 404):

点击查看代码
server {
listen 80; # 监听80端口(HTTP)
server_name localhost; # 改为你的域名/IP,如 example.com 或 192.168.1.100 root /var/www/html/it-tools; # 指向部署目录
index index.html; # 处理单页应用路由(必配!否则刷新页面会404)
location / {
try_files $uri $uri/ /index.html;
} # 可选:优化静态文件缓存(如JS/CSS/图片)
location /static/ {
expires 30d; # 缓存30天
add_header Cache-Control "public";
}
}

代码中的`server_name`:若需通过域名访问,需替换为实际域名(需提前解析到服务器 IP);若仅本地测试,保持 localhost 即可。

步骤4.验证配置并重启 Nginx

检查配置语法:

sudo nginx -t

若输出 nginx: configuration file /etc/nginx/nginx.conf test is successful,则配置无误。

重启 Nginx 生效:

sudo systemctl restart nginx

步骤5.测试访问

打开浏览器,访问:

若 server_name 为 localhost:http://localhost

若为服务器 IP(如 192.168.1.100):http://192.168.1.100

若为域名:http://your-domain.com

若页面正常加载、跳转和刷新无 404,则部署成功。

end.常见问题处理

页面空白或资源加载失败:

检查 dist 目录是否正确复制(文件是否完整,权限是否为 Nginx 运行用户可读取)。

Nginx 运行用户:Ubuntu 是 www-data,CentOS 是 nginx。修复权限:

sudo chown -R www-data:www-data /var/www/html/it-tools # Ubuntu

sudo chown -R nginx:nginx /var/www/html/it-tools # CentOS

CentOS 下访问被拒绝(SELinux 限制):

执行以下命令开放权限:

sudo setsebool -P httpd_can_network_connect on # 允许网络访问

sudo chcon -Rv --type=httpd_sys_content_t /var/www/html/it-tools # 设置SELinux上下文

防火墙拦截端口:

开放 80 端口(HTTP):

ufw(Ubuntu):sudo ufw allow 80

firewalld(CentOS):sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --reload

如需 HTTPS 部署(更安全),可额外配置 Let's Encrypt 证书(通过 certbot 工具),流程可参考https://certbot.eff.org/instructions?ws=nginx&os=ubuntufocal

如果访问网站是 Nginx 默认欢迎页,说明 项目静态文件未正确部署

先检查部署目录文件:

ls /var/www/html/it-tools # 确认有index.html等dist文件

若无需重新部署

修复权限(若文件存在但无法访问):

sudo chown -R www-data:www-data /var/www/html/it-tools # Ubuntu/Debian

# sudo chown -R nginx:nginx /var/www/html/it-tools # CentOS/RHEL

执行完上述代码后,按以下顺序排查:

  1. 检查 Nginx 配置优先级

查看已启用的站点(若存在default链接,会覆盖新配置)

ls /etc/nginx/sites-enabled/

若有 default,删除它:(默认是有的)

sudo rm /etc/nginx/sites-enabled/default

2. 确认部署目录文件

ls /var/www/html/it-tools # 必须包含 index.html 等 dist 构建文件

3. 重启 + 强制刷新浏览器

sudo nginx -t && sudo systemctl restart nginx

浏览器按 Ctrl+F5 强制刷新,或换浏览器访问。

若仍无效,补充执行:

查看 Nginx 实际加载的配置(确认 it-tools.conf 已生效)

sudo nginx -T | grep -i it-tools

成功部署页面如下

如有其他问题请在评论区留言

GitHub开源项目:IT-Tools源码构建部署及其部署排错的更多相关文章

  1. 谷歌开源项目Chromium的源码获取与项目构建(Win7+vs10/vs13)

    转自:http://blog.csdn.net/kuerjinjin/article/details/23563059 从12年那会儿开始获取源码和构建chromium项目都是按照那时候的官方要求用w ...

  2. Android开源项目 Universal imageloader 源码研究之Lru算法

    https://github.com/nostra13/Android-Universal-Image-Loader universal imageloader 源码研究之Lru算法 LRU - Le ...

  3. Android开源项目 Universal imageloader 源码研究之项目框架

    Universal imageloader 的代码并不复杂 重点是缓存,线程池任务 下面都用UML图进行了绘制 基本使用流程就是 初始化配置,设置Options参数,最后Dispaly提交下载 pub ...

  4. java开源即时通讯软件服务端openfire源码构建

    java开源即时通讯软件服务端openfire源码构建 本文使用最新的openfire主干代码为例,讲解了如何搭建一个openfire开源开发环境,正在实现自己写java聊天软件: 编译环境搭建 调试 ...

  5. 2015-2016最火的Android开源项目--github开源项目集锦(不看你就out了)

    标签: Android开发开源项目最火Android项目github 2015-2016最火的Android开源项目 本文整理与集结了近期github上使用最广泛最火热与最流行的开源项目,想要充电与提 ...

  6. 从源码构建docker-ce

    准备环境 准备一台Linux主机,并在上面安装好docker-ce,安装好make,git就可以开始编译工作了.对,就是如此简单,可能你会对此感到异或为啥要装docker,我不是准备编译这个玩意么,为 ...

  7. [Android开源项目] GitHub开源项目总结 (转)

    [Android开源项目] GitHub开源项目总结 GitHub开源项目android-styled-dialogs http://neast.cn/forum.php?mod=viewthread ...

  8. 如何参与一个 GitHub 开源项目?

    最近一年开源项目特别的热,很多技术大会或论坛都以开源项目作为主题进行探讨,可见这是一种趋势.而Github作为开源项目的著名托管地,可谓无 人不知,越来越多的个人和公司纷纷加入到Github的大家族里 ...

  9. 如何参与一个GitHub开源项目

    Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力.对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Git ...

  10. Flink源码分析 - 源码构建

    原文地址:https://mp.weixin.qq.com/s?__biz=MzU2Njg5Nzk0NQ==&mid=2247483692&idx=1&sn=18cddc1ee ...

随机推荐

  1. LLM主要架构

    LLM本身基于Transformer架构 自2017年,Attention is all you need诞生起,原始的Transformer模型不同领域的模型提供了灵感和启发 基于原始的Transf ...

  2. WPF后台自动添加控件Demo

    xaml <Window x:Class="EBPlugIn2.EBPlugIn2_YJW_13" xmlns="http://schemas.microsoft. ...

  3. C#/.NET/.NET Core技术前沿周刊 | 第 40 期(2025年5.26-5.31)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  4. 快速上手python的坑

    快速上手python的坑 这篇文章是乱写的 零 使用的软件及其版本 python 3.6 PyCharm Community Edition 2016.2.3 一 输入输出 输出 (在python 3 ...

  5. TemplatesImpl结合cc6在Shiro中的利用

    TemplatesImpl结合cc6在Shiro中的利用 这个文章也是参考p牛的文章;但其中许多细节,就比如为什么普通的Transformer[]数组链不能再shiro中使用; 但其中大致原理还是说一 ...

  6. code-generator的简单介绍

    代码生成器 介绍 client-go为每种k8s内置资源提供了对应的clientset和informer.那么我们要监听和操作自定义资源对象,应该如何做呢? 方式一:使用client-go提供的dyn ...

  7. [原创]《C#高级GDI+实战:从零开发一个流程图》第02章:画一个矩形,能拖动!

    一.前言 就像开发的教程都从"Hello World!"开篇一样,系列开始,我们也从一个最最简单的功能开始:画一个能拖动的矩形. 顺便说一下,另一篇教程:(原创)[C#] GDI+ ...

  8. Centos Yum源配置(清华源)

    配置清华源 执行清华源官方语句https://mirrors.tuna.tsinghua.edu.cn/help/centos/?repo=centos7替换当前文件并备份 请注意,CentOS 8( ...

  9. 故障处理:ORA-04031真实案例分享

    我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效 ...

  10. 使用ZLAN8308M串口服务器4G通信功能解决远程智能无线电表方案

    我国目前市场上常见的电表记录方式主要以人工手动抄表和预付费卡为主.在我国经济和住房快速发展下,电能消耗计量管理的实际需求以及人民生活水平的不断的提高,对电能智能化.便捷化管理的要求越来越高,远程电表记 ...