Magento

Magento Nedir? Nasıl Kurulur?

Yayın:
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; ...
GÖRSEL
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 Nedir?

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ştirilmektedir. 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ümleri 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’e, 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ır.
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. Bu markalar ve başarı hikayelerine Customer Stories sayfasından ulaşabilirsiniz.

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.js 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
    1. bc-math (sadece Magento Commerce için geçerli)
    2. ctype
    3. curl
    4. dom
    5. gd
    6. intl
    7. mbstring
    8. hash
    9. openssl
    10. PDO/MySQL
    11. SimpleXML
    12. soap
    13. spl
    14. libxml
    15. xsl
    16. azip
    17. json
    18. iconv
    19. OPcache (Magento tarafından performans etkisi sebebiyle özellikle tavsiye edilmekte)
Diğer gereksinimler ve ek bilgiler için Magento 2.3.x technology stack requirements 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 software sayfasından ulaşabilirsiniz. Clone the Magento repository kurulumu için GitHub sayfasını inceleyebilirsiniz. Pek kurulum işlemlerini Composer ile gerçekleştireceğim. Bu kurulum için yönergelere ayrıca Install Magento using Composer sayfasından ulaşabilirsiniz.Öncelikle Magento 2.3.x technology stack requirements sayfasında belirtilmesine karşın Magento Community Edition şu anda dağıtımda olan 2.2.6 sürümüyle resmi olarak PHP 7.2 desteğine sahip değil. Yakın zamanda bu desteğe kavuşacaktır. 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 (bin/magento setup:upgrade) işlemi gerçekleştirebilirsiniz. Elbette bu işlemleri eğitim amacıyla paylaştığımı belirtmeliyim. 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ştirilmesinin 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ız.
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/ya 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 gerekmekte.
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
service apache2 restart
php_flag session.auto_start 0
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ı tavsiye edebilirim. Ek olarak SiteGround ve Tutsplus eğitimlerine de göz atabilirsiniz.

HABERDAR OL

Yeni eklenen projeler, eğitimler, içerikler ve yayınlanan videolar e-posta adresine gelsin.