Debian 10'da LEMP (Nginx, MariaDB ve PHP) ile WordPress Kurulumu

WordPress, internetteki en popüler CMS’dir (içerik yönetim sistemi). PHP dili kullanır ve MySQL tabanlı bir arka uç üzerine esnek bloglar ve web sitelerini kolayca kurmanıza olanak tanır. WordPress her sektör tarafından inanılmaz bir şekilde benimsenmiştir ve bir web sitesini hızlı oluşturmak ve çalıştırmak için mükemmel bir seçimdir. Kurulumdan sonra, neredeyse tüm yönetim kontrol panelinden yapılabilir.

Bu kılavuzda, Debian 10 sunucusunda bir LEMP yığını (Linux, Nginx, MariaDB ve PHP) üzerinde bir WordPress örneği kurmaya odaklanacağız.

Ön şartlar

Bu kılavuzu tamamlamak için bir Debian 10 sunucusunda kök kullanıcısı ya da sudo yetkilerine sahip bir kullanıcı olarak SSH erişiminiz olmalıdır. Henüz bir sunucunuz yoksa (DigitalOcean tavsiyemdir.)

Bu kılavuzu başlatmadan önce aşağıdaki görevleri gerçekleştirmeniz gerekecektir:

  • Bir LEMP yığını yükleme: WordPress’in düzgün çalışması için bir web sunucusuna, veritabanına ve PHP’ye ihtiyacı olacaktır. Bir LEMP yığını (Linux, Nginx, MariaDB ve PHP) kurmak bu gereksinimlerin tümünü karşılar. Bu yazılımı yüklemek ve yapılandırmak için Debian 10 Üzerinde Nginx, MariaDB, PHP (LEMP) Kurulumu öğreticimizi uygulayın.
  • Sitenizi SSL ile güvenceye alın: WordPress dinamik içerik sunar ve kullanıcı kimlik doğrulaması ve yetkilendirmesini yönetir. TLS / SSL, bağlantınızın güvenli olması için sitenizden gelen trafiği şifrelemenizi sağlayan teknolojidir. Bu eğiticide siteniz için bir alan adınız olduğu varsayılır. Alan adınız için ücretsiz bir SSL sertifikası almak için Let’s Encrypt kullanabilirsiniz. Bunun için Debian 10’da Nginx Üzerinde Let’s Encrypt SSL Kurulumu öğreticimizi uygulayın.

Kurulum adımlarını tamamladığınızda sunucunuzda kök kullanıcı olarak oturum açın ve aşağıdan devam edin.

Adım 1 - WordPress için Veritabanı ve Veritabanı Kullanıcısı Oluşturma

WordPress, site ve kullanıcı bilgilerini depolamak ve yönetmek için MySQL tabanlı bir veritabanına ihtiyaç duyar. Kurulumumuzda, MariaDB’i kullanacağız. MariaDB şu anda Debian tabanlı paket yöneticisindeki varsayılan MySQL uyumlu veritabanı sunucusudur.

Başlamak için MariaDB kök (yönetici) hesabına giriş yapın. MariaDB, auth_socket varsayılan kimlik doğrulama eklentisini kullanacak şekilde yapılandırılmışsa, aşağıdaki komutu kullanarak MariaDB yönetici hesabına giriş yapabilirsiniz:

sudo mariadb

MariaDB kök hesabı için bir parola kullanmak üzere kimlik doğrulama yöntemini değiştirdiyseniz, bunun yerine aşağıdaki biçimi kullanın:

mariadb -u root -p

MariaDB kök hesabı için ayarladığınız parolayı girmeniz istenecektir.

İlk olarak, WordPress’in kontrol edebileceği ayrı bir veritabanı oluşturabiliriz. Bunu istediğiniz gibi adlandırabilirsiniz, ancak biz basit tutmak için bu kılavuzda wordpress adını kullanacağız. WordPress için veritabanı adını yazarak oluşturabilirsiniz:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Daha sonra, sadece yeni veritabanımızda çalışmak için kullanacağımız ayrı bir MariaDB kullanıcı hesabı oluşturacağız. Tek işlevli veritabanları ve hesaplar oluşturmak, yönetim ve güvenlik açısından iyi bir fikirdir. Bu kılavuzda biz wordpress_kullanici adını kullanacağız. İsterseniz bunu değiştirmekten çekinmeyin.

Aşağıdaki komut bu hesabı oluşturur, bir parola belirler ve oluşturduğumuz veritabanına erişim izni verir. Veritabanı kullanıcınız için güçlü bir şifre seçmeyi unutmayın:

GRANT ALL ON wordpress.* TO 'wordpress_kullanici'@'localhost' IDENTIFIED BY 'şifreniz';

Artık her biri özellikle WordPress için oluşturulmuş bir veritabanınız ve kullanıcı hesabınız var. Veritabanı sunucusunun mevcut örneğinin son yaptığımız değişiklikleri bilmesi için ayrıcalıkları temizlemeliyiz:

FLUSH PRIVILEGES;

Daha sonra MariaDB’den çıkın:

EXIT;

Bu komut ile MariaDB oturumundan çıkacak ve normal Linux kabuğuna döneceksiniz.

Adım 2 - Ek PHP Uzantılarını Yükleme

LEMP yığınımızı kurarken PHP’nin MariaDB ile iletişim kurmasını sağlamak için yalnızca çok az sayıda uzantıya ihtiyacımız vardı. WordPress ve eklentilerinin çoğu ek PHP uzantılarından yararlanır.

WordPress ile kullanmak için en popüler PHP uzantılarından bazılarını yazarak yükleyebiliriz:

sudo apt update
sudo apt upgrade -y
sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip

Not: Her WordPress eklentisinin kendi gereksinimleri vardır. Bazılarının yüklenmesi için ek PHP paketleri gerekebilir. PHP gereksinimlerini keşfetmek için eklenti dökümanlarını kontrol etmelisiniz.

Yeni uzantıları yüklemeyi tamamladığınızda, çalışan PHP işlemcisinin yeni yüklenen özelliklerden yararlanabilmesi için PHP-FPM işlemini yeniden başlatmanız gerekir:

sudo systemctl restart php7.3-fpm.service

Komutun vurgulanan kısmını PHP-FPM özel sürümünüzle değiştirmeniz gerekebilir. Bu gibi komutlar içinde kullanmanız gereken tam hizmet adını doğrulamak için şu komutu kullanabilirsiniz:

sudo systemctl status php* | grep fpm.service

Şu gibi çıktı görmelisiniz;

● php7.3-fpm.service - The PHP 7.3 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled)
   CGroup: /system.slice/php7.3-fpm.service

Vurgulanan dize, PHP-FPM hizmetini systemctl komutlarıyla yönetirken kullanmanız gereken addır .

PHP uzantılarımız yüklendi. Bir sonraki bölümde, Nginx’i PHP sayfalarını işlemek için PHP-FPM kullanacak şekilde yapılandıracağız.

Adım 3 - Nginx’i Yapılandırma

Şimdi Nginx sunucu bloğu dosyalarımızda birkaç küçük ayar yapacağız. Ön koşullardaki işlemlere dayanarak, /etc/nginx/sites-available/ dizininizde sunucunuzun etki alanı adına yanıt verecek şekilde yapılandırılmış ve TLS / SSL sertifikası ile korunan dizinde siteniz için bir yapılandırma dosyanız olmalıdır. Burada biz örnek olarak /etc/nginx/sites-available/sizinalanadiniz.com kullanacağız.

Ayrıca, WordPress kurulumumuzun kök dizini olarak /var/www/sizinalanadiniz.com kullanacağız. Sizinki farklı ise kendi yapılandırmanızda belirtilen web kökünü kullanmalısınız.

Not: Burada /etc/nginx/sites-available/default yani varsayılan yapılandırmayı kullanmanız mümkündür ( /var/www/html web kökünüzle birlikte). Sunucuda yalnızca bir web sitesi barındıracaksanız geçerlidir. Değilse, gerekli yapılandırmayı site başına bir yapılandırma dosyası olmak üzere mantıksal parçalara bölmek en iyisidir.

Sitenizin Nginx yapılandırma dosyasını sudo ayrıcalıklarıyla açın:

sudo nano /etc/nginx/sites-available/sizinalanadiniz.com

Statik dosya isteklerini eşleştirmek için normal bir ifade konumu kullanacağız. Bu talepler için günlüğe kaydetmeyi kapatacağız ve bunları tekrar, tekrar sunmak genellikle sunucuyu zorlayıcı olduğu için bunları önbelleğe alınabilir olarak işaretleyeceğiz. Bu statik dosya listesini, sitenizin kullanabileceği diğer dosya uzantılarını içerecek şekilde ayarlayabilirsiniz:

location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt { log_not_found off; access_log off; allow all; }
    location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
        expires max;
        log_not_found off;
    }

Varolan location/ bloğunun içinde, try_files yani listeyi varsayılan seçenek olarak bir 404 hatası döndürmek yerine bağımsız değişkenleriyle index.php aktarılacak şekilde ayarlamamız gerekir.

Bunu alttaki gibi # simgesi ile eski değeri pasifleştirerek ayarlayabilirsiniz, şöyle gözükecektir;

try_files $uri $uri/ /index.php$is_args$args;

İşlem bittiğinde dosyayı kaydedin ve kapatın.

Şimdi, yazımımıza ilişkin söz dizimi hataları için Nginx yapılandırmamızı kontrol edebiliriz:

sudo nginx -t

Herhangi bir hata bildirilmediyse, Nginx’i aşağıdaki komutu yazarak yeniden başlatın:

sudo systemctl reload nginx

Daha sonra, WordPress’i indirip kuracağız.

Adım 4 - WordPress’i İndirme & Kurma

Artık gerekli tüm sunucu yazılımlarımız yapılandırıldığına göre, WordPress’i indirip kurabiliriz. Özellikle güvenlik nedeniyle, WordPress’in en son sürümünü her zaman resmi sitelerinden almanız önerilir.

Yazılabilir bir dizine geçin ve ardından aşağıdakileri yazarak sıkıştırılmış en güncel sürümü indirin:

cd /tmp
curl -LO https://wordpress.org/latest.tar.gz

WordPress dizin yapısını oluşturmak için sıkıştırılmış dosyayı ayıklayın:

tar xzvf latest.tar.gz

Bu dosyaları anlık olarak doküman kökümüze taşıyacağız. Bunu yapmadan önce, örnek yapılandırma dosyasını WordPress’in gerçekten okuduğu yapılandırma dosya adıyla değiştirmeliyiz:

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

Artık dizinin tüm içeriğini belge kökümüze kopyalayabiliriz. Biz -a komutu ile mevcut izinleri koruyarak, gizli dizinler de dahil olmak üzere, dizindeki her şeyin kopyalanması gerektiğini belirtmek için kaynak dizinimizin sonunda bir nokta kullanıyoruz:

sudo cp -a /tmp/wordpress/. /var/www/sizinalanadiniz.com

Artık dosyalarımız asıl yerinde olduğuna göre, www-data kullanıcısına ve grubuna sahiplik atayacağız. Bu, Nginx’in çalıştığı kullanıcı ve gruptur ve web sitesine hizmet vermek, otomatik güncellemeler yapmak için Nginx’in WordPress dosyalarını okuyabilmesi ve yazabilmesi gereklidir.

sudo chown -R www-data:www-data /var/www/sizinalanadiniz.com

Dosyalarımız şimdi sunucumuzun belge kökünde ve doğru sahipliğe sahip, ancak yine de biraz daha yapılandırmayı tamamlamamız gerekiyor.

Adım 5 - WordPress Yapılandırma Dosyasını Ayarlama

Ardından, ana WordPress yapılandırma dosyasında birkaç değişiklik yapmamız gerekiyor.

Dosyayı açtığımızda, ilk işimiz kurulumumuz için biraz güvenlik sağlamak için gizli anahtarları ayarlamak olacaktır. WordPress, bu değerler için güvenli bir üretici sağlar, böylece kendi başınıza iyi değerler bulmaya çalışmak zorunda kalmazsınız. Bunlar yalnızca dahili olarak kullanılır.

WordPress gizli anahtar üreticisinden güvenli değerler almak için şu komutu yazın:

curl -s https://api.wordpress.org/secret-key/1.1/salt/

Aşağıdaki gibi görünen benzersiz değerleri çıktı olarak görmelisiniz:

Uyarı: Her seferinde benzersiz değerler talep etmeniz önemlidir.

define('AUTH_KEY',         'Ujr>4LF!!! BU DEĞERLER DEMODUR KOPYALAMAYIN !!!jUTdl&B');
define('SECURE_AUTH_KEY',  '}GP>Sxw!!! BU DEĞERLER DEMODUR KOPYALAMAYIN !!!Bb#&iDD');
define('LOGGED_IN_KEY',    'RiE#PRy!!! BU DEĞERLER DEMODUR KOPYALAMAYIN !!!cZ,CG^G');
define('NONCE_KEY',        'cgWpLF*!!! BU DEĞERLER DEMODUR KOPYALAMAYIN !!!v`Ban*.');
define('AUTH_SALT',        'IY&j9vl!!! BU DEĞERLER DEMODUR KOPYALAMAYIN !!!O4p--O&');
define('SECURE_AUTH_SALT', 'GynTW}|!!! BU DEĞERLER DEMODUR KOPYALAMAYIN !!!Pkvru!T');
define('LOGGED_IN_SALT',   'tO3~};@!!! BU DEĞERLER DEMODUR KOPYALAMAYIN !!!F:Hh)no');
define('NONCE_SALT',       '&ZAUaZ5!!! BU DEĞERLER DEMODUR KOPYALAMAYIN !!!P=bE-Nu');

Bunlar, güvenli anahtarları ayarlamak için doğrudan yapılandırma dosyamıza yapıştırabileceğimiz yapılandırma satırlarıdır. Şimdi kendi aldığınız çıktıyı kopyalayın.

WordPress yapılandırma dosyasını açın:

nano /var/www/sizinalanadiniz.com/wp-config.php

Bu ayarlar için örnek değerleri içeren bölümü bulun. Şöyle gözükmeli;

 * You can change these at any point in time to invalidate all existing cookies. This wi$
 *
 * @since 2.6.0
 */
define( 'AUTH_KEY',         'put your unique phrase here' );
define( 'SECURE_AUTH_KEY',  'put your unique phrase here' );
define( 'LOGGED_IN_KEY',    'put your unique phrase here' );
define( 'NONCE_KEY',        'put your unique phrase here' );
define( 'AUTH_SALT',        'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT',   'put your unique phrase here' );
define( 'NONCE_SALT',       'put your unique phrase here' );

Bu satırları silin ve komut satırından az önce oluşturduğunuz ve kopyaladığınız değerleri yapıştırın:

define('AUTH_KEY',         'TERMİNALDEN SİZİN OLUŞTURUP KOPYALADIĞINIZ ANAHTAR');
define('SECURE_AUTH_KEY',  'TERMİNALDEN SİZİN OLUŞTURUP KOPYALADIĞINIZ ANAHTAR');
define('LOGGED_IN_KEY',    'TERMİNALDEN SİZİN OLUŞTURUP KOPYALADIĞINIZ ANAHTAR');
define('NONCE_KEY',        'TERMİNALDEN SİZİN OLUŞTURUP KOPYALADIĞINIZ ANAHTAR');
define('AUTH_SALT',        'TERMİNALDEN SİZİN OLUŞTURUP KOPYALADIĞINIZ ANAHTAR');
define('SECURE_AUTH_SALT', 'TERMİNALDEN SİZİN OLUŞTURUP KOPYALADIĞINIZ ANAHTAR');
define('LOGGED_IN_SALT',   'TERMİNALDEN SİZİN OLUŞTURUP KOPYALADIĞINIZ ANAHTAR');
define('NONCE_SALT',       'TERMİNALDEN SİZİN OLUŞTURUP KOPYALADIĞINIZ ANAHTAR');

Şöyle görünmelidir;

Ardından, dosyanın başlangıcında bazı veritabanı bağlantı ayarlarını değiştirmemiz gerekiyor. Veritabanı adını, veritabanı kullanıcısını ve MariaDB içinde yapılandırdığımız ilişkili şifreyi ayarlamanız gerekiyor.

Tırnak içerisinde yer alan değerleri değiştirmelisiniz;

define('DB_NAME', 'wordpress');

/** MySQL veritabanı kullanıcısı */
define('DB_USER', 'wordpress_kullanici');

/** MySQL veritabanı şifresi */
define('DB_PASSWORD', 'şifreniz');

Daha sonra veritabanı tablo ön ekini değiştirmemiz gerekecektir;

Şunu bulun;

$table_prefix = 'wp_';

Şunun gibi değiştirin (Siz kendi ön ekinizi belirlemelisiniz);

$table_prefix = 'muhyal_';

Şöyle görünmelidir;

Yapmamız gereken diğer değişiklik, WordPress’in dosya sistemine yazmak için kullanması gereken yöntemi ayarlamaktır. Web sunucusuna ihtiyaç duyduğu yere yazma izni verdiğimiz için, dosya sistemi yöntemini “doğrudan” olarak ayarlayabiliriz. Bunun mevcut ayarlarımızla ayarlanmaması, bazı eylemler gerçekleştirdiğimizde WordPress’in FTP kimlik bilgilerini istemesine neden olur. Bu ayar, veritabanı bağlantı ayarlarının altına veya dosyadaki herhangi bir yere eklenebilir:

define('FS_METHOD', 'direct');

İşlem bittiğinde dosyayı kaydedin ve kapatın.

Şöyle görünmelidir;

Adım 6 - Kurulumun Web Arayüzü ile Tamamlanması

Artık sunucu yapılandırması tamamlandığına göre, kurulumu web arayüzü üzerinden tamamlayabiliriz.

Web tarayıcınızda sunucunuzun alan adına veya genel IP adresine gidin:

http://sizinalanadiniz.com
http://ipadresiniz
  1. Kullanmak istediğiniz dili seçin.
  2. Ardından, ana kurulum sayfasına geleceksiniz.
  3. WordPress siteniz için bir ad seçin.
  4. WordPress siteniz için bir kullanıcı adı seçin (güvenlik amacıyla “admin” gibi ad seçmemeniz önerilir).
  5. Otomatik olarak güçlü bir şifre oluşturulacaktır. Bu şifreyi kaydedin veya alternatif güçlü bir şifre yazın.
  6. E-posta adresinizi girin.
  7. Arama motorlarının sitenizi dizine eklemesini engellemek isteyip istemediğinizi seçin.
  8. İleri’yi tıkladığınızda, giriş yapmanızı isteyen bir sayfaya yönlendirileceksiniz.
  9. Oluşturduğunuz kullanıcı adı ve şifre ile giriş yapın.
  10. Giriş yaptıktan sonra WordPress yönetim kontrol paneline yönlendirileceksiniz.

Yönetim panelinizden sitenizin temasında değişiklik yapmaya ya da içerik yayınlamaya başlayabilirsiniz.

Sonuç

WordPress’i kurdunuz ve artık kullanıma hazır!

Sonraki genel adımlar, yayınlarınız için kalıcı bağlantı ayarını seçmek (Ayarlar > Kalıcı Bağlantılar içinde bulunabilir)

veya yeni bir tema (Görünüm > Temalar içinde bulunabilir) seçmektir.

Ön kısım demoları;

WordPress’i ilk kez kullanıyorsanız, yeni CMS’nizi tanımak için arayüzü biraz araştırın veya resmi belgelerindeki WordPress ile İlk Adımlar kılavuzunu kontrol edin.

Tabi herhangi bir sorunla karşı karşıyaysanız, bu makaleyi yanıtlamaktan da asla çekinmeyin :slight_smile: :point_down:

2 Beğeni

DigitalOcean’dan LEMP sunucu aldım ama Debian 10 falan mı bilmiyorum. Bu adımları takip etmek için LEMP sunucusu olması yeterli mi? Debian 10 nedir?

Komutlar tam uymayabilir. Debian bir işletim sistemidir. 10 ise versiyonudur. Hazır blog istiyorsanız, LEMP sunucusu almak yerine WordPress kurulu kalıpları seçin DigitalOcean üzerinde.

LEMP sunucumu aktif olarak kullandığım için bırakmak istemiyorum. İçerisinde bir forum yer alıyor. LEMP (Ubuntu 18.04) sunucumdaki sitemin siteadresi.com/wordpress dizinine WordPress kurmak istiyorum. Bu konuyla alakalı bir kaynağınızı bulamadım. Bana önerebileceğiniz video ya da makale var mı? Teşekkürler.

Forumunuz örneğin site.com ise, forum yazılım dosyalarının bulunduğu dizine bir klasör açın WordPress isminde. İçerisine WordPress dosyalarını atın ve site.com/wordpress/ olarak tarayıcınızda ziyaret edin. WordPress kurulum ekranı gelecektir. Veritabanı yazılımınıza göre bir veritabanı ve kullanıcı açın, gerisini kurulumdan tamamlayabilirsiniz.

Muhammet hocam dediğiniz işlemi yaptım ve siteyi başarıyla kurdum ama görsel yüklerken buna iznim olmadığını söyleyip hata verdi. Sizce neden kaynaklı olabilir?

Harika, peki Uploads klasörünün izinlerini kontrol ettiniz mi?

Sanırım sorun ondan kaynaklı. Nasıl kontrol edip düzenleyeceğim hocam?

Hocam resim yüklemeye çalıştığımda aşağıdaki gibi bir hata alıyorum. Sorunum ile alakalı yeni bir konu açayım mı yoksa buradan yardımcı olabilir misiniz?

image

Yeni bir konu açın. Daha sağlıklı olacaktır.

Tamamdır hocam. Konuyu oluşturdum.

1 Beğeni