在CentOS上部署GitLab是一个相对复杂的过程,但遵循最佳实践可以确保其稳定性和安全性。以下是一个详细的步骤指南:
准备工作
-
更新系统:
sudo yum update -y
-
安装依赖项:
sudo yum install -y curl policycoreutils openssh-server openssh-clients postfix
-
安装数据库(推荐使用PostgreSQL或MySQL):
-
PostgreSQL:
sudo yum install -y postgresql-server postgresql sudo systemctl start postgresql sudo systemctl enable postgresql sudo -u postgres psql CREATE DATABASE gitlab; CREATE USER gitlab WITH PASSWORD 'gitlab'; GRANT ALL PRIVILEGES ON DATABASE gitlab TO gitlab; \q
-
MySQL:
sudo yum install -y mariadb-server mariadb sudo systemctl start mariadb sudo systemctl enable mariadb sudo mysql_secure_installation
-
-
配置邮件服务器(如需要):
- 安装并配置Postfix:
sudo yum install -y postfix sudo systemctl enable postfix sudo systemctl start postfix
- 安装并配置Postfix:
安装GitLab
-
添加GitLab仓库:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
-
安装GitLab:
sudo EXTERNAL_URL="http://your-gitlab-domain.com" yum install -y gitlab-ce
配置GitLab
-
配置文件:
sudo vi /etc/gitlab/gitlab.rb
- 修改
external_url
为你的公网IP地址或域名。 - 配置数据库连接信息(如果使用MySQL):
gitlab_rails['db_host'] = "localhost" gitlab_rails['db_user'] = "gitlab" gitlab_rails['db_password'] = "gitlab" gitlab_rails['db_name'] = "gitlab"
- 修改
-
重新配置并启动GitLab:
sudo gitlab-ctl reconfigure sudo gitlab-ctl restart
安全设置
-
配置防火墙:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload
-
配置SSH访问:
- 生成SSH密钥并添加到GitLab:
ssh-keygen -t rsa -C "your_email@example.com" cat ~/.ssh/id_rsa.pub | ssh gitlab "sudo gitlab-rails 'create_user'"
- 生成SSH密钥并添加到GitLab:
使用Docker部署GitLab(可选)
如果你希望简化安装过程,可以使用Docker:
-
安装Docker和Docker Compose:
sudo yum install -y docker sudo yum install -y docker-compose sudo systemctl start docker sudo systemctl enable docker
-
创建
docker-compose.yml
文件:version: '3' services: web: image: gitlab/gitlab-ce:latest restart: always hostname: your-gitlab-domain.com environment: GITLAB_OMNIBUS_CONFIG: external_url 'http://your-gitlab-domain.com' ports: - "80:80" - "443:443" - "22:22" volumes: - /var/opt/gitlab:/var/opt/gitlab - /var/log/gitlab:/var/log/gitlab - /etc/gitlab:/etc/gitlab shm-size: 256m
-
启动GitLab:
docker-compose up -d
持续集成/持续部署(CI/CD)
利用GitLab的CI/CD功能,编写.gitlab-ci.yml
文件来自动化构建、测试和部署流程,提升开发效率和代码质量。
监控和维护
- 监控:使用Prometheus和Grafana监控GitLab的性能和健康状况。
- 维护:定期更新GitLab及其依赖的服务,保持软件的最新状态,并进行性能监控和调优。
通过以上步骤,你可以在CentOS上成功部署并配置GitLab,确保其稳定性和安全性。如果有任何问题,可以参考GitLab的官方文档或寻求社区帮助。