联网环境下安装gitlab还是很轻松的,但是生产环境往往不能联网,为了部署个gitlab还得花点力气!
本文采取的是,先制作本地yum源,然后再通过自定义yum源将gitlab-ce纳入yum源的方式,再通过yum install进行安装
YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
在Linux上使用源码的方式安装软件非常满分,使用yum可以简化安装的过程
安装httpd并确认安装
yum instll -y httpd,
列出所有可用的package和package组
yum list
清除所有缓冲数据
yum clean all
列出一个包所有依赖的包
yum deplist httpd
删除httpd
yum remove httpd
YUM源虽然可以简化我们在Linux上安装软件的过程,但是生成环境通常无法上网,不能连接外网的YUM源,说以接就无法使用yum命令安装软件了。为了在内网中也可以使用yum安装相关的软件,就要配置yum源。
YUM源其实就是一个保存了多个RPM包的服务器,可以通过http的方式来检索、下载并安装相关的RPM包
1,准备一台Linux服务器,用最简单的版本CentOS-6.7-x86_64-minimal.iso (其他的iso包也可以,和本机linux版本相匹配)
,2,配置好这台服务器的IP地址
,3,上传CentOS-6.7-x86_64-bin-DVD1.iso到服务器
这里说明下,要上传文件,可以通过sftp,默认情况下,SFTP 协议采用和 SSH 传输协议一样的方式建立到远程服务器的安全连接。
再secureCRT中用ALT+P,调出SFTP,然后用pwd 和 cd 找到需要下载到的位置,再将iso拖动过来即可。生成如下命令:
put -r "D:\software\rhel-server-6.5-x86_64-dvd.iso"
4,将CentOS-6.7-x86_64-bin-DVD1.iso镜像挂载到某个目录
mkdir /var/iso
mount -o loop CentOS-6.7-x86_64-bin-DVD1.iso /var/iso
-o 是mount命令的一个参数,Options的首字母,后面跟着mount选项喽
loop:用来把一个文件当成硬盘分区mount到目录
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集
在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备。它能使我们像块设备一样访问一个文件。
在使用之前,一个 loop 设备必须要和一个文件进行连接。这种结合方式给用户提供了一个替代块特殊文件的接口。因此,如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被 mount 起来。
5,修改本机上的YUM源配置文件,将源指向自己
备份原有的YUM源的配置文件
cd /etc/yum.repos.d/
rename .repo .repo.bak *
vi CentOS-Local.repo
[base] name=CentOS-Local baseurl=file:///var/iso gpgcheck=1 enabled=1 #很重要,1才启用 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 |
添加上面内容保存退出,这里我没有填写gpgkey,也是可以的
6,清除YUM缓冲
yum clean all
7,列出可用的YUM源
yum repolist
我还喜欢用 yum list 看下能安装哪些东西
不过博主用的主机是redhat enterprise 6.8的,到了这一步直接报了错~~
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Repository 'redhat-6.8': Error parsing config: Error parsing "enabled = '1\xc2\xa0\xc2\xa0'": invalid boolean value
第一句话是说:这个系统还没有再红帽订阅管理里面注册(红帽企业版的要收费!)。你能够用订阅管理来注册!
第二句话,注意哦,特指 redhat-6.8 这个仓库文件里面存在格式问题。读取"enabled = '1\xc2\xa0\xc2\xa0'": 这一段存在转换问题,有无效的布尔值。查的网上结论是注释的问题。
8,安装相应的软件
yum install -y httpd
9.开启httpd使用浏览器访问http://192.168.0.100:80(如果访问不通,检查防火墙是否开启了80端口或关闭防火墙)
service httpd start
10.将YUM源配置到httpd(Apache Server)中,其他的服务器即可通过网络访问这个内网中的YUM源了
cp -r /var/iso/ /var/www/html/CentOS-6.7
11.取消先前挂载的镜像
umount /var/iso
12.在浏览器中访问http://192.168.0.100/CentOS-6.7/
13,让其他需要安装RPM包的服务器指向这个YUM源,准备一台新的服务器,备份或删除原有的YUM源配置文件
cd /etc/yum.repos.d/
rename .repo .repo.bak *
vi CentOS-Local.repo
[base] name=CentOS-Local baseurl=http://192.168.0.100/CentOS-6.7 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 |
添加上面内容保存退出
14,在这台新的服务器上执行YUM的命令
yum clean all
yum repolist
15,安装相应的软件
yum install -y gcc
16,加入依赖包到私有yum的repository
进入到repo目录
执行命令: createrepo .
上面的办法实际上是处理类似于iso文件的办法,如果想要安装任意的rpm文件,则要采取以下的办法:
[root@min-base yum.repos.d]# yum -y install createrepo
准备rpm包
(需要自己确定依赖包)、目录。我这里用gitlab-ce-10.0.0-ce.0.el6.x86_64.rpm 直接做演示
[root@min-base ~]# mkdir -p /yum/yum-custom/packages
[root@min-base ~]# cp gitlab-ce-10.0.0-ce.0.el6.x86_64.rpm /yum/yum-custom/packages/
创建repo
[root@min-base ~]# createrepo -u -d /yum/yum-custom/
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@min-base ~]# ll /yum/yum-custom/
总用量 8
drwxr-xr-x 2 root root 4096 1月 7 20:21 packages
drwxr-xr-x 2 root root 4096 1月 7 20:22 repodata
[root@min-base ~]#
局域网YUM源可以配成:本地YUM源 + FTP服务器
这里使用自定义源yum-custom(见上面) + VSFTP演示。
下载vsftpd
[root@min-base ~]# yum -y install vsftpd
配置vsftpd
编辑vsftp.conf
[root@min-base ~]# vi /etc/vsftpd/vsftpd.conf
并增加匿名用户root目录(默认已经启用匿名访问)
anon_root=/yum/
注意目录权限如下
[root@min-base ~]# ll -a /yum/
total 8
drwxr-xr-x. 4 root root 37 Dec 20 07:37 .
dr-xr-xr-x. 18 root root 4096 Dec 20 06:32 ..
drwxr-xr-x. 4 root root 36 Dec 20 07:08 yum-custom
dr-xr-xr-x. 8 root root 4096 Dec 10 2015 yum-iso
关闭selinux
临时
[root@min-base ~]# setenforce 0
或者,永久:
编辑config
[root@min-base ~]# vi /etc/selinux/config
设置
SELINUX=disabled
重启
[root@min-base ~]# reboot
启用vsftp
[root@min-base ~]# systemctl start vsftpd
[root@min-base ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@min-base ~]#
局域网使用
局域网另外一台机器min-client,
配置repo
编辑repo
[root@min-client ~]# vim /etc/yum.repos.d/CentOS-Media.repo
内容如下
[c7-media]
name=CentOS-$releasever - Media
baseurl=ftp://192.168.118.133/yum-custom
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
其中192.168.118.133为上面vsftp服务器地址
启用这个局域网的repo
[root@min-client ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: c7-media
Cleaning up everything
[root@min-client ~]# yum makecache
Loaded plugins: fastestmirror
c7-media | 3.0 kB 00:00
(1/3): c7-media/filelists_db | 880 B 00:00
(2/3): c7-media/other_db | 1.3 kB 00:00
(3/3): c7-media/primary_db | 1.8 kB 00:00
Determining fastest mirrors
Metadata Cache Created
[root@min-client ~]#
使用
[root@min-base ~]# yum -y install tree
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
--> Finished Dependency Resolution
目前差不多这些就够用了。以后有时间把163的YUM源爬下来,当本地源用。
由于yum源的问题,rpm方式安装gitlab我也进行了尝试。
先来个下载官网:
https://packages.gitlab.com/gitlab/gitlab-ce/
当时就想着版本的话选稍微老一点的,毕竟公司的虚机也就6.8
因此我选了10.08这个版本
这里有个问题,以后再来探讨:怎么选软件的版本?
下载 gitlab-ce-10.8.0-ce.0.el6.x86_64.rpm
注意el6指的是 redhat 6版本,el7就是7版本咯
EL是Red Hat Enterprise Linux的简写
- EL6软件包用于在Red Hat 6.x, CentOS 6.x, and CloudLinux 6.x进行安装
- EL5软件包用于在Red Hat 5.x, CentOS 5.x, CloudLinux 5.x的安装
- EL7 软件包用于在Red Hat 7.x, CentOS 7.x, and CloudLinux 7.x的安装
rpm -ivh gitlab-ce-10.8.0-ce.0.el6.x86_64.rpm 安装
选项与参数:
-i :install 的意思
-v :察看更细部的安装信息画面
-h :以安装信息列显示安装进度
安装完之后再/opt/gitlab可以看到gitlab的目录。
ls后的目录结构:
bin etc LICENSES var
dependency_licenses.json init service version-manifest.json
embedded LICENSE sv version-manifest.txt
有一点奇怪的地方,gitlab-ctl 命令没有注册成全局变量,不能直接启动。
我是在bin目录下采用 ./gitlab-ctl 启动相关服务
后来重新安装:rpm -e之后再安装就可以了!