# GitLab 安装

### Gitlab 社区版安装

> 官网安装方式: https://docs.gitlab.com/15.11/ee/install/docker.html

### 指定版本

```bash
例如： gitlab/gitlab-ce:11.0.6
```

### docker 方式

```bash
docker run 
-itd  
-p 7881:80 
-p 7883:443
-p 7882:22 
-v /home/gitlab/etc:/etc/gitlab  
-v /home/gitlab/log:/var/log/gitlab 
-v /home/gitlab/opt:/var/opt/gitlab 
--restart always 
--privileged=true 
gitlab/gitlab-ce:latest
```

### docker-compose 方式

```yml
version: '3'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    container_name: gitlab
    restart: always
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        gitlab_rails['time_zone'] = 'Asia/Shanghai'
    ports:
      - '7881:80'
      - '7883:443'
      - '7882:22'
    volumes:
      - $PWD/gitlab/config:/etc/gitlab   # 配置
      - $PWD/gitlab/data:/var/opt/gitlab # 数据
      - $PWD/gitlab/logs:/var/log/gitlab # 日志
    privileged: true
```

### 查看密码方式一

* 默认用户 ： root

```bash
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
```

### 查看密码方式二

```bash
docker exec -it gitlab /bin/bash

# 进入控制台
gitlab-rails console -e production

# 查询id为1的用户，id为1的用户是超级管理员
user = User.where(id:1).first

# 修改密码为mj
user.password='qwe123456'

# 保存
user.save!
# 退出
exit
```

### 配置 HTTP 或 SSH(无特殊需要,不改)

> 注意 修改 `修改容器配置` 和 `2.修改http和ssh配置` 请根据实际情况调整，有些服务器可以不设置。 有些配置了还是不行，只能本机访问服务，其他电脑无法访问时，可以另外安装nginx转发gitlab服务解决。

```bash
vi /etc/gitlab/gitlab.rb
# gitlab访问地址，可以写域名。如果端口不写的话默认为80端口
external_url 'http://xx.xx.xx.xx:7881'

# ssh主机ip
gitlab_rails['gitlab_ssh_host'] = 'xx.xx.xx.xx'

# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 7882
```

> /etc/gitlab/gitlab.rb 文件的配置会映射到 /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml 这个文件

### 常用命令

* 启动所有 gitlab 组件： gitlab-ctl start
* 停止所有 gitlab 组件： gitlab-ctl stop
* 停止 postgresql 组件： gitlab-ctl stop postgresql
* 停止相关数据连接服务： gitlab-ctl stop unicorn && gitlab-ctl stop sidekiq
* 重启所有 gitlab 组件： gitlab-ctl restart
* 重启 gitlab-workhorse 组件： gitlab-ctl restart gitlab-workhorse
* 重启所有 gitlab 组件： gitlab-ctl restart
* 查看服务状态： gitlab-ctl status
* 针对某个服务重启 例如重启nginx： gitlab-ctl restart nginx
* 针对某个服务启动 例如启动nginx： gitlab-ctl start nginx
* 针对某个服务关闭 例如关闭nginx： gitlab-ctl stop nginx
* 查看日志(所有): gitlab-ctl tail
* 查看日志(redis): gitlab-ctl tail redis
* 重新加载配置： gitlab-ctl reconfigure
