环境准备
需要装的一些东西
以上环境是必须要装的,由于我还没学明白docker
,所以这里就不提了。
目录结构
以下是Halo在运行时所产生目录(halo-next
)的解释
db
:存放 H2 Database 的物理文件,如果你使用其他数据库,那么不会存在这个目录。themes
:里面包含用户所安装的主题。plugins
:里面包含用户所安装的插件。attachments
:附件目录。logs
:运行日志目录。
启动开发环境
想要完整的运行Halo,目前需要三个部分:
Halo 主项目(halo-dev/halo)
UI,包括 Console 控制台和 UC 个人中心(托管在 Halo 主项目)
主题(Halo 主项目内已包含默认主题)
从 Halo 2.11 开始,Halo 项目的
ui
目录同时包含了 Console(管理控制台)和 UC(个人中心),以下统称为 UI。当前 Halo 主项目并不会将 UI 的构建资源托管到 Git 版本控制,所以在开发环境是需要同时运行 UI 项目的。当然,在我们的最终发布版本的时候会在 CI 中自动构建 UI 到 Halo 主项目。
也就是说我们只需要克隆主项目就好了
克隆项目
如果你fork了官方的库,就需要将halo-dev
替换为你的Github用户名
git clone https://github.com/halo-dev/halo
# 或者使用 ssh 的方式 clone(推荐)
# git clone git@github.com:halo-dev/halo.git
# 或者使用 GitHub CLI 克隆(推荐)
# gh repo clone halo-dev/halo
# 或者使用 GitHub CLI Fork(推荐)
# gh repo fork halo-dev/halo
运行UI服务
打开任意的终端并进入Halo项目的根目录,执行以下命令
cd path/to/halo/ui
pnpm install
pnpm build:packages
pnpm dev
如果终端打印了以下信息则代表运行正常(注意,这个过程最好关闭代理,我之前就是因为开着代理死活down不下来):
VITE v4.2.3 ready in 638 ms
# Console 控制台服务
➜ Local: http://localhost:3000/console/
# UC 个人中心服务
➜ Local: http://localhost:4000/uc/
目前不要急着使用3000/4000端口访问,会出现跨域问题,看之后的配置再说
“跨域”是指在不同的域(Domain)之间进行资源访问或数据交换的操作。域通常指的是网络中网站或服务器的标识,通常由协议、域名和端口组成,例如
https://example.com
。跨域的常见场景:
浏览器的跨域问题:
当一个网页的脚本(如 JavaScript)试图访问与当前页面不同域的资源时,就会触发浏览器的跨域安全限制。这种限制叫做 同源策略(Same-Origin Policy),它限制了不同源的网页之间的脚本访问,以防止恶意操作。
例如,假设你在访问
https://example.com
,如果它的 JavaScript 脚本尝试通过XMLHttpRequest
或fetch
请求访问https://anotherdomain.com
,浏览器默认会阻止这种请求,认为这是跨域操作。跨域请求(CORS):
CORS(Cross-Origin Resource Sharing) 是一种机制,它允许浏览器向不同域的服务器发起请求,并通过响应中的特定头部信息来决定是否允许跨域访问。CORS 是一种标准化的跨域解决方案。
举个例子,如果
https://example.com
的网页向https://anotherdomain.com
发起 API 请求,anotherdomain.com
的服务器可以通过设置响应头(如Access-Control-Allow-Origin
)来允许跨域请求。跨域数据传输:
在 Web 开发中,跨域常用于不同站点间的数据交互。例如,当你的前端网页和后端 API 在不同的服务器上时,前端和后端之间的请求就会涉及跨域问题。
跨域框架或技术:
一些常见的跨域技术包括 JSONP(跨域请求 JSON 数据的旧技术)、WebSocket(用于跨域实时通信)和跨域代理等。
总结:
“跨域”主要指的是跨越不同的网络域进行的资源访问或数据交换。由于浏览器的同源策略,这种跨域请求可能会受到限制,需要使用 CORS、代理等方式来解决。
运行Halo后台
在 IntelliJ IDEA 中打开 Halo 项目,等待 Gradle 初始化和依赖下载完成。
如果你的Gradle像我一样干什么都很慢的话可以参考一下我这篇换源
https://f10atingheart.xyz/archives/solve-gradle-network-problem 或者参考这篇直接让Gradle走代理
https://f10atingheart.xyz/archives/set-proxy-for-gradle
下载预设插件(可选)
# Windows
./gradlew.bat downloadPluginPresets
# macOS / Linux
./gradlew downloadPluginPresets
修改 IntelliJ IDEA 的运行配置
Windows
将 Active Profiles 改为
dev,win
点击IDEA的▶️运行按钮,等待启动完成
或者你也可以使用
gradle
启动
# macOS / Linux
./gradlew bootRun --args="--spring.profiles.active=dev"
# Windows
gradlew.bat bootRun --args="--spring.profiles.active=dev,win"
最终会提供以下几个网址
网站首页:http://localhost:8090
Console 控制台:http://localhost:8090/console
UC 个人中心:http://localhost:8090/uc