Skip to content

Binbiriz devops işlemleri


Ön hazırlık

  1. Subdomain (dev olarak kullanılacak subdomain) dev-xyz.binbiriz.com şeklinde olacak xyz'nin ne olacağını belirleyin, yazın.
  2. Host name ya da IP - Uzak sunucunun hostname'ini ya da IP'ini yazın.
  3. Siteye erişim için HTTP basic authentication için gerekli kullanıcı adı ve şifreyi belirleyin, yazın. Password 16 haneli olacak. Secure Password Generator

Aşağıdaki gibi bir tabloyu önceden hazır ediniz:

Ön hazırlık

Ön hazırlık şablonunu indirmek için tıklayınız

Dev sunucusunun / sitesinin yaratılması


Subdomain tanımlanması


  1. Subdomain tanımlanması işleminin yapılması için binbiriz.com alan adının DNS yönetimi paneline erişilir. Digital Ocean Yönetim Paneli

  2. Dev sunucusunun IP adresi önceden bilinmelidir. Şimdilik dev sunucusu olarak kullanılan sunucu Hetzner'de bulunan sunucudur. IP adresi 159.69.178.13

  3. Önceden kullanılacak subdomain adına karar verilir. Bu örneğimizde dev-xyz.binbiriz.com kullanılacak.

  4. Menüden Networking Domains linkinden binbiriz'in DNS yönetimi sayfasına gidilir.

  5. Sırasıyla

    1. A record türü seçilir.
    2. Subdomain ana domain olmaksızın HOSTNAME kısmına yazılır. Sonda ve başta hiç boşluk olmadığından emin olunuz.
    3. IP adresi WILL DIRECT TO kısmına yazılır.
    4. Create Record tuşuna basılır.
    5. Kaydın DNS records tablosuna eklendiğinden emin olunur.

      Digital Ocean Networking DNS Management Digital Ocean Networking DNS Management

Sunucuda uygulamanın çalışma dizini


Drupal 8 vb bir web uygulamasının ya da HTML vb gibi web sayfalarının bulunduğu dizin uygulamanın çalıştığı dizin olarak adlandırılmıştır.

  1. Terminalde ssh [email protected] ile sunucuya erişim sağlanır.
  2. sudo mkdir /var/www/vhosts/binbiriz.com/dev-xyz.binbiriz.com ile site dizini oluşturulur.
  3. Dizin izinleri için aşağıdaki iki komut çalıştırılır:
sudo chown -R binbiriz:www-data /var/www/vhosts/binbiriz.com/dev-xyz.binbiriz.com
sudo chown -R binbiriz:www-data /var/www/vhosts/binbiriz.com/dev-xyz.binbiriz.com/

Apache Virtual Host dosyasının oluşturulması


Varolan bir Apache virtual host dosyası yeni subdomain adına uygun olarak kopyalanır:

sudo cp /etc/apache2/sites-available/dev-mim.binbiriz.com.conf /etc/apache2/sites-available/dev-xyz.binbiriz.com.conf

Dosyadaki fazlalıklar (kırmızı işaretli) silinir, en alt kısımdaki rewrite kuralları ile ilgili olan 3 satır silinir ve dosya kaydedilir:

Apache Virtual Host Dosyası

Dosya nihai olarak aşağıdaki gibi olmalıdır:

Apache Virtual Host Dosyası

HTTP Basic Authentication Dosyasının oluşturulması


Aşağıdaki komutu çalıştırarak ilgili yere bir şifre dosyası oluşturulur ve bu dosyaya kullanıcı adı da konur:

sudo htpasswd -c /etc/apache2/.htpasswdxyz dev-xyz-user

Bu komut çalıştırıldığında 2 kez şifre girmenizi ister. İlkinde HTTP Basic Authentication kullanıcı için şifre belirlemenizi, ikinci ise belirlenen şifrenin kontrol edilmesi içindir.

Kullanılan şifreler en az 16 haneli olmalıdır. https://passwordsgenerator.net/

Dizin oluşturulur:

mkdir -p /var/www/vhosts/binbiriz.com/dev-xyz.binbiriz.com/drupal/web

Test dosyası konur:

echo "this is a test" > /var/www/vhosts/binbiriz.com/dev-xyz.binbiriz.com/drupal/web/index.html
sudo chown -R binbiriz:www-data /var/www/vhosts/binbiriz.com/dev-xyz.binbiriz.com
sudo chown -R binbiriz:www-data /var/www/vhosts/binbiriz.com/dev-xyz.binbiriz.com/

Apache'de Virtual Host'un aktifleştirilmesi


sudo a2ensite dev-xyz.binbiriz.com.conf
sudo systemctl reload apache2

Sitenin ziyaret edilerek çalıştığının kontrol edilmesi


http://dev-xyz.binbiriz.com/

Buraya kadar olan kısım için otomatik script

Script'in nasıl çalıştığı anlatılmalı. Bu kısım henüz yapılmadı. Screenshotlar filan konulmalı.

Let's Encrypt SSL Sertifikasının Yüklenmesi


Aşağıdaki komut çalıştırılarak terminaldeki gerekli yönergeler uygulanır:

sudo certbot --apache -d dev-xyz.binbiriz.com

Apache Virtual Host Dosyası

Let's Encrypt SSL Sertifikaları 3 ay süre ile geçerlidir. Sunucudaki tüm sertifikaların güncellenmesi için sudo certbot renew komutunu çalıştırabilirsiniz. Sertifika yenilemesi için sunucuya root user olarak crontab konmuştur ve her Pazartesi geceyarısı çalışır.

crontab guru

0 0 * * MON certbot renew

Sitenin SSL ile çalışıp çalışmadığını kontrol ediniz:

http://dev-xyz.binbiriz.com/

Drupal VM Oluşturulması


Bitbucket'ta Yeni Repository Yaratılması

dev-xyz adında bir repository yaratınız.

Bu kısım henüz yapılmadı. Screenshotlar filan konulmalı.


Drupal VM reposunun lokale alınması


Aşağıdaki bölümdeki kodları çalıştırmadan önce Drupal VM GitHub sayfasına giderek en son tag nedir ona bakınız?

cloning Drupal VM repo from GitHub

cd /home/$USER/works
git clone https://github.com/geerlingguy/drupal-vm.git dvm-xyz
cd ./dvm-xyz

# Lütfen yukarıdaki resimden aldığınız tag ile işlem yapınız.
# Repoda en son tag'a checkout yapılması gerekir.
git checkout tags/4.9.0

rm -rf .git/

# vm'in kendi readme.md'si rename edilir.
mv /home/$USER/works/dvm-binbiriz/README.md /home/$USER/works/dvm-binbiriz/dvm-org-README.md
# lokalde git repo oluşturulması
git init
git add .
git commit -m "initial commit - tag 4.9.0 - detached"

#reponun Bitbucket yaratılmış remote repo ile ilişkilenmesi ve push edilmesi
git remote add origin [email protected]:binbiriz/dvm-xyz.git
git push -u origin master

git tag -a github-detached -m "GitHub'dan indirilerek yaratılmış checkout tags ile detached hali"
git push --tags

dvm ilk vagrant up oncesi

config.yml hazırlanır.

ilk aşamada 1. çakışma olmaması için bu değişkenler değiştirilir.

vagrant_hostname: yediagac.local
vagrant_machine_name: yediagaclocal
vagrant_ip: 192.168.77.77
  1. bu değişkenler true yapılır.
drupal_build_composer_project: true
drupal_install_site: true

nihai dosya yml olarak konsun.

repo root .gitignore düzeltilir

nihai dosya .gitignore olarak konsun.

git add .gitignore
git commit -m "gitignore dosyası düzenlendi"
git add config.yml
git commit -m "config.yml dosyası eklendi"

daha sonra vagrant up yapılır

#bu Drupal 8 kurar
vagrant up

config.yml düzeltilir.

drupal_build_composer_project: false
drupal_install_site: false
git add config.yml
git commit -m "ilk vagrant up sonrası config.yml D8 tekrar kurulmasın diye düzeltildi."
git add .
git commit -m "D8 kuruldu."
git push
git tag -a d8-ilk-kurulu-hali -m "vagrant up sonrası D8'in ilk kurulu hali"
git push --tags

Notlar:

## git tag --delete d8-installed
## git push --delete origin d8-installed
  1. sonra drush cex ile config export ve bir adet commit yapılır. konfigürasyonun export edilmesi
vagrant ssh
cd ..
drush cex --yes
exit
git add .
git commit -m "drush aracılığıyla ilk konfigurasyon export"
git tag -a first-config-exp -m "D8 kurulu iken ilk drush cex"
git push --tags

Sonra meld ile karşılaştır setting.php ve trusted host trusted_host_patterns eklenir 730. satır galiba

$settings['trusted_host_patterns'] = [
  '^yediagac\.local$',
  '^.+\.yediagac\.local$',
  '^binbiriz\.com',
  '^.+\.binbiriz\.com',
];

775, 776 ve 777'inci satırlar uncomment edilir.

if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
  include $app_root . '/' . $site_path . '/settings.local.php';
}

./drupal/web/sites/default/ içine settings.local.php konur

cd /home/$USER/works/dvm-yediagac/drupal/web/sites
sudo cp example.settings.local.php ./default/settings.local.php

meld ile karşılaştır settings.local.php

commit yok çünkü bu dosyalar .gitignore'da

bunlar open.project'e ilgili yere yüklenir.

settings.php.zip

settings.local.php.zip


sonra development.services.yml adlı dosya aşağıdaki şekilde düzeltilir.

içerik

# Local development services.
#
# To activate this feature, follow the instructions at the top of the
# 'example.settings.local.php' file, which sits next to this file.
parameters:
  http.response.debug_cacheability_headers: true
  twig.config:
    debug: true
    auto_reload: null
    cache: false
services:
  cache.backend.null:
    class: Drupal\Core\Cache\NullBackendFactory
git add drupal/web/sites/development.services.yml
git commit -m "development.services twig debug configuration"
git push

sonra drush aliases yapılır.

bu dosya bir yere konuyor mu dokümantasyona bak.

aslında iki tane drush alias dosyası var 1. drupal/drush/binbiriz.aliases.drushrc.php (manual konur) 2. drupal/drush/sites/self.site.yml bu dosyayı Drupal VM'in >kendisi üretir, üzerinde değişiklik yapılır.

  1. manual konacak dosyayı koy ve içeriğini düzelt.
git add drupal/drush/binbiriz.aliases.drushrc.php
git commit -m "manual drush alias dosyası eklendi."

drupal/drush/sites/self.site.yml dosyası düzeltilir.

aşağıdaki eklenir.

dev:
  host: 159.69.178.13
  user: binbiriz
  root: /var/www/vhosts/binbiriz.com/dev-yediagac.binbiriz.com/drupal/web
  uri: https://dev-yediagac.binbiriz.com
  paths:
   - files: sites/default/files
git add drupal/drush/sites/self.site.yml
git commit -m "dev env drush alias eklendi."
git push

drush aliases

drush alias özet tablosu


README.md

#readme.md yaratılır.
touch /home/$USER/works/dvm-binbiriz/README.md
#documantasyon ve drush alias tablosu yapılır
git add README.md
git commit -m "Bu proje için README.md dosyası eklendi."
git push

dev repo yaratılır

git checkout -b dev master
git push --set-upstream origin dev

burada readme.md dosyasına şu not düşülür

## Repository Main Branch

---

Bu repository'de `MAIN BRANCH` `dev` adlı branch'tir.
git add README.md
git commit -m "README.md güncellendi."
git tag -a dev-branch-created -m "dev branch yaratıldı"
git push --tags

bitbucket'da reponun default branch'i dev yapılır ve yapıldı 10.10.2018 08:30'da

15.ekim.2018 02:29 başla

sunucuya git reponun deploy edilmesi (ilk deploy)

git repo to dev server

sunucuya ssh ile erişilir

cd /var/www/vhosts/binbiriz.com/
mv ./dev-binbiriz.binbiriz.com/ ./dev-binbiriz.binbiriz.com-old/
git clone [email protected]:binbiriz/dvm-binbiriz.git dev-binbiriz.binbiriz.com
cd ./dev-binbiriz.binbiriz.com/
git checkout dev
cd ..
rm -rf ./dev-binbiriz.binbiriz.com-old/

local vagrant'ta sql-dump oluşturulması

# cd to vagrant folder
vagrant up
vagrant ssh
cd ..
mkdir -p /vagrant/.vscode
drush sql-dump --result-file=/vagrant/.vscode/sql_yedek_to_dev_server_one_time_only_$(date +%Y%m%d_%H%M%S).sql
exit

sunucuda veritabanı oluşturulması

Reference on drupal.org

mysql -u username -p -e "CREATE DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci";

database creation

mysql -u root -p
CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
#CREATE USER dbuser@localhost IDENTIFIED BY 'strong_password';
# GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON dbname.* TO 'drupal'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON dbname.* TO 'drupal'@'localhost' IDENTIFIED BY 'strong_password';

sql dump sunucuya konur

/home/binbiriz/scripts içine

restore sql dump

mysql -u dbuser -pstrong_password dbname < /home/binbiriz/scripts/sql_yedek_to_dev_server_one_time_only_20181014_235131.sql
rm /home/binbiriz/scripts/sql_yedek_to_dev_server_one_time_only_20181014_235131.sql

composer install and drush cim on dev

composer install komutundan sonra sites/default/files ile ilgili uyarıya bakmaya gerek yok. o bir uyarı değil.

cd /var/www/vhosts/binbiriz.com/dev-yediagac.binbiriz.com/drupal
composer install
### settings.local.php dosyalarını yerlerine koy
#/var/www/vhosts/binbiriz.com/dizin_for_dev_domain/drupal/web/sites/default dizinine koy
#setting.php composer install tarafından yaratıldığından şimdi credential düzeltilir setting.php'de
##burayı iyi kontrol et
drush cim

kontrol site çalışıyor ise

siteye login olarak

admin/reports/status

böyle bir error var. dikkate alma ama araştır.

REBUILD ACCESS
Enabled
The rebuild_access setting is enabled in settings.php. It is recommended to have this setting disabled unless you are performing a rebuild.

kontrol edilir.

özellikle settings.php dosyasının permissionları

chmod 644 sites/default/settings.php

proje planlama dokümanına konulacak olanlar

bunlar dosyanın ilk (aciklama) sayfasina konur.

deploy to server

dev sunucusunda

# first pull dev
cd /var/www/vhosts/binbiriz.com/dev-yediagac.binbiriz.com/
git checkout dev
git pull origin dev

# then deploy drupal
cd drupal
composer install
drush cim --yes
drush cr