centos上搭建gitlab服务器

62 阅读4分钟

blog.csdn.net/w544924116/… blog.csdn.net/w544924116/…

1、确定下服务器版本

cat /etc/redhat-release

2、安装依赖包

安装curl、policycoreutils-python、openssh-server依赖包

yum install -y curl policycoreutils-python openssh-server

出现以下显示证明安装成功

image.png

3、启动sshd服务

# 设置开机自启动sshd服务
systemctl enable sshd
# 启动sshd服务
systemctl start sshd

image.png

4、防火墙配置(非必须)

为了安全性等问题,我们一般会进行防火墙的配置。如果只是学习使用,可忽略此配置。我们可以按照自己的需求进行开通或者关闭(我没开启防火墙,防火墙操作可以忽略)

查看防火墙状态

systemctl status firewalld 
# 或
firewall-cmd --state

开启防火墙(非必须)

为了安全性等问题,我们一般会进行防火墙的配置。如果只是学习使用,可忽略此配置。我们可以按照自己的需求进行开通或者关闭

# 设置为开机自启动
systemctl enable firewalld
# 开启防火墙
systemctl start firewalld

添加http和https服务到firewalld

允许http/https服务通过, pemmanent表示永久生效,若不加--permanent系统下次启动后就会失效

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

重启防火墙

systemctl reload firewalld

注意:开启防火墙后,要对外开放端口,才能访问到ip:端口地址。

# 开放防火墙端口(以8080端口为例)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 删除防火墙端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent

5、postfix配置(非必须)

postfix是用来发送通知邮件的

安装postfix

yum install -y postfix

启动postfix

# 设置开机自启动
systemctl enable postfix
# 启动postfix
systemctl start postfix

查看是否启动成功

systemctl status postfix

出现下面显示证明成功

image.png

6、下载gitlab

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

安装gitlab

# 安装gitlab并设置访问地址
yum install -y gitlab-ee

如果下载过程发现报错,可以使用清华源下载:blog.csdn.net/w544924116/…

image.png

配置gitlab页面访问地址

vi  /etc/gitlab/gitlab.rb

i进入编辑模式,将external_url 设置成ip/域名+端口, esc退出编辑模式 :wq保存 image.png

重置gitlab配置

gitlab-ctl reconfigure

image.png 看到用户为root,密码可以在/etc/gitlab/initial_root_password文件中查看

vim /etc/gitlab/initial_root_password

LWLNUYM0oJx7iQZgSEK9PKIzMjX9RuQ4obswR304lf8=

访问gitlab

http://xxxxxxxxx:10086/

image.png

gitlab服务启动、停止

# 停止
sudo gitlab-ctl stop
# 启动
sudo gitlab-ctl start

====================================

用docker-compose的方式搭建

docker-compose.yml配置参考地址

https://github.com/sameersbn/docker-gitlab

在home目录下创建gitlab目录,创建docker-compose.yml文件把修改过的配置copy进去

注意修改:
ports:
    - "10087:80" # web服务映射端口10087是主机端口
    - "10022:22" # ssh映射端口
- GITLAB_HOST=xxx.x.xxx.xxx # 设置域名|ip
- GITLAB_PORT=10087    # 端口和上面的端口一致
- GITLAB_SSH_PORT=10022 # ssh端口
- GITLAB_ROOT_PASSWORD=xxxxxx # 设置root密码(大于9位)
- GITLAB_ROOT_EMAIL=fengqinghai123@163.com # 设置root邮箱

# 这几个邮箱也设置了把
- GITLAB_EMAIL=xxx@163.com
- GITLAB_EMAIL_REPLY_TO=xxx@163.com
- GITLAB_INCOMING_EMAIL_ADDRESS=xxx@163.com

docker-compose.yml

version: '2.3'

services:
  redis:
    restart: always
    image: redis:6.2.6
    command:
    - --loglevel warning
    volumes:
    - redis-data:/data:Z

  postgresql:
    restart: always
    image: sameersbn/postgresql:14
    volumes:
    - postgresql-data:/var/lib/postgresql:Z
    environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm,btree_gist

  gitlab:
    restart: always
    image: sameersbn/gitlab:16.2.1
    depends_on:
    - redis
    - postgresql
    ports:
    - "10087:80"
    - "10022:22"
    volumes:
    - gitlab-data:/home/git/data:Z
    healthcheck:
      test: ["CMD", "/usr/local/sbin/healthcheck"]
      interval: 5m
      timeout: 10s
      retries: 3
      start_period: 5m
    environment:
    - DEBUG=false

    - DB_ADAPTER=postgresql
    - DB_HOST=postgresql
    - DB_PORT=5432
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production

    - REDIS_HOST=redis
    - REDIS_PORT=6379

    - TZ=Asia/Shanghai
    - GITLAB_TIMEZONE=Kolkata

    - GITLAB_HTTPS=false
    - SSL_SELF_SIGNED=false

    - GITLAB_HOST=xxx.x.xxx.xxx
    - GITLAB_PORT=10087
    - GITLAB_SSH_PORT=10022
    - GITLAB_RELATIVE_URL_ROOT=
    - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string

    - GITLAB_ROOT_PASSWORD=xxxxxxxxx # 大于9位
    - GITLAB_ROOT_EMAIL=xxx@163.com

    - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
    - GITLAB_NOTIFY_PUSHER=false

    - GITLAB_EMAIL=xxx@163.com
    - GITLAB_EMAIL_REPLY_TO=xxx@163.com
    - GITLAB_INCOMING_EMAIL_ADDRESS=xxx@163.com

    - GITLAB_BACKUP_SCHEDULE=daily
    - GITLAB_BACKUP_TIME=01:00

    - SMTP_ENABLED=false
    - SMTP_DOMAIN=www.example.com
    - SMTP_HOST=smtp.gmail.com
    - SMTP_PORT=587
    - SMTP_USER=mailer@example.com
    - SMTP_PASS=password
    - SMTP_STARTTLS=true
    - SMTP_AUTHENTICATION=login

    - IMAP_ENABLED=false
    - IMAP_HOST=imap.gmail.com
    - IMAP_PORT=993
    - IMAP_USER=mailer@example.com
    - IMAP_PASS=password
    - IMAP_SSL=true
    - IMAP_STARTTLS=false

    - OAUTH_ENABLED=false
    - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
    - OAUTH_ALLOW_SSO=
    - OAUTH_BLOCK_AUTO_CREATED_USERS=true
    - OAUTH_AUTO_LINK_LDAP_USER=false
    - OAUTH_AUTO_LINK_SAML_USER=false
    - OAUTH_EXTERNAL_PROVIDERS=

    - OAUTH_CAS3_LABEL=cas3
    - OAUTH_CAS3_SERVER=
    - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
    - OAUTH_CAS3_LOGIN_URL=/cas/login
    - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
    - OAUTH_CAS3_LOGOUT_URL=/cas/logout

    - OAUTH_GOOGLE_API_KEY=
    - OAUTH_GOOGLE_APP_SECRET=
    - OAUTH_GOOGLE_RESTRICT_DOMAIN=

    - OAUTH_FACEBOOK_API_KEY=
    - OAUTH_FACEBOOK_APP_SECRET=

    - OAUTH_TWITTER_API_KEY=
    - OAUTH_TWITTER_APP_SECRET=

    - OAUTH_GITHUB_API_KEY=
    - OAUTH_GITHUB_APP_SECRET=
    - OAUTH_GITHUB_URL=
    - OAUTH_GITHUB_VERIFY_SSL=

    - OAUTH_GITLAB_API_KEY=
    - OAUTH_GITLAB_APP_SECRET=

    - OAUTH_BITBUCKET_API_KEY=
    - OAUTH_BITBUCKET_APP_SECRET=
    - OAUTH_BITBUCKET_URL=

    - OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
    - OAUTH_SAML_IDP_CERT_FINGERPRINT=
    - OAUTH_SAML_IDP_SSO_TARGET_URL=
    - OAUTH_SAML_ISSUER=
    - OAUTH_SAML_LABEL="Our SAML Provider"
    - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
    - OAUTH_SAML_GROUPS_ATTRIBUTE=
    - OAUTH_SAML_EXTERNAL_GROUPS=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=

    - OAUTH_CROWD_SERVER_URL=
    - OAUTH_CROWD_APP_NAME=
    - OAUTH_CROWD_APP_PASSWORD=

    - OAUTH_AUTH0_CLIENT_ID=
    - OAUTH_AUTH0_CLIENT_SECRET=
    - OAUTH_AUTH0_DOMAIN=
    - OAUTH_AUTH0_SCOPE=

    - OAUTH_AZURE_API_KEY=
    - OAUTH_AZURE_API_SECRET=
    - OAUTH_AZURE_TENANT_ID=

volumes:
  redis-data:
  postgresql-data:
  gitlab-data:

实时推送某个服务的日志到控制台
ctrl+c退出

# 执行docker-compose.yml文件
docker compose up -d
# 停止 docker compose的服务
docker compose down -v  # -v 参数选传,带上后会把原来的数据都删除掉
# 查看gitlab服务的日志(会实时看到gitlab的启动情况,知道什么时候启动好了)web是yml中定义的服务名
docker compose logs -f gitlab
# 普通产看日志
docker logs 容器ID
# 启动大概需要2-4分钟,查看容器状态
docker ps
#或
docker ps -a |grep gitlab
# ip+端口访问gitlab