Cara Instal Magento 2 di CentOS 7

Kebutuhan e-commerce di dunia ini cukup banyak. Namun untungnya, banyak pula framework atau CMS yang mampu menyediakan fitur untuk membuat e-commerce. Salah satunya adalah Magento, salah satu CMS e-commerce ini adalah open-source platform yang menawarkan CMS versi gratis, yaitu Magento Open Source (sebelumnya adalah Magento Community). Pelajari cara instal Magento 2 di CentOS 7 berikut ini.

Tentang Magento

Magento adalah open-source e-commerce yang dikembangkan oleh Varien, Inc. Platform e-commerce yang ditulis menggunakan bahasa pemrograman PHP ini dirilis pada 31 Maret 2008, versi yang terbaru adalah 2.3.2.

Requirements

  • OS: CentOS, Ubuntu, Debian, atau Red Hat Entreprise Linux (RHEL).
  • RAM: 2GB.

Instalasi Magento di Linux CentOS 7

Setelah memenuhi requirements yang dibutuhkan, ikuti langkah berikut ini untuk mulai melakukan instal Magento 2 di CentOS 7.

Step 1 – Instal Nginx

Instal Epel Repository dan Nginx

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

Start dan enable Nginx untuk start on-boot

$ systemctl start nginx
$ systemctl enable nginx

Instal net-tools dan cek port Nginx-nya

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

instal magento 2 cek port nginx

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

Step 2 – Instal 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 instal Magento 2.

Edit php.ini

$ nano /etc/php.ini 

Hilangkan comment cgi.fix_pathinfo di line 762 dan ubah value-nya 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 path-nya

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

Edit PHP-FPM file

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

Ubah value-nya 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

Buat Directory Session Path

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

Buat 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

Asset Blog Dewaweb

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

Step 3 – Instal MySQL

Agar hasil instal Magento bisa digunakan, kamu memerlukan MySQL, di artikel ini MySQL yang digunakan adalah versi 5.7.

Unduh dan tambahkan Repository MySQL 5.7

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

Instal MySQL

$ yum install mysql-community-server

Start dan enable MySQL untuk start on-boot

$ systemctl start mysqld
$ systemctl enable mysqld

Instalasi ini menggunakan default password MySQL, untuk mengetahuinya kamu bisa menjalankan perintah di bawah ini.

$ grep 'temporary' /var/log/mysqld.log

Asset Blog Dewaweb

Ubah default password MySQL

$ mysql -u root -p

Masukkan password default yang sudah dilihat dari perintah di atas.

Ubah password-nya

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY ‘Dewaweb123!@#’';
mysql> FLUSH PRIVILEGES;

Buat Database

mysql> CREATE DATABASE magentodb;

Buat user database dan password

mysql> CREATE USER magentouser@localhost IDENTIFIED BY 'Magento123@';

Grant Permission Privileges

mysql> GRANT ALL PRIVILEGES ON magentodb.* to magentouser@localhost IDENTIFIED BY 'Magento123@';
mysql> FLUSH PRIVILEGES;

Proses instalasi MySQL, konfigurasi, dan membuat database pengguna serta password sudah selesai.

Baca Juga: Optimasi Database MySQL Menggunakan MySQLTuner

Step 4 – Instal dan Konfigurasi Magento

Langkah selanjutnya adalah melakukan instal sekaligus konfigurasi Magento 2 di CentOS 7 dengan cara berikut:

Instal PHP Composer

Kami menggunakan cURL untuk instalasi PHP Composer dan PHP Composer digunakan untuk instal PHP Dependencies.

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

Cek versi Composer

$ composer -v

instal magento 2 versi composer

Unduh dan extract Magento

Ke directory /var/www/ dan unduh file Magento di directory tersebut.

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

Instal Unzip

$ yum install unzip -y

Unzip file dan rename

$ unzip 2.1.zip
$ mv magento2-2.1 magento2

Instal PHP Dependencies

Ke directory Magento 2 dan lakukan composer install.

$ cd magento2 
$ composer install -v

Konfigurasi Magento Virtual Host

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

Copy dan paste script berikut 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 tes konfigurasi Nginx-nya dan restart service Nginx.

$ nginx -t
$ systemctl restart nginx

Setup Magento 2

Ke directory Magento 2

$ cd /var/www/magento2/

Jalankan perintah berikut:

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

--key="255aa6cb80421093126011ec201dbe83" \

--db-host="localhost" \

--db-name="magentodb" \

--db-user="magentouser" \

--db-password="Magento123@" \

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

--admin-password=dewadewadewa123@ \

[email protected] \

--admin-firstname=admin \

--admin-lastname=user \

--cleanup-database

Kamu perlu ubah value-nya: 

--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 'Magento123@'

--base-url: Magento URL

--admin-user: admin user kamu

--admin-password: password admin kamu

--admin-email: email kamu

Generate Key

instal magento 2 halaman akun pengguna magento

  1. Login ke halaman akun pelanggan Magento
  2. My Product -> Access Keys
  3. Create new access keys -> masukkan namanya, contoh: dewaweb
  4. Salin public key yang akan digunakan pada value “key” saat setup Magento.

instal magento 2 setup berhasil

Tampilan di atas 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 perintah 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 – Instal 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 agar dapat me-reload konfigurasi yang ter-update.

$ csf -r 

Setelah itu, coba akses website Magento kamu.

Asset Blog Dewaweb

Jika diikuti dengan benar, seharusnya tampilan layar saat ini sama seperti di atas, yaitu hasil instal Magento 2 di CentOS 7 yang sudah berhasil.

Baca Juga: Cara Instalasi VirtualBox di CentOS 7

Simpulan

Requirement yang dibutuhkan Magento 2 memang cukup berat, oleh karenanya lebih baik jika kamu menggunakan VPS sendiri. Cara lainnya, kamu bisa menggunakan layanan cloud hosting yang mencukupi untuk dapat menggunakan Magento ini. Di Dewaweb, jika ingin menginstal Magento kamu memerlukan minimal paket Guardian karena sudah memiliki resource yang cukup.

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