Недавно присоединился к компании и обнаружил, что компания все еще использует устаревший производственный инструмент svn.Из-за интенсивного использования svn и git, зная различия между этими двумя инструментами, они пошли все дальше и дальше по пути использования git. Итак, после сильного предложения моего начальства позволить мне внедрить git и его личный склад gitlab в компанию, концепция Amway «затачивать ножи без ошибок рубить плотников» была окончательно убеждена мной. Ниже приведены подробные заметки, которые я сделал во время установки и записи, чтобы после установки я мог поделиться ими со своими коллегами, чтобы я мог понять их напрямую и сократить затраты на обучение команды.
Преимущества git
- git распространяется, svn нет git можно использовать локально распределенным образом, а различные исторические трассировки можно случайно сохранять, не беспокоясь о загрязнении сервера.Вы можете отправлять код и просматривать журналы, не подключаясь к серверу.
- Ветки GIT и ветки SVN отличаются Ветка в SVN на самом деле является копией репозитория, а репозиторий git — это моментальный снимок, поэтому переключение git, слияние веток и т. д. происходит быстрее.
- git имеет мощную систему управления репозиторием кода — gitlab Очень удобно управлять разрешениями, код-ревью, создавать и управлять проектами
Введение в GitLab
GitLab: это онлайн-репозиторий кода, на котором размещается программное обеспечение на основе Git. Вы можете использовать gitlab для самостоятельного создания системы, аналогичной Github. Обычно он используется для создания частных серверов git во внутренних сетях, таких как предприятия и школы. Возможности: Gitlab — это платформа управления кодом, которая обеспечивает размещение кода, проверку коммитов и отслеживание проблем. Это очень важно для управления качеством разработки программного обеспечения. Редакции: GitLab делится на Community Edition (CE) и Enterprise Edition (EE). Конфигурация: рекомендуется иметь 2 ядра процессора и более 2 ГБ памяти.
Сервисный состав Gitlab:
Nginx: статический веб-сервер. gitlab-shell: используется для обработки команд Git и изменения списка разрешенных ключей. (Рубин) gitlab-workhorse: Облегченный обратный прокси-сервер. (идти)
GitLab Workhorse — гибкий обратный прокси. Он обрабатывает некоторые большие HTTP-запросы, такие как загрузка файлов, загрузка файлов, Git push/pull и загрузка пакетов Git. Другие запросы обратно проксируются в приложение GitLab Rails, которое обратно проксируется в серверный единорог.
logrotate: инструмент управления лог-файлами. postgresql: база данных. Redis: кэш базы данных. sidekiq: используется для выполнения задач в очереди в фоновом режиме (асинхронное выполнение). (Рубин) unicorn: HTTP-сервер для Rack-приложений, на котором размещены приложения GitLab Rails. (Веб-сервер Ruby, в основном написанный на Ruby)
Установка GitLab
1. Исходная установка
2.юм установка
Официальный адрес источника:about.git lab.com/downloads/#…Зеркальный источник Университета Цинхуа:Зеркало. Дыхание. Его план на четыре года. Квота. Способности/помощь/git lab…
Создайте новый /etc/yum.repos.d/gitlab_gitlab-ce.repo со следующим содержимым:
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
Установить зависимости
sudo yum install curl openssh-server openssh-clients postfix cronie
sudo service postfix start
sudo chkconfig postfix on
#这句是用来做防火墙的,避免用户通过ssh方式和http来访问。
sudo lokkit -s http -s ssh
повторно выполнить
sudo yum makecache
sudo yum install gitlab-ce
sudo gitlab-ctl reconfigure #Configure and start GitLab
Настройте доменное имя: vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
# 外网访问的端口,如果服务器已经有服务器占用了80,那么这里可以改成其它
listen *:8888;
server_name gitlab.test.domain.com;
set $http_host_with_default "gitlab.test.domain.com:8888";
Дополнительное примечание: поскольку эта пользовательская конфигурация nginx будет перегенерирована при компиляции конфигурации gitlab /etc/gitlab/gitlab.rb, поэтому, если конфигурация gitlab настроена правильно, вышеуказанный nginx не нужно настраивать.
изменить пароль
gitlab-rails console production
user = User.where(id:1).first
user.password='123456'
user.save!
Резервное копирование и восстановление GitLab
резервный
# 可以将此命令写入crontab,以实现定时备份
/usr/bin/gitlab-rake gitlab:backup:create
Резервные копии данных будут храниться в /var/opt/gitlab/backups, и пользователь может изменить значение по умолчанию, настроив параметр gitlab_rails['backup_path'].
восстанавливаться
# 停止unicorn和sidekiq,保证数据库没有新的连接,不会有写数据情况
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
# 进入备份目录进行恢复,1476900742为备份文件的时间戳
cd /var/opt/gitlab/backups
gitlab-rake gitlab:backup:restore BACKUP=1476900742
cd -
# 启动unicorn和sidekiq
sudo gitlab-ctl start unicorn
sudo gitlab-ctl start sidekiq
Модификация конфигурационного файла GitLab
vim /etc/gitlab/gitlab.rb
базовая конфигурация гитлаба:
#外部访问url(经过编译后,自动将这个配置编译到nginx配置,nginx就无需配置了)
external_url 'http://gitlab.test.domain.com:8888'
#默认值就是8080。如果端口被占用,可将8080修改为其它(例如:9090)
unicorn['port'] = 8080
gitlab отправить конфигурацию почты
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = “smtp.exmail.qq.com”
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = “huangdc@domain.com“
gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_authentication']= “plain"
gitlab_rails['smtp_enable_starttls_auto']= true
gitlab_rails['gitlab_email_from']= 'huangdc@domain.com'
gitlab_rails['gitlab_email_reply_to']= ‘noreply@domain.com'
Сервер изменил пит порта ssh (необходимо изменить конфигурацию порта ssh)
#修改过ssh端口,gitlab中项目的的ssh地址,会在前面加上协议头和端口号“ssh://git@gitlab.domain.com:55725/huangdc/test.git”
gitlab_rails['gitlab_shell_ssh_port'] = 55725
Конфигурация вступает в силу
#使配置生效
gitlab-ctl reconfigure
#重新启动GitLab
gitlab-ctl restart
Общие команды GitLab
gitlab-ctl start # 启动所有 gitlab 组件;
gitlab-ctl stop # 停止所有 gitlab 组件;
gitlab-ctl restart # 重启所有 gitlab 组件;
gitlab-ctl status # 查看服务状态;
vim /etc/gitlab/gitlab.rb # 修改gitlab配置文件;
gitlab-ctl reconfigure # 重新编译gitlab的配置;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
gitlab-ctl tail # 查看日志;
gitlab-ctl tail nginx/gitlab_access.log
Примечание. Выполнение команды reconfigure восстановит конфигурацию компонента nginx в gitlab, что приведет к потере настраиваемых измененных портов и доменных имен.
Общий каталог
日志地址:/var/log/gitlab/ # 对应各服务的打印日志
服务地址:/var/opt/gitlab/ # 对应各服务的主目录
Посмотреть версию гитлаба
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
Новый проект
После входа в сеанс gitlab с пользователем root нажмите «новый проект», чтобы создать проект, например, проект называется «kuaijiFirstProject». Затем вы обнаружите, что на жестком диске был сгенерирован файл git:
/var/opt/gitlab/git-data/repositories/root/kuaijiFirstProject.git
китаизация
Использование гитлаба
ssh -T -p 55725 git@gitlab.domain.com
Примечание: приведенная выше команда ssh прошла тест, что не обязательно означает, что код git clone может быть клонирован git.Код git clone должен иметь разрешение на запись для учетной записи, которая выполняет команду.Если обычный пользователь использует sudo git clone , тогда git будет использовать закрытый ключ учетной записи root.
1. Войти
Администратор создаст учетную запись и установит разрешения для пользователя.
2. Пользователь генерирует ssh-ключ на стороне клиента.
Справочная статья:у-у-у. Краткое описание.com/afraid/142 не 3 это 8 ах…
ssh-keygen -t rsa -C "huangdc@domain.com"
3. Скопируйте содержимое открытого ключа в «Ключи SSH» в настройках пользователя gitlab.
Windows: clip < ~/.ssh/id_rsa.pub Mac: pbcopy < ~/.ssh/id_rsa.pub GNU/Linux (requires xclip): xclip -sel clip < ~/.ssh/id_rsa.pub
4. Проверьте ssh-соединение
#标准测试代码:ssh -T git@gitlab.com
ssh -T -p 55725 git@gitlab.domain.com #修改过端口号的测试代码
В случае успешного подключения появится следующее сообщение:
Welcome to GitLab, huangdc!
Примечание: на самом деле для выполнения этой команды ssh используется пользователь удаленного сервера git.Этот пользователь создается при установке gitlab.Все ssh-клиенты, использующие сервер gitlab, используют пользователя git. Пользователь «huangdc» здесь создан gitlab, который используется для управления разрешениями gitlab, а также используется в качестве информации разработчика для идентификации отправленного кода.Не путайте его с пользователями ssh.
Как использовать несколько открытых ключей SSH (мой компьютер использует несколько репозиториев кода)
На самом деле принцип таков: потому что для каждого хранилища требуется соединение ssh, а команда ssh по умолчанию использует закрытый ключ в каталоге .ssh для подключения к хранилищу кода, поэтому мы можем переопределить его для разных доменных имен хранилища в .ssh/. директория config.закрытый ключ.
Примеры следующие:
Отредактируйте файл: vim /Users/david/.ssh/config
Host gitlab.domain.com
IdentityFile /Users/david/.ssh/id_rsa
Инициализировать проект в среде командной строки
- Сначала создайте пустой склад кода на gitlab и получите адрес склада следующим образом:
ssh://git@gitlab.domain.com:55725/huangdc/test.git
- Инициализируйте репозиторий локально, зафиксируйте код и отправьте его в удаленную основную ветку.
git clone ssh://git@gitlab.domain.com:55725/huangdc/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Миграция старых проектов из среды командной строки
- Сначала создайте пустой склад кода на gitlab и получите адрес склада следующим образом:
#注意:已存在代码的旧项目只能推送到空的远程代码仓库
ssh://git@gitlab.domain.com:55725/dev/memberApi.git
- Инициализировать проект локально, связать с удаленным складом, отправить на удаленный склад
cd /Users/david/work_www/memberApi
git init
git remote add origin ssh://git@gitlab.domain.com:55725/dev/memberApi.git
git push -u origin master
Установка и открытие SourceTree
- Ссылка для скачивания с официального сайта:www.sourcetreeapp.com/
- После открытия SourceTree вам необходимо войти в свою учетную запись Atlassian, чтобы активировать SourceTree. Вы можете войти в систему напрямую с помощью своей учетной записи Google.
- После входа в систему вам все равно понадобятся некоторые настройки, просто пропустите их самым простым способом
##502 Устранение ошибок 1. Разрешения
chmod -R 755 /var/log/gitlab //增加权限
2. Порт занят
vim /etc/gitlab/gitlab.rb //编辑配置文件
external_url '*****:*****' //更改端口
3. Недостаточно памяти Для установки GitLab требуется не менее 4 ГБ ОЗУ.