DigitalOcean Ubuntu Üzerine Nginx Grav Kurulumu
Grav ile ilgili başlangıç yazısında Grav‘a dair özelliklerden (Bkz. API), sundukları (Bkz. E-Commerce) ve sun(a)madıklarından, uygulamanın odaklandığı sorun ve çözüm metotolojisinden 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.
Windows 10+ işletim sistemi ortamındaki kurulumlar için ise Windows Ortamında Grav Kurulumu başlıklı yazıya göz atabilirsiniz.
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 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.
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 birkaç 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 '' > 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
kapsamında 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ğumuz 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 edebilirsiniz1.
bin/gpm info [paket-adi]
Ancak, admin panel üzerinden yönetmek isterseniz ya da harici diğer paketler (temalar ve eklentiler) ile ilgili sorgulama yapmak isterseniz info parametresini kullanabilirsiniz. Biz şimdilik admin paketini indirelim2.
bin/gpm install admin
Yayına hazırız. Nginx ayarlarında da belirttiğimiz server_name
sunucu IP adresimizi ve/veya alan adımızı internet tarayıcımız üzerinden görüntülediğimizde eğer admin eklentisini kurmamışsak doğrudan Grav > Home sayfası, paketi kurmuşsak kullanıcı adı, şifre, e-posta adresi gibi alanları dolduracağımız ayar sayfası bizi karşılayacaktır. İlgili alanları doldurup kullanıcı oluşturduktan sonra tekrar ilgili IP ve/veya alan adı üzerinden Home sayfasına erişebiliriz.