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.
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

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

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.

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);

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');
}

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.
- About. Magento eCommerce Platform ↩
- eCommerce Solutions. Magento ↩
- Magento sold by eBay: Opace on whether Magento can shine as a private company ↩
- Adobe to Acquire Magento Commerce ↩
- Adobe to Acquire Magento. Magento ↩
- Matt Asay. (2018). Doubling Down on Adobe’s Open Platform Vision with Magento ↩
- Knockout. Simplfy dynamic JavaScript UIs with the Model-View-Viem Model (MVVM) pattern ↩
- Magento 2.3 technology stack requirements. Magento 2 DevDocs ↩
- How to get the Magento software. Magento 2 DevDocs ↩
- Install Magento using Composer. Magento 2 DevDocs ↩
- arzzen/install-php7.2-mcrypt.sh. GitHub ↩
- Root Package. Composer ↩
- Dmitry Fedyuk. (2017). How to adapt Magento 2 to PHP 7.2? ↩
-
Dmitry Fedyuk. (2016). How to disable the
E_DEPRECATED
error handling level for PHP? ↩ - Magento Commerce. Youtube ↩
- Zaman Riaz. (2014). From Beginner to Advanced in Magento: Introduction & Installation. envatotuts+ ↩