- Client makinasında anahtarların oluşturulması gerekiyor. Client makinada ssh_keygen komutu çalıştırılır dosya adı belirlenmezse C:\Users\sedat.ozturk\.ssh klasörün altında id_rsa ve id_rsa.pub isimli 2 dosya oluşturur.
certbot ile otomatik sertifika bu şekilde alınıyor. Ancak 3 ayda bir aşağıdaki komutları manuel çalıştırıp üretilen txt yi DNS sozsoft.net domaine eklememiz gerekiyor. Bu işlemi otomatize edilebilecek şekilde reha bey ile görüşülecektir.
Sertifika ortam makinalarına manuel olarak kopyalanır
- DevOps makinasından sertifikalar indirilir (indirmek için sudo su, cp -R /etc/letsencrypt/archive/sozsoft.net /home/kurs)
- Ortam makinasına /home/kurs klasörüne yüklenir
# 4. DevOps Makina Kurulumu
DevOps platformu olarak, Forgejo, Gitea, OneDev, Harness gibi alternatifler değerlendirildi ve Github benzerliği, FOSS olması ve action yml'ları kullanabilmesi sebebiyle Forgejo seçildi. Bunun yanında OneDev de istenen bütün özellikleri barındırıyor, o da ikinci alternatif olarak seçildi.
git config http.sslVerify false # Eğer lazım olursa kullanılabilir
```
### Rocket Chat Sistemi Kurulumu
- Rocket Chat ve Forgejo aynı makinaya kurulacağı için, yukarıda yapılan yapılandırmaların bazıları değiştirilmelidir.
- Rocket Chat'siz yapılandırma "docker-compose-devops-forgejo.yml" de bulunmaktadır. Rocket Chat'li yapılandırma için "docker-compose-devops.yml" kullanılmalıdır.
- Öncelikle 80 ve 443 artık forgejo tarafından değil nginx servisi tarafından dinlenmeli. Bu değişiklikl docker-compose dosyasında mevcut.
- Forgejo HTTPS yapılandırması kaldırılarak, HTTPS kısmı nginx'e devredilmeli. Devops makinasında, ~/forgejo/data/gitea/conf/app.ini dosyasında şu değişiklikler yapılır:
```ini
[server]
PROTOCOL=http
HTTP_PORT = 80
# CERT_FILE = /etc/ssl/cert1.pem
# KEY_FILE = /etc/ssl/privkey1.pem
```
- Kurulumdan sonra default olarak Starter Plan ile başlıyor. https://chat.sozsoft.net/admin/subscription adresine giderek "Cancel Subscription"a basılmalı, böylece Community Edition kullanılamya başlanacaktır.
- Setup Wizard'da admin kullanıcı olarak sedat.ozturk ve 1q... parolası seçilmiştir.
# 5. Dev - Prod Ortam Makinaları Kurulumu
Yeni bir ortam makina kurulumunda bir defaya mahsus yapılacaktır.
- Api ve Ui projeleri için Dockerfile konfigürasyonu
- api ve migrator için appsettings.Dev/Prod.json hazırlanır.
- docker-compose-dev/production.yml dosyası hazırlanır.
- Docker login işlemi "bot" kullanıcı ile yapılır. SSH yapılır. `docker login devops.sozsoft.net`
- cd ~/kurs-platform/configs/deployment klasöründe komut çalıştırılır. `docker compose -f ./docker-compose-data.yml up -d`
# 6. Deployment
## 6.1. Script ile Deployment
Scriptler ile güncellemek için aşağıdaki bash dosyaları çalıştırılır, veya bir altta manuel güncelleme metodu kullanılabilir.
Not: Eğer aşağıda kullanılan .sh dosyalarının içeriğinde bir güncelleme olduysa, son halinin çalışması için, çalıştırmadan önce manuel olarak git fetch && git pull yapılmalıdır.
- Sunucuda kalan disk alanı belirli bir seviyenin altına inince bize alarm göndermeli. Şu an bu sistem tarafındaki sanallaştırma platformu üzerinden takip ediliyor.
- Sunucuda neyin disk alanını kapladığını öğrenmek için:
`cd / && sudo df -h` veya
`cd / && sudo ncdu`
Eğer yüklü değilse `sudo apt-get install ncdu`
- Docker'da neyin ne kadar yer kapladığını görmek için: