Kebutuhan e-commerce di dunia ini cukup banyak, karena hal tersebut ada banyak sekali framework ataupun CMS yang menyediakan fitur tersebut. Seperti contohnya Magento, salah satu CMS e-commerce ini adalah open source platform yang menawarkan free version yang disebut Magento Open Source (sebelumnya adalah Magento Community). Berikut kita akan membahas cara instal Magento 2 di CentOS 7.

Tentang Magento

Magento adalah open-source e-commerce yang didevelop oleh Varien, Inc. Dirilis pada 31 Maret 2008, versi yang terbaru adalah 2.3.2.

Requirement

  • OS: CentOS, Ubuntu, Debian atau RHEL.
  • RAM: 2GB.

Instalasi

Setelah sudah menyesuaikan requirement yang dibutuhkan, silahkan ikuti di bawah ini untuk mulai melakukan instal Magento 2 di CentOS 7.

Step 1 – Install Nginx

Install Epel Repository dan Nginx

$ yum install epel-release -y
$ yum install nginx -y

Start Nginx dan enable Nginx untuk start on-boot

$ systemctl start nginx
$ systemctl enable nginx

Install net-tools dan cek port Nginxnya

$ yum install net-tools -y
$ netstat -plntu 

Jika sudah seperti di atas, maka port 80 sudah running.

Step 2 – Install dan Configure PHP-FPM

Tambahkan Repository WebStatic

$ rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
$ yum install php70w-fpm php70w-mcrypt php70w-curl php70w-cli php70w-mysql php70w-gd php70w-xsl php70w-json php70w-intl php70w-pear php70w-devel php70w-mbstring php70w-zip php70w-soap -y

Di sini kami menggunakan PHP versi 7 untuk instalasi Magento.

Edit php.ini

$ nano /etc/php.ini 

Hilangkan comment cgi.fix_pathinfo di line 762 dan ubah valuenya ke 0

Cgi.fix_pathinfo = 0

Ubah value memory limit, max execution time dan enable zlib compression-nya

memory_limit = 512M
max_execution_time = 1800
zlib.output_compression = On

Hilangkan comment dan ubah session pathnya

;session.save_path = "/tmp" menjadi session.save_path = "/var/lib/php/session"

Edit PHP-FPM file

$ nano /etc/php-fpm.d/www.conf

Ubah valuenya menjadi nginx karena web server yang digunakan adalah Nginx

user = nginx
group = nginx

Ubah listen php-fpm dan hilangkan comment listen owner, group serta mode

listen = /var/run/php/php-fpm.sock
listen.owner = nginx 
listen.group = nginx 
listen.mode = 0660

Hilangkan comment environment pada line 366-370

env[HOSTNAME] = $HOSTNAME

env[PATH] = /usr/local/bin:/usr/bin:/bin

env[TMP] = /tmp

env[TMPDIR] = /tmp

env[TEMP] = /tmp

Create Directory Session Path

$ mkdir -p /var/lib/php/session/
$ chown -R nginx:nginx /var/lib/php/session/

Create Directory Socket PHP-FPM

$ mkdir -p /run/php/
$ chown -R nginx:nginx /run/php/

Start PHP-FPM dan enable PHP-FPM untuk start on-boot

$ systemctl start php-fpm
$ systemctl enable php-fpm

Kemudian cek PHP-FPM yang running pada socket file

$ netstat -pl | grep php-fpm.sock

Jika sudah seperti di atas artinya services php-fpm berjalan.

Step 3 – Install MySQL

Untuk dapat menggunakan Magento, diperlukan adanya MySQL, pada artikel ini kami menggunakan MySQL versi 5.7.

Download dan tambahkan Repository MySQL 5.7

$ yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

Install MySQL

$ yum install mysql-community-server

Start MySQL dan enable MySQL untuk start on-boot

$ systemctl start mysqld
$ systemctl enable mysqld

Instalasi ini menggunakan default password MySQL, untuk dapat mengetahuinya dapat jalankan command di bawah ini.

$ grep ‘temporary’ /var/log/mysqld.log

Ubah Password default MySQL

$ mysql -u root -p

Masukkan password default yang sudah dilihat dari command sebelumnya.

Ubah passwordnya

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY ‘[email protected]#’';
mysql> FLUSH PRIVILEGES;

Create Database

mysql> CREATE DATABASE magentodb;

Create User Database dan Password

mysql> CREATE USER [email protected] IDENTIFIED BY '[email protected]';

Grant Permission Privileges

mysql> GRANT ALL PRIVILEGES ON magentodb.* to [email protected] IDENTIFIED BY '[email protected]';
mysql> FLUSH PRIVILEGES;

Proses instalasi MySQL, configure dan membuat database user serta password sudah selesai.

Step 4 – Install dan Configure Magento

Install PHP Composer

Kami menggunakan curl untuk instalasi PHP Composer. Dan PHP Composer digunakan untuk Install PHP Dependencies.

$ curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer

Cek versi Composer

$ composer -v

Download dan Extract Magento

Ke directory /var/www/ dan download file magento di directory tersebut.

$ cd /var/www/
$ wget https://github.com/magento/magento2/archive/2.1.zip

Install Unzip

$ yum install unzip -y

Unzip file dan rename

$ unzip 2.1.zip
$ mv magento2-2.1 magento2

Install PHP Dependencies

Ke directory Magento2 dan lakukan composer install.

$ cd magento2 
$ composer install -v

Configure Magento Virtual Host

$ cd /etc/nginx/
$ nano conf.d/magento.conf

Paste script di bawah ke dalam magento.conf

upstream fastcgi_backend {
         server  unix:/run/php/php-fpm.sock;
}

server {

    listen 80;

    listen [::]:80;

    index  index.php index.html index.htm;

    server_name  magento.dewiweb.net www.magento.dewiweb.net;

    set $MAGE_ROOT /var/www/magento2;

    set $MAGE_MODE developer;

    include /var/www/magento2/nginx.conf.sample;

}

Kemudian test configuration nginxnya dan restart service nginx.

$ nginx -t
$ systemctl restart nginx

Setup Magento 2

Ke directory magento2

$ cd /var/www/magento2/

Jalankan command di bawah ini

$ bin/magento setup:install --backend-frontname="adminlogin" \

--key="255aa6cb80421093126011ec201dbe83" \

--db-host="localhost" \

--db-name="magentodb" \

--db-user="magentouser" \

--db-password="[email protected]" \

--language="en_US" \

--currency="IDR" \

--timezone="Asia/Jakarta" \

--use-rewrites=1 \

--use-secure=0 \

--base-url="http://magento.dewiweb.net" \

--base-url-secure="https://magento.dewiweb.net" \

--admin-user=adminadminuser \

[email protected] \

[email protected] \

--admin-firstname=admin \

--admin-lastname=user \

--cleanup-database

Kamu perlu ubah valuenya: 

--backend-frontname: Magento admin login page "adminlogin"

--key: generate key kamu

--db-host: Database host localhost

--db-name: database name 'magentodb'

--db-user: database user 'magentouser'

--db-password: database password '[email protected]'

--base-url: Magento URL

--admin-user: admin user kamu

--admin-password: password admin kamu

--admin-email: email kamu

Generate Key

  1. Login ke https://account.magento.com/customer/account/
  2. My Product -> Access Keys
  3. Create new access keys -> masukkan nama nya, contoh: dewaweb
  4. Copy public keynya yang akan digunakan pada value “key” saat setup Magento.

Tampilan diatas artinya setup berhasil.

Ubah permission dan owner directory Magento

$ chmod 700 /var/www/magento2/app/etc

$ chown -R nginx:nginx /var/www/magento2

Configure Magento Crontab

$ crontab -u nginx -e

Masukkan script di bawah ini pada file crontab.

* * * * * /usr/bin/php /var/www/magento2/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/magento2/var/log/magento.cron.log

* * * * * /usr/bin/php /var/www/magento2/update/cron.php >> /var/www/magento2/var/log/update.cron.log

* * * * * /usr/bin/php /var/www/magento2/bin/magento setup:cron:run >> /var/www/magento2/var/log/setup.cron.log

Ubah Security Context pada directory Magento

$ cd /var/www/

$ semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2(/.*)?'

$ semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/app/etc(/.*)?'

$ semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/var(/.*)?'

$ semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/pub/media(/.*)?'

$ semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/magento2/pub/static(/.*)?'

$ restorecon -Rv '/var/www/magento2/'

Step 5 – Install Firewall 

$ cd /usr/src

$ wget https://download.configserver.com/csf.tgz

$ tar -xzf csf.tgz

$ cd csf

$ sh install.sh

Pada konfigurasi CSF ubah “make TESTING=’1’ menjadi 0”.

$ nano /etc/csf/csf.conf

Kemudian restart CSF supaya reload konfigurasi yang ter-update.

$ csf -r 

Setelah itu coba akses website Magento kamu.

Tampilan di atas menandakan bahwa instalasi Magento 2 pada CentOS 7 telah berhasil.

Kesimpulan

Magento2 ini memang cukup berat dari requirement yang dibutuhkan, sehingga disarankan memang menggunakan VPS tersendiri. Namun, kamu juga bisa menggunakan paket hosting yang tinggi untuk dapat menggunakan Magento ini. 

Di Dewaweb sendiri dengan paket Guardian sudah support Magento, jika di bawah paket Guardian tidak disarankan dengan alasan kurangnya resource yang dibutuhkan Magento.

Demikian artikel ini, jangan sungkan untuk meninggalkan ide-ide topik yang ingin kamu baca di blog Dewaweb. Semoga artikel ini membantu!