news 2026/7/22 10:12:08

在CentOS上搭建个人博客网站并安装Hive元数据库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在CentOS上搭建个人博客网站并安装Hive元数据库

1. 前言

今天我在Linux CentOS系统中搭建了一个个人博客网站,用于存放我的学习笔记和文章。这个网站使用了HTML、CSS、JavaScript和PHP技术栈。同时,我还按照教程在虚拟机上安装了Hive元数据库。本文将记录这两个项目的实践过程,分享从零开始搭建个人网站和配置大数据环境的关键步骤。

2. 个人博客网站搭建

2.1 环境准备

首先确保CentOS系统已安装必要的Web服务组件:

# 更新系统 sudo yum update -y 安装Apache Web服务器 sudo yum install httpd -y 安装PHP sudo yum install php php-mysqlnd php-gd php-xml -y 安装MySQL/MariaDB数据库 sudo yum install mariadb-server mariadb -y 启动服务并设置开机自启 sudo systemctl start httpd sudo systemctl start mariadb sudo systemctl enable httpd sudo systemctl enable mariadb

2.2 网站目录结构

在Apache的默认网站目录下创建博客网站:

# 进入网站根目录 cd /var/www/html 创建博客目录结构 mkdir -p myblog/{css,js,images,posts} touch myblog/index.php touch myblog/css/style.css touch myblog/js/main.js

2.3 前端页面设计

创建基本的HTML结构和CSS样式:

<!-- index.php --> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>我的个人博客</title> <link rel="stylesheet" href="css/style.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"> </head> <body> <header> <h1><i class="fas fa-blog"></i> 我的技术博客</h1> <nav> <a href="index.php">首页</a> <a href="posts/">文章列表</a> <a href="about.php">关于我</a> </nav> </header> &lt;main&gt; &lt;section class="welcome"&gt; &lt;h2&gt;欢迎来到我的博客&lt;/h2&gt; &lt;p&gt;这里记录我的学习笔记和技术分享&lt;/p&gt; &lt;/section&gt; &amp;lt;section class="recent-posts"&amp;gt; &amp;lt;h3&amp;gt;&amp;lt;i class="fas fa-newspaper"&amp;gt;&amp;lt;/i&amp;gt; 最新文章&amp;lt;/h3&amp;gt; &amp;lt;?php include 'get_posts.php'; ?&amp;gt; &amp;lt;/section&amp;gt; &lt;/main&gt; &lt;footer&gt; &lt;p&gt;&copy; 2025 我的博客 | 使用PHP + MySQL构建&lt;/p&gt; &lt;/footer&gt; &lt;script src="js/main.js"&gt;&lt;/script&gt; </body> </html>

2.4 CSS样式设计

/* style.css */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: #333; background-color: #f5f5f5; } header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 2rem; text-align: center; box-shadow: 0 4px 6px rgba(0,0,0,0.1); } nav { margin-top: 1rem; } nav a { color: white; text-decoration: none; margin: 0 1rem; padding: 0.5rem 1rem; border-radius: 4px; transition: background-color 0.3s; } nav a:hover { background-color: rgba(255,255,255,0.2); } main { max-width: 1200px; margin: 2rem auto; padding: 0 1rem; } .welcome { background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); margin-bottom: 2rem; } .recent-posts { background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } footer { text-align: center; padding: 1.5rem; background: #333; color: white; margin-top: 2rem; }

2.5 PHP后端功能

创建简单的文章管理系统:

<?php // get_posts.php $servername = "localhost"; $username = "blog_user"; $password = "your_password"; $dbname = "myblog_db"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 查询最新文章 $sql = "SELECT id, title, created_at, excerpt FROM posts ORDER BY created_at DESC LIMIT 5"; $result = $conn->query($sql); if ($result->num_rows > 0) { echo "<ul class='post-list'>"; while($row = $result->fetch_assoc()) { echo "<li>"; echo "<h4><a href='posts/post.php?id=" . $row["id"] . "'>" . $row["title"] . "</a></h4>"; echo "<p>" . $row["excerpt"] . "</p>"; echo "<small>发布时间: " . $row["created_at"] . "</small>"; echo "</li>"; } echo "</ul>"; } else { echo "<p>暂无文章</p>"; } $conn->close(); ?>

2.6 JavaScript交互功能

// main.js document.addEventListener('DOMContentLoaded', function() { // 暗色模式切换 const darkModeToggle = document.createElement('button'); darkModeToggle.textContent = '🌙 暗色模式'; darkModeToggle.style.position = 'fixed'; darkModeToggle.style.top = '20px'; darkModeToggle.style.right = '20px'; darkModeToggle.style.padding = '10px 15px'; darkModeToggle.style.borderRadius = '5px'; darkModeToggle.style.border = 'none'; darkModeToggle.style.cursor = 'pointer'; darkModeToggle.style.backgroundColor = '#667eea'; darkModeToggle.style.color = 'white'; document.body.appendChild(darkModeToggle); darkModeToggle.addEventListener('click', function() { document.body.classList.toggle('dark-mode'); if (document.body.classList.contains('dark-mode')) { document.body.style.backgroundColor = '#1a1a1a'; document.body.style.color = '#f0f0f0'; darkModeToggle.textContent = '☀️ 亮色模式'; } else { document.body.style.backgroundColor = '#f5f5f5'; document.body.style.color = '#333'; darkModeToggle.textContent = '🌙 暗色模式'; } }); // 文章搜索功能 const searchBox = document.createElement('input'); searchBox.type = 'text'; searchBox.placeholder = '搜索文章...'; searchBox.style.marginLeft = '1rem'; searchBox.style.padding = '0.5rem'; searchBox.style.borderRadius = '4px'; searchBox.style.border = '1px solid #ddd'; const nav = document.querySelector('nav'); nav.appendChild(searchBox); searchBox.addEventListener('input', function(e) { const searchTerm = e.target.value.toLowerCase(); const posts = document.querySelectorAll('.post-list li'); posts.forEach(post =&gt; { const text = post.textContent.toLowerCase(); post.style.display = text.includes(searchTerm) ? 'block' : 'none'; }); }); });

3. Hive元数据库安装

3.1 环境要求

在安装Hive之前,需要确保虚拟机已安装以下组件:

  • Java JDK 8或更高版本
  • Hadoop(HDFS和YARN)
  • MySQL或PostgreSQL(作为元数据库)

3.2 安装步骤

# 1. 下载Hive wget https://downloads.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz 2. 解压到指定目录 tar -xzf apache-hive-3.1.3-bin.tar.gz -C /usr/local/ cd /usr/local ln -s apache-hive-3.1.3-bin hive 3. 配置环境变量 echo 'export HIVE_HOME=/usr/local/hive' >> ~/.bashrc echo 'export PATH=$PATH:$HIVE_HOME/bin' >> ~/.bashrc source ~/.bashrc 4. 配置Hive cd $HIVE_HOME/conf cp hive-default.xml.template hive-site.xml cp hive-env.sh.template hive-env.sh cp hive-log4j2.properties.template hive-log4j2.properties

3.3 配置MySQL作为元数据库

# 1. 安装MySQL客户端和服务器 sudo yum install mysql-server mysql -y sudo systemctl start mysqld sudo systemctl enable mysqld 2. 创建Hive元数据库 mysql -u root -p 输入密码后执行以下SQL CREATE DATABASE metastore_db; CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'hivepassword'; GRANT ALL PRIVILEGES ON metastore_db.* TO 'hiveuser'@'localhost'; FLUSH PRIVILEGES; EXIT;

3.4 配置hive-site.xml

<!-- hive-site.xml 关键配置 --> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/metastore_db?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hiveuser</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hivepassword</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <property> <name>hive.exec.scratchdir</name> <value>/tmp/hive</value> </property> </configuration>

3.5 下载MySQL JDBC驱动

# 下载MySQL连接器 wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.33.tar.gz tar -xzf mysql-connector-java-8.0.33.tar.gz cp mysql-connector-java-8.0.33/mysql-connector-java-8.0.33.jar $HIVE_HOME/lib/

3.6 初始化元数据库并启动Hive

# 初始化元数据库 schematool -dbType mysql -initSchema 启动Hive CLI hive 在Hive中测试 hive> CREATE DATABASE mydb; hive> USE mydb; hive> CREATE TABLE users (id INT, name STRING, age INT); hive> SHOW TABLES; hive> DESCRIBE users;

4. 遇到的问题与解决方案

4.1 网站搭建常见问题

  • Apache无法启动:检查80端口是否被占用,使用sudo netstat -tlnp | grep :80
  • PHP无法连接MySQL:确保安装了php-mysqlnd扩展,并重启Apache
  • 权限问题:确保/var/www/html目录有正确的读写权限

4.2 Hive安装常见问题

  • schematool初始化失败:检查MySQL服务是否运行,JDBC驱动是否正确放置
  • Hive无法连接Hadoop:确保Hadoop服务正常运行,HDFS可访问
  • 内存不足:调整Hive的堆内存设置,修改hive-env.sh中的HADOOP_HEAPSIZE

5. 总结与展望

通过这次实践,我掌握了在CentOS系统上搭建个人博客网站的全过程,包括Web服务器配置、前端页面设计、后端PHP开发和数据库集成。同时,通过安装Hive元数据库,我对大数据生态系统的组件安装和配置有了更深入的理解。

未来可以进一步优化:

  1. 为博客添加用户认证和评论系统
  2. 实现文章分类和标签功能
  3. 集成Hive与Spark进行数据分析
  4. 使用Docker容器化部署整个环境

这两个项目虽然技术栈不同,但都体现了Linux环境下软件安装、配置和集成的核心技能,为后续更复杂的企业级应用开发打下了坚实基础。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 10:11:07

Gorm乐观锁原理与电商库存并发控制实践

1. 为什么我们需要乐观锁&#xff1f;在电商秒杀系统中&#xff0c;我经历过一次惨痛的教训。某个爆款商品上线时&#xff0c;系统显示库存充足&#xff0c;但最终超卖了200多件。事后排查发现&#xff0c;当多个用户同时查询到库存为100件&#xff0c;各自完成下单后&#xff…

作者头像 李华
网站建设 2026/7/22 10:10:55

DECODEM企业文档智能信息抽取:从NLP/CV原理到实战应用

在企业数字化转型的浪潮中&#xff0c;如何高效、精准地从海量的公司内部文档&#xff08;如组织结构图、财务报表、会议纪要、合同协议等&#xff09;中提取关键信息&#xff0c;已成为提升运营效率和决策质量的核心挑战。传统的手动处理方式不仅耗时费力&#xff0c;还极易因…

作者头像 李华
网站建设 2026/7/22 10:09:33

2025年六大AI降重工具实战测评与学术写作指南

1. 项目概述&#xff1a;学术降重工具的实战测评需求在学术写作和内容创作领域&#xff0c;降重工具已经成为研究者、学生和文字工作者的刚需。2025年最新一代的降重技术已经突破了简单的同义词替换阶段&#xff0c;开始融合语义理解、上下文重组等AI核心技术。作为经历过数十篇…

作者头像 李华
网站建设 2026/7/22 10:08:20

SpringBoot整合MyBatis常见问题与解决方案

1. 问题现象与背景分析 当你在SpringBoot项目中整合MyBatis时&#xff0c;控制台突然抛出"SqlSessionFactoryBean未找到"的错误&#xff0c;这通常意味着Spring容器在初始化过程中无法正确创建或注入这个关键Bean。作为Java开发者最常用的ORM组合之一&#xff0c;Spr…

作者头像 李华
网站建设 2026/7/22 10:04:10

返利APP跨平台对账系统设计:长短款自动识别与智能自愈机制

返利APP跨平台对账系统设计&#xff1a;长短款自动识别与智能自愈机制 大家好&#xff0c;我是省赚客APP研发者微赚淘客&#xff01; 在电商返利业务中&#xff0c;资金流转的准确性是生命线。我们的系统每日需处理来自淘宝、京东、拼多多等数十个平台的千万级订单数据&#xf…

作者头像 李华
网站建设 2026/7/22 10:03:51

蛋白质序列分析中的词替代基序技术解析与应用

1. 蛋白质序列分析中的词替代基序技术解析 最近在生物信息学领域&#xff0c;蛋白质序列分析技术又有了新突破。清华与百度联合团队提出的"蛋白质词替代基序"方法&#xff0c;正在改变我们理解蛋白质功能的方式。作为一名长期从事蛋白质结构预测的研究者&#xff0c;…

作者头像 李华