DigitalOcean Ubuntu Üzerine Nginx Grav Kurulumu

Grav Nedir? Nasıl Kurulur? başlıklı yazıda Grav‘a dair özelliklerden (Bkz. API Nedir? Ne İşe Yarar?), sundukları (Bkz. E-Commerce (E-Ticaret) Nedir?) ve sunamadıklarından, uygulamanın odaklandığı sorun ve çözüm metodolojisinden bahsetmiştim. İlgili yazıda kurulum işlemlerini Apache üzerinden yürütmüştük. Bu yazıda ise kurulum sürecini Nginx HTTP sunucusu üzerinden gerçekleştireceğiz.

Kurulum Süreci

Kurulum için DigitalOcean > Ubuntu 16.04 tercih edecek ve Nginx & PHP kurulumlarını da ilk kez yapılandırarak ilerleyecek ve tüm bu süreci komut satırı üzerinden yürüteceğim.

Doctl İle Sunucu Oluşturma ve SSH Bağlantısı

Çoğunlukla yaptığım gibi bu yazıda da DigitalOcean üzerinden örnek işlemler için Doctl ile bir sunucu oluşturacak ve bu sunucu üzerinden tüm işlemleri gerçekleştireceğim.

Öncelikle seçeneklerimizi değerlendirelim.

doctl compute image list --public

Bağlantı sürecinde kullanacağımız tanımlı SSH anahtarlarımızı görüntüleyelim.

doctl compute ssh-key list

ubuntu-16-04-x64 uygun görünüyor. Lokasyon olarak New York tercih ettim. Tanımlı SSH-Key FingerPrint bilgilerimiz üzerinden droplet oluşturma işlemimizi yapabiliriz.

doctl compute droplet create gravSite --size 1gb --image ubuntu-16-04-x64 --region nyc1 --ssh-keys [ssh-fingerprint]

SSH bağlantısıyla birlikte Nginx ve Grav yapılandırma sürecine başlayabiliriz.

doctl compute ssh [droplet-id]

Nginx Kurulumu

Sunucu üzerinde yapılandırma işlemleri için ilk olarak paket yönetimizi güncelleyelim ve varsa son sürüme yükseltelim.

apt-get update
apt-get upgrade

Grav Hakkındaki Yazılardan Haberdar Olmak İster Misin?

E-posta listesine katılarak yeni yazılardan haberdar olabilirsin.

Grav için veritabanı ihtiyacımız bulunmamakta (Bkz. PHP Flat-File İçerik Yönetimi). Bu nedenle MySQL/MariaDB vb. bir kuruluma ihtiyacımız yok. Ek olarak HTTP sunucu olarak herhangi bir yapılandırma da daha öncesinde gerçekleştirilmediği için Apache sunucusuna. ait silme işlemi de yapmamız gerekmiyor. Ancak, olası bir düzenleme gereksinimine karşın aşağıda Apache dosya ve dizinlerine dair paket silme işlemini kısaca iletiyorum.

apt-get remove apache2*
apt-get autoremove

Artık Nginx kurulumuna da geçebiliriz. Ek olarak, sunucuda PHP yapılandırması mevcut olmadığından PHP başta olmak üzere ihtiyaç duyacağımız diğer paketleri de indirelim.

apt-get install nginx unzip php7.0-fpm php7.0-cli php7.0-gd php7.0-curl php7.0-mbstring php7.0-xml php7.0-zip php-apcu

Sunucumuza ait IP adresini alalım.

/sbin/ifconfig -a | grep 'inet addr:'

Dönen IP adresini internet tarayıcımız üzerinden görüntülediğimizde standart Ngix karşılama sayfası açılacaktır.

Nginx index

PHP7 FPM Yapılandırması

PHP7.0 kurulumunun ardından cgi.fix_pathinfo ile ilgili bir düzenleme yapmamız gerekiyor. php.ini dosyasını editörümüzle açıp içerikte cgi.fix_pathinfo araması yapmalıyız.

nano /etc/php/7.0/fpm/php.ini

Ctrl+W tuş kombinasyonu ile (;cgi.fix_pathinfo=1) satırını bulduktan sonra ; işaretini kaldırıp değer olarak 0 vererek dosyayı kapatabiliriz. Yani ilgili satır son durumda şu şekilde olacaktır.

cgi.fix_pathinfo=1

Bu düzenleme işleminin ardından PHP servisini yeniden başlatalım.

systemctl restart php7.0-fpm

Evet, php yapılandırmamız tamam. Şimdi Nginx için PHP bağlantısını ilişkilendirmeliyiz. Bu sayede dosya işlemlerindeki yetkilendirme hatalarından korunmuş olacağız.

cd /etc/php/7.0/fpm/pool.d
mv www.conf www.conf.bak
nano grav.conf

Açılacak boş grav.conf dosyamıza şu satırları kopyala yapıştır yöntemiyle aktaralım.

[grav]
 
user = grav
group = grav
 
listen = /run/php/php7.0-fpm.sock
 
listen.owner = www-data
listen.group = www-data
 
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
 
chdir = /

Şimdiye kadarki tüm süreci root kullanıcı üzerinden gerçekleştirdik. Kurulumlarla ilişkilendirilecek bir kullanıcıyla devam edelim. Ben kullanıcı adı olarak grav tercih ettim. İstediğiniz farklı bir kullanıcı adı ile devam edebilirsiniz.

adduser grav

Kullanıcı oluşturma aşamasında sizden şifre başta olmak üzere bir kaç bilgi istenecektir. Kendinize göre bu alanları doldurabilirsiniz. Sadece şifre tanımlayarak da ilerleyebilirsiniz. Artık root kullanıcısından oluşturduğumuz grav kullanıcısına geçebilir ve ilişkili klasörlerimizi oluşturabiliriz.

su - grav
mkdir www;cd www;mkdir html;cd html

Bu aşamada klasör içeriğimiz boş olacaktır. Sürecin doğru bir şekilde ilerlediğini test etmek adına bir php dökümanı oluşturabiliriz.

echo '<!--?php info(); ?-->' &gt; info.php

Şimdilik grav kullanıcısıyla işimiz bitti. Exit komutu ile tekrar root kullanıcıya geçiş yapıp Nginx sunucu yapılandırmasını gerçekleştirebiliriz.

exit
cd /etc/nginx/sites-available/

grav adında bir metin dosyası oluşturacağız. Bu dosya bizim grav adında yapacağımız yüklemenin ardından yayınlanacak olan grav isimli klasör (/home/grav/www/html) içeriğini tanımlamakta. Başka bir isim de kullanabilirsiniz. Önemli olan root olarak tanımlanan yolun doğruluğu.

nano grav

Açılacak boş metin dosyasına aşağıdaki satırları ekleyip dosyayı kaydedelim.

server {
    index index.html index.php;
    root /home/grav/www/html/grav;
    server_name [sunucu-ip-adresi-veya-alan-adi];
 
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
 
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
 
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }
 
    location ~* /(.git|cache|bin|logs|backups)/.*$ { return 403; }
    location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
    location ~* /user/.*\.(txt|md|yaml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
    location ~ /(LICENSE|composer.lock|composer.json|nginx.conf|web.config|htaccess.txt|\.htaccess) { return 403; }
}

Nginx yapılandırma sürecinde ön tanımlı olarak default adında bir kayıt oluşturulur. Biz oluşturduğumuz grav tanımlandırması ile devam edeceğimiz için default dosyasına gereksinimimiz kalmadı. Oluşturduğumuz grav isimli (ya da sizin tercih ettiğiniz isim) ayarlar için ln komutu sayeside sites-enabled ile sites-available arasında sembolik linklendirme işlemi yapmamız gerekiyor.

cd ../sites-enabled
ln -s ../sites-available/grav
rm default

Evet, Nginx yapılandırmamızı test edebiliriz.

nginx -t

Alacağımız dönüş şu şekilde olmalı.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

İlgili servislerimizi yeniden başlatalım.

service nginx restart
service php7.0-fpm restart

Grav Kurulumu

Artık Grav kurulumumuza geçebiliriz. root kullanıcı yerine oluşturduğumzu grav isimli kullanıcıyla ilerleyeceğiz.

su - grav

Şimdi yayınlanmış olan son sürüm üzerinden Grav indirme işlemini yapabiliriz.

cd ~/www
wget https://getgrav.org/download/core/grav/latest; unzip latest.zip -d html/
cd html/grav

Kurulum aşamasında oluşturulan dosya ve klasörleri silip system.yaml dosyasını oluşturalım.

bin/grav clear

Alacağımız dönüş şu şekilde olacaktır.

Clearing cache
 
Cleared:  /home/grav/www/html/grav/cache/twig/*
Cleared:  /home/grav/www/html/grav/cache/compiled/*
 
Touched: /home/grav/www/html/grav/user/config/system.yaml

Son adımda artık yayına hazırız.

bin/gpm index

Komut ile birlikte kullanabileceğimiz eklenti ve temalar listelenecektir. Komut satırı üzerinden siteyi yönetmeye devam edebilirsiniz.

bin/gpm info [paket-adi]

Ancak, admin panel üzerinden yönetmek isterseniz ya da harici diğer paketler (temalar ve eklentiler) ile ilgili sogulama yapmak isterseniz info parametresini kullanabilirsiniz. Biz şimdilik admin paketini indirelim.

bin/gpm install admin

Yayına hazırız. Nginx ayarlarında da belirttiğimiz (server_name) sunucu ip adresimizi ve/ya alan adımızı internet tarayıcımız üzerinden görüntülediğimizde eğer admin paketini kurmamışsak doğrudan Grav > Home sayfası, paketi kurmuşsak kullanıcı adı, şifre, e-posta adresi gibi alanları dolduracağımzı ayar sayfası bizi karşılayacaktır. İlgili alanları doldurup kullanıcı oluşturduktan sonra tekrar ilgili ip ve/ya alan adı üzerinden Home sayfasına erişebiliriz.ad

2 replies on “DigitalOcean Ubuntu Üzerine Nginx Grav Kurulumu

Leave a Reply