背景:
  由于访问国外站点资源, 有时特别慢. 偶尔一次下载, 肯定还能忍受, 对于多次使用或者小团队内部使用, 搭建一个镜像站点, 无疑是个明智的决定.
  这边以搭建CDH5的yum源镜像, 作为例子, 具体阐述如何借助apache2搭建一个目录镜像服务, 以及如何复制站点资源.

1) 搭建apache2服务器
*) 安装apache2
yum install httpd
yum info httpd

*) 确认配置项
/etc/httpd/conf/httpd.conf

DocumentRoot "/var/www/html"

该配置项, 即为apache2默认的根目录

对应的DocumentRoot的目录结构如下所示:

*) 服务开启
service httpd status
service httpd start

*) 服务验证
netstat -nlp | grep -E ":80\s"

浏览器访问

2) 创建访问目录
两种方式:
1). 在DocumentRoot下, 创建文件/软链接来实现
这边以创建软链接为例:
mkdir -p ~/resource
touch ~/resource/hive.txt ~/resource/hbase.txt
ln -s ~/resource /var/www/html/resource
访问 http://172.16.1.106/resource

2). 构建新的Directory标签
*) 编辑/etc/httpd/conf/httpd.conf

Alias /repo "/var/www/repo"
<Directory "/var/www/repo">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

使用Alias命令, 使得Directory:/var/www/repo和url中/repo对应

Indexes: 允许以目录结构展示, FollowSymLinks: 允许在该目录中使用软链接

要使url展现目录结构, 需要避免该目录下有index.html, 否则将展现该index.html的内容, 这个取决于定义

DirectoryIndex index.html index.html.var

*) 建构相关目录和文件
mkdir -p /var/www/repo
touch /var/www/repo/repo.txt

*) 访问验证
访问 http://172.16.1.106/repo

3).复制站点
*) 递归下载站点资源
http://archive-primary.cloudera.com/cm5/redhat/5/x86_64/cm/5.0.1/
http://archive-primary.cloudera.com/cdh5/redhat/5/x86_64/cdh/5.0.1/

cd ~/resource
wget -c -r -np http://archive-primary.cloudera.com/cm5/redhat/5/x86_64/cm/5.0.1/
wget -c -r -np http://archive-primary.cloudera.com/cdh5/redhat/5/x86_64/cdh/5.0.1/

*) 安装createrepo
yum install createrepo

*) 重建repodata
createrepo ~/resource/archive-primary.cloudera.com/cm5/redhat/5/x86_64/cm/5.0.1/
createrepo ~/resource/archive-primary.cloudera.com/cdh5/redhat/5/x86_64/cdh/5.0.1/

*) 建立软链接
ln -s ~/resource/archive-primary.cloudera.com/cm5/redhat/5/x86_64/cm/5.0.1/ /var/www/repo/cm5
ln -s ~/resource/archive-primary.cloudera.com/cdh5/redhat/5/x86_64/cdh/5.0.1/ /var/www/repo/cdh5

*) 验证

参考资料:
apache2配置详解
http://liudaoru.iteye.com/blog/336338
http://jingyan.baidu.com/article/9158e0006581d1a2541228b5.html

shell 脚本实战笔记(5)--搭建资源的镜像服务器的更多相关文章

  1. shell 脚本实战笔记(10)--spark集群脚本片段念念碎

    前言: 通过对spark集群脚本的研读, 对一些重要的shell脚本技巧, 做下笔记. *). 取当前脚本的目录 sbin=`dirname "$0"` sbin=`cd &quo ...

  2. shell 脚本实战笔记(7)--集群网络相关知识和环境搭建

    前言: 对网络相关的知识, 做下笔记. 包括IP地址A/B/C的分类, 静态地址的配置/DNS配置, 以及网卡相关信息查看. *) A/B/C/D类网络地址的划分 IP地址=网络地址+主机地址 或 I ...

  3. shell 脚本实战笔记(11)--Mysql在linux下的安装和简单运维

    前言: linux中安装mysql以及配置的管理, 基础的运维和管理还是需要会一些的. 这边作下笔记, 以求天天向上(^_^). 安装流程:*). 安装mysql-server1). 借助yum检索相 ...

  4. shell 脚本实战笔记(1)--source/fork/exec的区别

    在linux shell编程中, 随着脚本处理规模的变大, 会嵌套调用子进程. 但父进程以不同的方式调用子进程, 其结果和背后的机制不尽相同.这边就简单描述下source/fork/exec调用子进程 ...

  5. shell 脚本实战笔记(9)--linux自动批量添加用户

    前言: 添加linux用户帐号,这个相对简单, 在面对集群, 许多机器的时候, 我们该如何去做和实现? 这篇短文, 简单讲解一些思路, 尽可能地涉及周边的一些知识点. 不光是运维人员会面临这个问题, ...

  6. shell 脚本实战笔记(8)--ssh免密码输入执行命令

    前言: ssh命令, 没有指定密码的参数. 以至于在脚本中使用ssh命令的时候, 必须手动输入密码, 才能继续执行. 这样使得脚本的自动化执行变得很差, 尤其当ssh对应的机器数很多的时候, 会令人抓 ...

  7. shell 脚本实战笔记(6)--集群环境配置检测

    1). 背景: 集群部署的时候, 需要一致的配置和环境设置. 对于虚拟机集群, 可以借助镜像拷贝, 复制和还原集群机器. 对与物理机集群而言, 则不一样, 如果机器一多, 多人去操作和配置, 对于成熟 ...

  8. shell 脚本实战笔记(2)--环境变量PATH的恩怨情仇

    在linux环境下, 相信大家对环境变量PATH, 多多少少有所接触, 这边讲讲PATH的在linux的前世因缘. 先讲讲一个列子 假如我们在为一个新的应用配置其PATH路径中时,  不小心忽略了原先 ...

  9. shell 脚本实战笔记(4)--linux磁盘分区重新挂载

    背景: Hadoop的HDFS文件系统的挂载, 默认指定的文件目录是/mnt/disk{N}. 当运维人员, 不小心把磁盘挂载于其他目录, 比如/mnt/data, /mnt/disk01, /mnt ...

随机推荐

  1. Qt for Embedded Linux

    1. Qt for Embedded Linux http://doc.qt.io/qt-5/embedded-linux.html 2. Installing Qt for Embedded Lin ...

  2. js audio 播放音乐

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. 动态规划-最长可互除子序列 Largest Divisible Subset

    2018-08-28 17:51:04 问题描述: 问题求解: 本题是一个求最优解的问题,很自然的会想到动态规划来进行解决.但是刚开始还是陷入了僵局,直到看到了hint:LIS,才有了进一步的思路.下 ...

  4. 雷林鹏分享:C# 属性(Property)

    C# 属性(Property) 属性(Property) 是类(class).结构(structure)和接口(interface)的命名(named)成员.类或结构中的成员变量或方法称为 域(Fie ...

  5. 使用 Python 的 Socket 模块构建一个 UDP 扫描工具

    译文:oschina 英文:bt3gl 当涉及到对一些目标网络的侦察时,出发点无疑是首先发现宿主主机.这个任务还可能包含嗅探和解析网络中数据包的能力. 几周前,我曾经谈到了如何使用Wireshark来 ...

  6. LeetCode--205--同构字符串

    问题描述: 给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字符不 ...

  7. JS-Object(2) 原型对象 ,prototype属性。

    基础✅ prototype(✅) JS中的继承 使用JSON数据 构建对象实战 基础 关键字"this"指向了当前代码运行时的对象( 原文:the current object t ...

  8. antd-pro1.0使用jest对react组件进行单元测试

    前言 基于React+Ant Design(以下用Antd表示)的项目,在对于自己封装的,或者基于Antd封装的公共组件的自动化测试技术的选型和实践. 背景 随着前端项目越来越大,业务逻辑日益繁杂,协 ...

  9. python-day34--并发编程之多线程

    理论部分 一.什么是线程: 1.线程:一条流水线的工作过程  2.一个进程里至少有一个线程,这个线程叫主线程 进程里真正干活的就是线程 3.进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资 ...

  10. hdu1180 优先队列bfs+判断方向

    诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Subm ...