Magento Nedir? Nasıl Kurulur?

WordPress, PrestaShop, Grav ve Craft‘ın ardından kurulumundan bahseceğim son uygulama olan Magento ile ilgili ilerleyen süreçte pek çok farklı içerik sunacağım.

AA

Kısaca Magento‘ya değinmek gerekirse;

Magento

Magento için dünyanın 1 numaraları e-ticaret (commerce) platformu ifadesini kullanmak yanlış olmayacaktır. E-ticaret alanında geliştirilen diğer uygulamalara da örnek niteliği taşıyan Magento üzerinde her yıl milyonlarca dolarlık satış işlemi gerçekleştirilmektedir1. Dijital ve fiziksel alışveriş deneyimlerinin başarılı bir şekilde entegre edildiği yapısı ile müşterilere sorunsuz bir alışveriş deneyimi sunan platform açık kaynaklı dağıtıma ek olarak mağaza içi, perakende satış ve sipariş yönetimi teknolojileri de dahil olmak üzere güçlü bir bulut tabanlı omnichannel çözümleri2 portföyüne de sahip. PHP diliyle geliştirilen açık uygulamanın gelişme sürecinden de bahsetmek gerekirse;

  • İlk geliştirmeler Varien tarafından gerçekleştirilmiştir.
  • 2008 yılı başlatında uygulamanın ilk genel kullanılabilir sürümünü yayınlanmıştır.
  • Roy Rubin (Varen’in eski CEO’su) hisselerinin büyük bir kısmını eBay’e3, kalan kısmını da Permira’ya satmıştır. Mark Lavelle şirketin yeni CEO’su olmuştur.
  • 2018 yılı ortası itibariyle Magento, Adobe bünyesine katılmıştır4 5 6.

2015 sonunda, yayınlanan Magento 2.0 ile birlikte önemli ve inovatif geliştirmeler de kullanıcıların kullanımına sunulmuştur. Kullanıcı deneyimini geliştiren kurumsal kullanıcı araçları, v1 üzerinden kolaylıkla v2 sürümüne geçiş için geliştirilmiş aktarım süreci ve iyileştirmeler (tablo sorunları, cache geliştirmeleri, rich snippets, kolay özelleştirme ve dahası) platformun daha fazla kullanıcıya ulaşmasını ve daha fazla firma tarafından tercih edilmesini sağlamıştır.

Magento: Teknik Gereksinimler

Küçük işletmeler, orta ölçekli şirketler ve girişimler için uygun bir alt yapı olan Magento MySQL veya MariaDB ilişkisel veritabanı yönetim sistemini, PHP programlama dilini ve Zend Framework öğelerini kullanmakta. Nesne yönelimli (object-oriented) programlama ve model-görünüm-denetleyici (MVC/model–view–controller) mimarisinin kurallarını uygulamakta. Platform ayrıca verileri depolamak için varlık-öznitelik-değer (entity–attribute–value) modelini kullanır. Model-View-ViewModel örgüsünü Knockout.js7 ile uygulayan platform sunduğu yenilik ve yeteneklerle diğer e-ticaret uygulamaları için de örnek teşkil etmektedir. Magento Open Source (öncesinde Magento Community Edition) ve Magento Commerce olmak üzere iki ayrı platform sunan Magento open source kapsamında geliştiricilerin yeni geliştirmeler yapabilmelerini ve diğer geliştiricilerin sundukları modülleri kullanabilmelerini mümkün kılmaktadır. Magento Commerce 2016 yılında platform as a service olarak duyurulmuştur. Ticari sürüm (Magento Enterprise Edition) ise temelde açık kaynak dağıtımı kullanan ancak buna ek özellikler ve geliştirmelerle kurulum, kullanım, yapılandırma ve sorun giderme gibi teknik destek gerektiren büyük işletmeler için tasarlanmıştır. Temel olarak Magento Open Source yapısını tüm Magento hizmet/servis ve ürünlerinde görmek mümkün. Kuruluma geçmeden önce söz konusu sistem gereksinimlerine (System 2.3.x için) de bir göz atalım.

  • Linux (x86-64) dağıtımı RedHat Enterprise Linux (RHEL), CentOS, Ubuntu, Debian vb.
  • 2GB+ RAM (2GB ve altında bir RAM mevcutsa swap file kullanımı önerilir.)
  • Composer (yayınlanan son sürüm)
  • Apache 2.2 ya da 2.4 (mod_rewrite ve mod_version modülleri aktif) veya nginx 1.x
  • MySQL 5.6, 5.7 / MySQL NDB Cluster 7.4.*, MariaDB 10.0, 10.1, 10.2, Percona 5.7 veya diğer binary-compatible MySQL teknolojileri.
  • PHP 7.1.3+, 7.2+
  • PHP geliştirmeleri

Diğer gereksinimler ve ek bilgiler için Magento 2.3.x technology stack requirements8 sayfasını inceleyebilirsiniz.

PHP 7.2 Üzerine Magento Community Edition 2.2.6 Kurulum İşlemleri

Yayınlanan son sürüme ve kurulum yönergelerine How to get the Magento software9 sayfasından ulaşabilirsiniz.

Ben kurulum işlemlerini composer kullanacağım. Bu kurulum için yönergelere ayrıca Install Magento using Composer10 sayfasından ulaşabilirsiniz. Kurulum aşamasında sürüm farkı sebebiyle özellikle Setup sürecinde hatalar almanız olası. Yazı içerisinde bu hataların etrafından nasıl dolanabileceğimize de değineceğim. 2.3 sürümü erişilebilir olana kadar (magento/project-enterprise-edition=2.3) idare edebilir, sürüm duyurulduğunda bin/magento ile kolaylıkla upgrade işlemi gerçekleştirebilirsiniz.

bin/magento setup:upgrade

Kurulum ve kullanım işlemini yayınlanan resmi sürüm ile önerilen sistem üzerinden gerçekleştirmeniz tavsiye edilir.

Kurulum işlemlerini DigitalOcean LAMP stack droplet üzerinden gerçekleştireceğim. Sunucunun ön tanımlı olarak oluşturduğu index.html dosyasını silerek başlayalım.

rm /var/www/html/*.html

Ardından sunucudaki paketleri güncelleyip sistem gereksinimlerini kuralım.

apt-get update
sudo apt-get install php-pear php7.2-dev php7.2-curl php7.2-xml php7.2-mbstring php7.2-zip php7.2-intl php7.2-soap php7.2-bcmath
sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install libmcrypt-dev
sudo pecl install mcrypt-1.0.1 # pecl search mcrypt ile sürüm kontrolü yapabilirsiniz
sudo apt-get install composer

Kurulumun tamamlanmasının ardından PHP.ini dosyasında yer alan extension=mbstring satırını baştaki noktalı virgülü silerek aktif hale getirmeliyiz. Ardından yeni bir satıra extension=mcrypt.so eklemesini yapmalıyız.

nano /etc/php/7.2/apache2/php.ini
extension=mbstring
extension=mcrypt.so
Magento

mcrypt kurulumu ve extension aktifleştirilmesinin11 ilişkili dosyaları kopyalamamız ve ardından apache servisini yeniden başlatmamız uygun olacaktır.

sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/cli/conf.d/mcrypt.ini"
sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/apache2/conf.d/mcrypt.ini"
cp /etc/php/7.2/cli/conf.d/mcrypt.ini /etc/php/7.2/mods-available/
phpenmod mcrypt
a2enmod rewrite
systemctl restart apache2
Magento

Artık veritabanı işlemlerine geçebiliriz. DigitalOcean root kullanıcı üzerinden veritabanı bağlantısı gerçekleştirip yeni bir veritabanı ve kullanıcı oluşturalım.

cat ~/.digit* # root şifresini alalım
mysql -u root -p
CREATE DATABASE [veritabani-adi]; # [veritabani-adi] yerine geçerli başka bir ifade girebilirsiniz.
CREATE USER '[kullanici-adi]'@'localhost' IDENTIFIED BY '[veritabani-sifresi]';
GRANT ALL PRIVILEGES ON * . * TO '[kullanici-adi]'@'localhost';
FLUSH PRIVILEGES;
service mysql restart

Bu kurulum işlemlerinin başarıyla tamamlanmasının ardından composer ile yeni projemizi işleme alabiliriz. [klasor-adi] bölümünü kurulum yapmak istediğiniz klasör yolu ile düzenleyebilirsiniz. Ben doğrudan /var/www/html içerisine kurulum işlemini gerçekleştireceğim.

composer kullanımını root kullanıcı üzerinden gerçekleştirmenin güvenlik sorunlarına neden olabileceğini unutmamalısınız12.

Ubuntu - Magento Kurulumu
composer create-project --repository=https://repo.magento.com/ magento/project-community-edition --ignore-platform-reqs [klasor-adi]
chmod -R 777 /var/www/html/*

Veritabanı ve kullanıcı tanımlamalarının ardından accessKeys gereksinimimiz olacak. Bu amaçla developer ve/veya marketplace üzerinden kullanıcı adı (Public Key) ve şifre (Private Key) olarak ifade edilen bilgileri kullanmak gerekmekte. Şimdi ilk olarak bootstrap.php dosyasında hata yönetimi için error_reporting(E_ALL) satırında düzenleme yapmamız ve ini_set satırını eklememiz gerekmekte13 14.

nano /var/www/html/app/bootstrap.php
error_reporting(E_ALL &~ E_DEPRECATED);
ini_set('display_errors', 1);
Magento PHP Sürüm Hatası

Web Setup domain-veya-ip-adresi.com/admin/setup bu aşamada işlemeyecektir. Ancak bu sürüm hatasını komut satırı arayüzüyle çözebiliriz. İlgili alanları uygun şekilde doldurarak komutu uygulayabilirsiniz.

bin/magento setup:install \
--base-url=domain-veya-ip-adresi.com\
--db-host=localhost \
--db-name=[veritabani-adi] \
--db-user=[kullanici-adi] \
--db-password=[veritabani-sifresi] \
--backend-frontname=[yonetici-gorunuz-adi] \
--admin-firstname=[yonetici-adi] \
--admin-lastname=[yonetici-soyadi] \
--admin-email=[e-mail-adresi] \
--admin-user=[kullanici-adi] \
--admin-password=[yonetici-sifresi] \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1

Bu işlemin ardından dosya ve klasör izinlerini yeniden yapılandırabiliriz.

cd /var/www/html
find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} \;
find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} \;
chown -R :www-data .
chmod u+x bin/magento

İşlemlerimiz bu kadar. Ancak bu süreçte session hatası almanız muhtemel olabilir. Bu durumda .htaccess dosyasında yer alan session.auto_start değerini 0 (sıfır) olarak belirlemelisiniz.

nano /var/www/html/.htaccess
php_flag session.auto_start 0
service apache2 restart

Ardından SessionManager.php dosyasında yer alan ini_set(‘session.use_only_cookies’, ‘1’); satırını şu şekilde güncellemelisiniz.

nano /var/www/html/vendor/magento/framework/Session/SessionManager.php
// Enable session.use_only_cookies
ini_set('session.use_only_cookies', '1');
with the following ones:

if (!$this->isSessionExists()) {
 // Enable session.use_only_cookies
 ini_set('session.use_only_cookies', '1');
}
Magento Admin Dashboard

Yukarıdaki adımların sonucunda yönetici panelini artık görebiliyor olmanız gerekir. Böylelikle kurulumu başarıyla tamamlamış olmaktayız. Magento onusunda daha detaylı bilgi ve eğitimler için Getting Started başta olmak üzere U Magento, Frontend Developer Guide sayfalarını ve Magento Youtube kanalını15 tavsiye edebilirim. Ek olarak, Tutsplus16 eğitimlerine de göz atabilirsiniz.