GitHub与GitLab的区别以及GitLab的搭建与使用
1 | https://www.jianshu.com/p/947eaa90d6cf |
一. 搭建GitLab
环境配置
1. 系统:Red-Hat系列CentOS 7.x-x86_64(笔者采用的是CentOS7.2)
2. CPU:建议双核以上
3. 内存:2GB(官方建议4GB以上,请看下图官方给出的建议)
1 2 3 4 5 6 7 | yum install -y curl policycoreutils-python openssh-server openssh-clients //安装 curl policycoreutils-python openssh-server openssh-clients systemctl enable sshd.service //开机启动 sshd systemctl start sshd.service //运行 sshd systemctl start firewalld.service //运行 sshd systemctl enable firewalld.service //开机启动 firewalld firewall-cmd --zone=public --permanent --add-service=http //加入防火墙规则 systemctl restart firewalld.service //重新载入防火墙 |
二. 安装
GitLab官方文档中有多种安装方式,分别为deb,rpm,node,python,gem。详情请看:https://packages.gitlab.com/gitlab/gitlab-ce/install
2-1. 笔者采用的是rpm安装方式,命令行下输入
1 | curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash |
然后静静等待完成,此时细心的同学会发现这是个shell? 没错,这是官方的一个shell,有兴趣的同学可以研究一下这个shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | #!/bin/bash unknown_os () { echo "Unfortunately, your operating system distribution and version are not supported by this script." echo echo "You can override the OS detection by setting os= and dist= prior to running this script." echo "You can find a list of supported OSes and distributions on our website: https://packages.gitlab.com/docs#os_distro_version" echo echo "For example, to force CentOS 6: os=el dist=6 ./script.sh" echo echo "Please email support@packagecloud.io and let us know if you run into any issues." exit 1 } curl_check () { echo "Checking for curl..." if command -v curl > /dev/null; then echo "Detected curl..." else echo "Installing curl..." yum install -d0 -e0 -y curl fi } detect_os () { if [[ ( -z "${os}" ) && ( -z "${dist}" ) ]]; then if [ -e /etc/os-release ]; then . /etc/os-release os=${ID} if [ "${os}" = "poky" ]; then dist=`echo ${VERSION_ID}` elif [ "${os}" = "sles" ]; then dist=`echo ${VERSION_ID}` elif [ "${os}" = "opensuse" ]; then dist=`echo ${VERSION_ID}` else dist=`echo ${VERSION_ID} | awk -F '.' '{ print $1 }'` fi elif [ `which lsb_release 2>/dev/null` ]; then # get major version (e.g. '5' or '6') dist=`lsb_release -r | cut -f2 | awk -F '.' '{ print $1 }'` # get os (e.g. 'centos', 'redhatenterpriseserver', etc) os=`lsb_release -i | cut -f2 | awk '{ print tolower($1) }'` elif [ -e /etc/oracle-release ]; then dist=`cut -f5 --delimiter=' ' /etc/oracle-release | awk -F '.' '{ print $1 }'` os='ol' elif [ -e /etc/fedora-release ]; then dist=`cut -f3 --delimiter=' ' /etc/fedora-release` os='fedora' elif [ -e /etc/redhat-release ]; then os_hint=`cat /etc/redhat-release | awk '{ print tolower($1) }'` if [ "${os_hint}" = "centos" ]; then dist=`cat /etc/redhat-release | awk '{ print $3 }' | awk -F '.' '{ print $1 }'` os='centos' elif [ "${os_hint}" = "scientific" ]; then dist=`cat /etc/redhat-release | awk '{ print $4 }' | awk -F '.' '{ print $1 }'` os='scientific' else dist=`cat /etc/redhat-release | awk '{ print tolower($7) }' | cut -f1 --delimiter='.'` os='redhatenterpriseserver' fi else aws=`grep -q Amazon /etc/issue` if [ "$?" = "0" ]; then dist='6' os='aws' else unknown_os fi fi fi if [[ ( -z "${os}" ) || ( -z "${dist}" ) ]]; then unknown_os fi # remove whitespace from OS and dist name os="${os// /}" dist="${dist// /}" echo "Detected operating system as ${os}/${dist}." } finalize_yum_repo () { echo "Installing pygpgme to verify GPG signatures..." yum install -y pygpgme --disablerepo='gitlab_gitlab-ce' pypgpme_check=`rpm -qa | grep -qw pygpgme` if [ "$?" != "0" ]; then echo echo "WARNING: " echo "The pygpgme package could not be installed. This means GPG verification is not possible for any RPM installed on your system. " echo "To fix this, add a repository with pygpgme. Usualy, the EPEL repository for your system will have this. " echo "More information: https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F" echo # set the repo_gpgcheck option to 0 sed -i'' 's/repo_gpgcheck=1/repo_gpgcheck=0/' /etc/yum.repos.d/gitlab_gitlab-ce.repo fi echo "Installing yum-utils..." yum install -y yum-utils --disablerepo='gitlab_gitlab-ce' yum_utils_check=`rpm -qa | grep -qw yum-utils` if [ "$?" != "0" ]; then echo echo "WARNING: " echo "The yum-utils package could not be installed. This means you may not be able to install source RPMs or use other yum features." echo fi echo "Generating yum cache for gitlab_gitlab-ce..." yum -q makecache -y --disablerepo='*' --enablerepo='gitlab_gitlab-ce' } finalize_zypper_repo () { zypper --gpg-auto-import-keys refresh gitlab_gitlab-ce } main () { detect_os curl_check yum_repo_config_url="https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/config_file.repo?os=${os}&dist=${dist}&source=script" if [ "${os}" = "sles" ] || [ "${os}" = "opensuse" ]; then yum_repo_path=/etc/zypp/repos.d/gitlab_gitlab-ce.repo else yum_repo_path=/etc/yum.repos.d/gitlab_gitlab-ce.repo fi echo "Downloading repository file: ${yum_repo_config_url}" curl -sSf "${yum_repo_config_url}" > $yum_repo_path curl_exit_code=$? if [ "$curl_exit_code" = "22" ]; then echo echo echo -n "Unable to download repo config from: " echo "${yum_repo_config_url}" echo echo "This usually happens if your operating system is not supported by " echo "packagecloud.io, or this script's OS detection failed." echo echo "You can override the OS detection by setting os= and dist= prior to running this script." echo "You can find a list of supported OSes and distributions on our website: https://packages.gitlab.com/docs#os_distro_version" echo echo "For example, to force CentOS 6: os=el dist=6 ./script.sh" echo echo "If you are running a supported OS, please email support@packagecloud.io and report this." [ -e $yum_repo_path ] && rm $yum_repo_path exit 1 elif [ "$curl_exit_code" = "35" -o "$curl_exit_code" = "60" ]; then echo echo "curl is unable to connect to packagecloud.io over TLS when running: " echo " curl ${yum_repo_config_url}" echo echo "This is usually due to one of two things:" echo echo " 1.) Missing CA root certificates (make sure the ca-certificates package is installed)" echo " 2.) An old version of libssl. Try upgrading libssl on your system to a more recent version" echo echo "Contact support@packagecloud.io with information about your system for help." [ -e $yum_repo_path ] && rm $yum_repo_path exit 1 elif [ "$curl_exit_code" -gt "0" ]; then echo echo "Unable to run: " echo " curl ${yum_repo_config_url}" echo echo "Double check your curl installation and try again." [ -e $yum_repo_path ] && rm $yum_repo_path exit 1 else echo "done." fi if [ "${os}" = "sles" ] || [ "${os}" = "opensuse" ]; then finalize_zypper_repo else finalize_yum_repo fi echo echo "The repository is setup! You can now install packages." } main |
2-2. 好了,完成之后输入
1 | yum search gitlab // 可以看到 gitlab-ce.x86_64 |
可看到库已经添加进来,注意是上边那个,我的只有ce版,没有ee版,从这可以看到GitLab包含了 Nginx,PostgreSQL数据库,还有Redis
ee版是企业版,
ce版是社区版,
2-3. 有了这个之后就可以直接安装啦,输入
1 | yum install -y gitlab-ce.x86_64 |
2-4. 此时此刻,GitLab 终于装上了! 然后按照提示 修改 /etc/gitlab/gitlab.rb 把 external_url 中的地址修改一下
1 | vi /etc/gitlab/gitlab.rb |
1 | external_url= 'http:192.168.122.19' //一定要有"="号,就可以跳过2-6报错 |
2-5. 完成之后执行
1 | gitlab-ctl reconfigure |
出现如下错误”GitLab external URL must include a schema and FQDN, e.g. http://gitlab.example.com/”
2-6. 解决报错”GitLab external URL must include a schema and FQDN, e.g. http://gitlab.example.com/”
1 | vi /etc/gitlab/gitlab.rb |
1 | external_url 'http:192.168.122.19' 改成 external_url= 'http:192.168.122.19' |
继续静静地等待配置和启动服务完成….
终于等到完成了,立马在浏览器中输入地址,结果..