利用aws服务布署gitlab高可用服务
利用aws服务布署gitlab高可用服务
通过docker搭建镜像
前提是你已经有了docker服务,此处略过。
拉取镜像
sudo docker pull gitlab/gitlab-ce:latest
创建容器
sudo docker run -d -p 8443:443 -p 8081:80 -p 8022:22 \
--name gitlab --restart always \
--volume /home/ubuntu/dockerData/gitlab/config:/etc/gitlab \
--volume /home/ubuntu/dockerData/gitlab/logs:/var/log/gitlab \
--volume /home/ubuntu/dockerData/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
说明:
- 因为我用了nginx使用了80端口,所以起了新端口以mapping 容器内的端口。
/home/ubuntu/dockerData/gitlab/config
等三个目录需要事先创建好。
配置nginx
新建/etc/nginx/conf.d/gitlab.conf
文件
server {
listen 80;
server_name gitlab.xxxx.com;
charset utf-8;
access_log /var/log/nginx/gitlab.access_log;
error_log /var/log/nginx/gitlab.error_log;
if ($http_x_forwarded_proto = 'http') {
return 301 https://$server_name$request_uri;
}
location / {
proxy_pass http://127.0.0.1:8081;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
测试
直接访问gitlab.xxxx.com
就已经好了,刚进来要求设置管理员密码。管理员是root
。
不过这里有个问题,就是数据库配置都是默认配置,使用的容器里给你创建好的数据库,如redis、postgresql等。
为了服务的稳定性,现在都要求把web和数据库分离。下面就是相关的配置说明
自定义相关配置
配置文件都在/etc/gitlab/gitlab.rb
文件下。对应的宿主机文件是/home/ubuntu/dockerData/gitlab/config/gitlab.rb
。
修改完了,在docker中运行gitlab-ctl reconfigure
即可。
配置域名
创建了一个test项目,结果发现clone地址是http://78638653e348/root/test.git
。
这显明有问题。
这里需要修改配置文件, 改配置:
external_url "http://gitlab.example.com"
然后reconfigure就好了。
如果你的域名是http的,到此就结束了。
如果你的域名是https的,可能会和我一样遇到502错误。
针对https的配置是
external_url "https://gitlab.example.com"
nginx['listen_port'] = 80
nginx['listen_https'] = false
同样是reconfigure就好了。
邮件发送服务
搜索smtp
即可找到对应的配置项。由于我们主要用的aws服务,他提供了SES发送邮件服务。
我们用的是SES相关的配置。其它如QQ邮箱等,可以查看官方文档
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "email-smtp.region-1.amazonaws.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "IAMmailerKey"
gitlab_rails['smtp_password'] = "IAMmailerSecret"
gitlab_rails['smtp_domain'] = "yourdomain.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
说明:
1. 我在配置过程中一开始没有配置gitlab_email_reply_to
选项,结果一直报SMTP错误, 554 Transaction failed: Invalid domain name: '78638653e348'
因为我的gitlab默认的gitlab_email_reply_to
是noreply@78638653e348
。明确指定之后就正常了。
2. 最后发现78638653e348
是做为域名配置在/etc/hosts中的。
保存完后:
1. 进入容器
sudo docker exec -it gitlab /bin/bash
2. 使配置生效
gitlab-ctl reconfigure
3. 测试邮件功能
gitlab-rails console
irb(main):003:0> Notify.test_email('xxxx@xxx.com', 'Message Subject', 'Message Body').deliver_now
使用S3存储数据
S3是由aws提供的分布式存储方案。
搜索store
可以迅速定位到相关的配置项
gitlab_rails['artifacts_enabled'] = true
gitlab_rails['artifacts_object_store_enabled'] = true
gitlab_rails['artifacts_object_store_remote_directory'] = "artifacts"
gitlab_rails['artifacts_object_store_connection'] = {
'provider' => 'AWS',
'region' => 'us-east-1',
'use_iam_profile' => true
}
测试
在容器中执行命令: gitlab-rake gitlab:artifacts:migrate
Git LFS
和GitLab uploads
按类似设置,都上传到S3。
备份
备份配置文件
配置文件都在/etc/gitlab
目录。由于我们把这个目录mapping到了宿主机的/home/ubuntu/dockerData/gitlab/config
目录。
创建在/home/ubuntu/dockerData/gitlab/
目录上创建backup.sh
backup=$(date "+etc-gitlab-%s.tar")
sudo sh -c 'umask 0077; tar -cf $backup config';
# backup to S3
aws s3 cp $backup s3://yourbucket/backups/config/
每次修改了配置文件后,执行sh backup.sh
即可。
备份应用数据
此处我把备份直接备份到S3上。
gitlab_rails['backup_keep_time'] = 604800
gitlab_rails['backup_upload_connection'] = {
'provider' => 'AWS',
'region' => 'us-east-1',
'aws_access_key_id' => 'aws_access_key_id',
'aws_secret_access_key' => 'aws_secret_access_key'
}
gitlab_rails['backup_upload_remote_directory'] = 'yourbucket/backups/data'
执行docker exec -t gitlab gitlab-rake gitlab:backup:create
即可创建一份备份
恢复
恢复配置文件
1. 备份下现有的/etc/gitlab配置文件。
sudo mv /home/ubuntu/dockerData/gitlab/config/ /home/ubuntu/dockerData/gitlab/configgitlab.$(date +%s)
2. 用备份好的配置文件恢复配置文件
sudo tar -xf etc-gitlab-1399948539.tar -C /home/ubuntu/dockerData/gitlab/config/
3. 使新的配置文件生效
gitlab-ctl reconfigure
恢复应用数据
1. 把备份文件拷贝到备份目录。
sudo cp 11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar /home/ubuntu/dockerData/gitlab/data/backups/
2. 停掉连接了数据库的服务。只留下gitlab。
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
# Verify
sudo gitlab-ctl status
3. 从备份文件中恢复数据
ls /var/opt/gitlab/backups/ #看下文件名
cd /var/opt/gitlab/backups/ #进入备份目录
sudo gitlab-rake gitlab:backup:restore BACKUP=1493107454_2018_04_25_10.6.4-ce #备份文件名中的_gitlab_backup.tar不需要填写。
4. 重启服务并检查
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true
Generic Propecia 10mg [url=http://brandciali.com]generic 5mg cialis best price[/url] Buy Diflucan Without No Perscription Pharmacie En Ligne Sans Ordonnance Cialis Se Puede Comprar Sin Receta Medica
Cialis Viagra Online Clasificacion Con Propecia [url=http://cialtadalaff.com]generic cialis from india[/url] Zoloft No Prescription Fast Brand Viagra Free Shpping
Online Apotheke Cialis 5mg [url=http://sildenaf100mg.com]viagra[/url] Rx4u Pharmacy Non Prescription Viagra Reviews
Canadian Cialas Without Generic Viagra Professional [url=http://clanar.com]viagra[/url] Direct Free Shipping Pyridium Buy Drugs Cash On Delivery Amoxicillin For Dental Infection Cytotec Vente Libre
Viagra Seguridad Social Propecia Comparativa [url=http://lapizmoon.com]cialis generic[/url] Cheapeast Generic Dutasteride Visa Accepted C.O.D. Tyneside Acheter Du Levitran Viagra Kaufen Strafbar
Amoxicillin Canine Pharmaceutical Side Effects [url=http://sildenaf75.com]viagra online pharmacy[/url] Levitra Schmelztablette Preisvergleich
Vendita Pillole Viagra Pharmacies Shipping To Usa [url=http://leviprix.com]levitra online[/url] Can I Purchase Isotretinoin 10mg Website Cheap Cialis E Hipertension Finasteride 5 Mg Propecia
History Of Cephalexin [url=http://allngos.com][/url] Generic Cialis Reviews