GitHub开源项目:IT-Tools源码构建部署及其部署排错
环境准备
物理环境:win11专业版/Ubuntu-24.04.2
安装 Node.js(推荐 v20+)和 pnpm(包管理器)。
克隆项目代码:
git clone https://github.com/CorentinTh/it-tools.git
cd it-tools
或者直接从GitHub下载源码

安装依赖
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命令了。

- 构建生产版本
pnpm build


- 部署静态文件
步骤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
执行完上述代码后,按以下顺序排查:
- 检查 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源码构建部署及其部署排错的更多相关文章
- 谷歌开源项目Chromium的源码获取与项目构建(Win7+vs10/vs13)
转自:http://blog.csdn.net/kuerjinjin/article/details/23563059 从12年那会儿开始获取源码和构建chromium项目都是按照那时候的官方要求用w ...
- Android开源项目 Universal imageloader 源码研究之Lru算法
https://github.com/nostra13/Android-Universal-Image-Loader universal imageloader 源码研究之Lru算法 LRU - Le ...
- Android开源项目 Universal imageloader 源码研究之项目框架
Universal imageloader 的代码并不复杂 重点是缓存,线程池任务 下面都用UML图进行了绘制 基本使用流程就是 初始化配置,设置Options参数,最后Dispaly提交下载 pub ...
- java开源即时通讯软件服务端openfire源码构建
java开源即时通讯软件服务端openfire源码构建 本文使用最新的openfire主干代码为例,讲解了如何搭建一个openfire开源开发环境,正在实现自己写java聊天软件: 编译环境搭建 调试 ...
- 2015-2016最火的Android开源项目--github开源项目集锦(不看你就out了)
标签: Android开发开源项目最火Android项目github 2015-2016最火的Android开源项目 本文整理与集结了近期github上使用最广泛最火热与最流行的开源项目,想要充电与提 ...
- 从源码构建docker-ce
准备环境 准备一台Linux主机,并在上面安装好docker-ce,安装好make,git就可以开始编译工作了.对,就是如此简单,可能你会对此感到异或为啥要装docker,我不是准备编译这个玩意么,为 ...
- [Android开源项目] GitHub开源项目总结 (转)
[Android开源项目] GitHub开源项目总结 GitHub开源项目android-styled-dialogs http://neast.cn/forum.php?mod=viewthread ...
- 如何参与一个 GitHub 开源项目?
最近一年开源项目特别的热,很多技术大会或论坛都以开源项目作为主题进行探讨,可见这是一种趋势.而Github作为开源项目的著名托管地,可谓无 人不知,越来越多的个人和公司纷纷加入到Github的大家族里 ...
- 如何参与一个GitHub开源项目
Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力.对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Git ...
- Flink源码分析 - 源码构建
原文地址:https://mp.weixin.qq.com/s?__biz=MzU2Njg5Nzk0NQ==&mid=2247483692&idx=1&sn=18cddc1ee ...
随机推荐
- Go语言自定义类型
Go语言与C/C++类似,C++可通过typedef关键字自定义数据类型(别名.定义结构体等),Go语言则通过type关键字可实现自定义类型的实现 1.自定义类型格式 用户自定义类型使用type,其语 ...
- 一篇文章给你讲清楚运筹优化到底怎么学!基于 SCIP Optimization Suite 的运筹优化入坑教程
[!abstract] 本文笔者用暴躁而又不失严谨性的语言,从优化问题的背景入手,强调了针对实际的工程问题开展的优化建模方法和学校教学内容之间的偏差,并围绕优化建模到底应该怎么学的问题,讲解了如何下载 ...
- Grafana监控指标、日志与链路追踪数据采集到GreptimeDB的完整实践指南
以下是将Grafana监控指标.日志与链路追踪数据采集到GreptimeDB的完整实践指南,涵盖部署.运维.安全及扩展的全流程: 一.整体架构 图表 二.数据采集配置 1. 指标采集(Promethe ...
- 使用Oracle数据库的递归查询语句生成菜单树
SQL 格式 SELECT * FROM TABLE WHERE [...结果过滤语句] START WITH [...递归开始条件] CONNECT BY PRIOR [...递归执行条件] 查询所 ...
- Form 表单在数栈的应用(下):深入篇
这篇文章的主题为我们对 Form 表单在数栈产品中使用之后理解消化的一个过程,通过介绍一些 Form 表单中常用到的方法,来理解部分设计思想,加深我们对技术的追求.主要介绍 Form 表单的创建和 ...
- Teradata在华落幕,国产化崛起,袋鼠云数栈会是更好的选择吗?
2月15日,数仓软件巨头Teradata宣布根据其对中国当前和未来商业环境的慎重评估,将逐步结束在中国的直接运营,后续进入中国公司的关闭程序. 一石激起千层浪,这一消息,在国内的To B市场引起了广泛 ...
- 特殊恢复:ORA-00704、ORA-00604、ORA-01555故障时快速定位触发报错的数据块
我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效 ...
- AI应用实战课学习总结(9)Hello 深度学习
大家好,我是Edison. 最近入坑黄佳老师的<AI应用实战课>,记录下我的学习之旅,也算是总结回顾. 今天是我们的第9站,一起了解下大数据和GPU时代下的 深度学习 和 PyTorch框 ...
- Hadoop入门学习总结系列文章目录
一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼数成金成为当务之急.但数据增长 ...
- GIM 1.5发布了! 支持Windows系统了
GIM 1.5 发布了,现在支持Windows系统使用了. 这样 GIM 就覆盖 Mac, Linux, Windows 三大平台了 新功能 本次更新给 prompt 命令增加了 --reset 选项 ...