Magento adalah platform e-commerce kelas enterprise terkemuka dan dibangun dengan teknologi open source yang menggabungkan fitur-fitur canggih, fleksibilitas dan antarmuka yang ramah pengguna.
Dengan fitur-fitur seperti Melibatkan Pengalaman Belanja, Arsitektur Modular yang Fleksibel dan Skalabilitas serta Kinerja Magento membuatnya menjadi platform pilihan bagi sebagian besar pedagang online.
Dalam tutorial ini, kami akan menunjukkan kepada Anda bagaimana install Magento 2.3 pada LEMP stack Ubuntu 18.04. Kita akan menggunakan Nginx sebagai server web, PHP 7.2, dan MySQL atau MariaDB sebagai server database.

Prasyarat

Pastikan Anda telah memenuhi prasyarat berikut sebelum melanjutkan dengan tutorial ini:
  • Memiliki nama domain yang menunjuk ke IP server publik. Kami akan menggunakan contoh domain example.com.
  • Nginx terinstal di server Ubuntu Anda, dengan mengikuti instruksi ini.
  • Memiliki Sertifikat SSL terpasang untuk domain Anda. Sertifikat SSL ini berfungsi untuk  mengenkripsi informasi pengguna. Anda dapat menginstal sertifikat SSL gratis Let’s Encrypt dengan mengikuti instruksi ini.
Agar dapat mengakses repositori kode Magento, Anda harus membuat kunci otentikasi. Jika Anda tidak memiliki akun Magento Marketplace, Anda dapat membuatnya dengan menuju halaman ini. Setelah Anda membuat akun, silakan periksa instruksi ini tentang cara membuat set kunci otentikasi baru.
Perbarui paket sistem ke versi terbaru dan instal utilitas unzip:
sudo apt update && sudo apt upgrade

sudo apt install unzip

Membuat database MySQL

Jika Anda sudah memiliki (salah satu) MySQL atau MariaDB terinstall di server Anda, lewati langkah ini. Jika belum, Anda dapat menginstal paket server MySQL 5.7 dari repositori default Ubuntu dengan mengetik:
sudo apt install mysql-server mysql-client
Untuk instalasi MySQL baru, disarankan untuk menjalankan perintah mysql_secure_installation untuk meningkatkan keamanan server MySQL Anda.
Login ke shell MySQL menggunakan perintah berikut:
sudo mysql
Dari dalam shell MySQL, jalankan pernyataan SQL berikut untuk membuat database baru bernama magento:
CREATE DATABASE magento;
Selanjutnya, buat akun pengguna MySQL bernama magento dan berikan hak akses yang diperlukan kepada pengguna dengan menjalankan perintah berikut:
GRANT ALL ON magento.* TO 'magento'@'localhost' IDENTIFIED BY 'ganti_dengan_password';
Perintah di atas akan memberikan semua izin kepada pengguna magento untuk dapat membaca dan menulis di database. Pastikan untuk mengubah ganti_dengan_password dengan kata sandi yang kuat.
Setelah selesai, keluar dari konsol MySQL dengan mengetik:
EXIT;

Membuat User Baru di Sistem Linux

Buat user dan grup baru, yang akan menjadi pemilik sistem file Magento, untuk kemudahan analisa dan penyelesaian masalah izin keamanan, kami akan menamai user baru tersebut dengan nama magento:
sudo useradd -m -U -r -d /opt/magento magento
Tambahkan pengguna www-data ke grup magento dan ubah izin direktori /opt/magento sehingga Nginx dapat mengakses instalasi Magento:
sudo usermod -a -G magento www-data

sudo chmod 750 /opt/magento

Install dan Konfigurasi PHP

PHP 7.2 yang merupakan versi default PHP di Ubuntu 18.04 sepenuhnya didukung dan direkomendasikan untuk Magento 2.3. Karena kita akan menggunakan Nginx sebagai web server, kita juga akan menginstal paket PHP-FPM.
Jalankan perintah berikut untuk menginstal PHP dan semua modul PHP yang diperlukan:
sudo apt install php7.2-common php7.2-cli php7.2-fpm php7.2-opcache php7.2-gd php7.2-mysql php7.2-curl php7.2-intl php7.2-xsl php7.2-mbstring php7.2-zip php7.2-bcmath php7.2-soap
Layanan PHP-FPM akan secara otomatis dimulai setelah proses instalasi selesai, Anda dapat memverifikasinya dengan melihat status layanan di terminal Linux dengan mengetik perintah :
sudo systemctl status php7.2-fpm
Output akan menunjukkan bahwa layanan fpm aktif dan berjalan.
● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-12-12 15:47:16 UTC; 5s ago
     Docs: man:php-fpm7.2(8)
 Main PID: 16814 (php-fpm7.2)
   Status: "Ready to handle connections"
    Tasks: 3 (limit: 505)
   CGroup: /system.slice/php7.2-fpm.service
Tetapkan opsi PHP yang diperlukan dan yang disarankan:
sudo sed -i "s/memory_limit = .*/memory_limit = 1024M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 256M/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.2/fpm/php.ini
sudo sed -i "s/;opcache.save_comments.*/opcache.save_comments = 1/" /etc/php/7.2/fpm/php.ini
Selanjutnya kita perlu membuat FPM pool untuk user magento.
Buka text editor Anda dan buat file berikut:
sudo nano /etc/php/7.2/fpm/pool.d/magento.conf
[magento]
user = magento
group = www-data
listen.owner = magento
listen.group = www-data
listen = /var/run/php/php7.2-fpm-magento.sock
pm = ondemand
pm.max_children =  50
pm.process_idle_timeout = 10s
pm.max_requests = 500
chdir = /
Restart layanan PHP-FPM agar perubahan diterapkan:
systemctl restart php7.2-fpm
Verifikasi apakah soket PHP berhasil dibuat dengan menjalankan perintah ls berikut:
ls -al /var/run/php/php7.2-fpm-magento.sock
Outputnya akan terlihat seperti ini:
srw-rw---- 1 magento www-data 0 Dec 12 16:07 /var/run/php/php7.2-fpm-magento.sock=

Install PHP Composer

Composer adalah manajer dependensi untuk PHP dan kita akan menggunakannya untuk mengunduh Magento core dan menginstal semua komponen Magento yang diperlukan.
Untuk menginstal Composer secara global, unduh installer Composer dengan perintah curl dan pindahkan file ke direktori/usr/local/bin:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
Verifikasi installer dengan print versi Composer di terminal:
composer --version
Outputnya akan terlihat seperti ini:
Composer version 1.8.0 2018-17-03 11:33:26

Install Magento

Ada beberapa cara untuk menginstal Magento 2. Hindari Instal Magento dari repositori Github, karena versi itu dimaksudkan untuk pengembangan dan bukan untuk instalasi produksi.
Pada saat menulis artikel ini, versi stabil terbaru dari Magento adalah versi 2.3.0. Dalam tutorial ini, kita akan menginstal Magento dari repositori resmi mereka menggunakan Composer.
Beralih ke pengguna magento dengan mengetik:
sudo su - magento
Mulai instalasi dengan mengunduh file magento ke direktori /opt/magento/public_html:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition /opt/magento/public_html
Anda akan diminta untuk memasukkan kunci akses, salin kunci yang Anda dapatkan dari akun Magento marketplace dan simpan dalam file auth.json, jadi nanti saat memperbarui instalasi, Anda tidak perlu menambahkan kunci yang sama lagi.
    Authentication required (repo.magento.com):
      Username: e758ec1765d160320ca246e4e832e12c
      Password: 
Do you want to store credentials for repo.magento.com in /opt/magento/.config/composer/auth.json ? [Yn] Y
Perintah di atas akan mengambil semua paket PHP yang diperlukan. Prosesnya mungkin memakan waktu beberapa menit dan jika berhasil, hasil akhir akan terlihat seperti berikut:
Writing lock file
Generating autoload files
Setelah proyek dibuat, kita dapat memulai instalasi Magento. Kita dapat menginstal Magento baik dari baris perintah atau menggunakan website. Dalam tutorial ini, kita akan menginstal Magento menggunakan baris perintah.
We will use the following options to install the Magento store:
Kami akan menggunakan opsi berikut untuk menginstal Magento:
  • Base URL menggunakan https://example.com, ganti dengan nama domain Anda.
  • Administrator Magento:
    • Rino Dodo Nama depan dan Nama belakang untuk admin.
    • admin@example.com sebagai email untuk admin.
    • rinodo sebagai username dan P@ssvv0rD sebagai password.
  • Nama database magento, username magento, password password_untuk_database dan server database berada di mesin yang sama dengan web server.
  • en_US, US English sebagai bahasa default.
  • USD dollars sebagai mata uang default. (Bisa di ganti ke rupiah nanti)
  • Indonesia/Jakarta as a time zone.
Anda dapat menemukan semua opsi instalasi di sini.
Ubah ke direktori Magento ~/public_html:
cd ~/public_html
Jalankan perintah berikut untuk mulai instalasi Magento :
php bin/magento setup:install --base-url=https://example.com/ \
        --base-url-secure=https://example.com/ \
        --admin-firstname="Rino" \
        --admin-lastname="Dodo" \
        --admin-email="admin@example.com" \
        --admin-user="rinodo" \
        --admin-password="P@ssvv0rD" \
        --db-name="magento" \
        --db-host="localhost" \
        --db-user="magento" \
        --currency=IDR \
        --timezone=Indonesia/Jakarta \
        --use-rewrites=1 \
        --db-password="password_untuk_database"
Jangan lupa untuk mengubah kata (P@ssvv0rD) menjadi sesuatu yang lebih aman.
Prosesnya mungkin memakan waktu beberapa menit dan setelah selesai Anda akan disajikan dengan pesan yang berisi URI ke dasbor admin Magento.
[Progress: 773 / 773]
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_13nv5k
Nothing to import.

Membuat crontab Magento

Magento menggunakan cron job untuk menjadwalkan tugas-tugas seperti pengindeksan ulang, pemberitahuan, peta situs, email dan banyak lagi.
Untuk membuat crontab Magento, jalankan perintah berikut sebagai pengguna magento:
php ~/public_html/bin/magento cron:install
Crontab has been generated and saved
Verifikasi konfigurasi crontab telah terinstall dengan mengetik perintah :
crontab -l
#~ MAGENTO START adc062915d7b30804a2b340095af072d
* * * * * /usr/bin/php7.2 /opt/magento/public_html/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /opt/magento/public_html/var/log/magento.cron.log
* * * * * /usr/bin/php7.2 /opt/magento/public_html/update/cron.php >> /opt/magento/public_html/var/log/update.cron.log
* * * * * /usr/bin/php7.2 /opt/magento/public_html/bin/magento setup:cron:run >> /opt/magento/public_html/var/log/setup.cron.log
#~ MAGENTO END adc062915d7b30804a2b340095af072d

Konfigurasi Nginx

Sekarang, Anda seharusnya sudah menginstal Nginx dengan sertifikat SSL di server Ubuntu Anda, jika masih belum, silahkan untuk memeriksa prasyarat untuk tutorial ini.
kita akan memasukkan konfigurasi Nginx default yang dikirimkan bersama Magento.
Beralih ke pengguna sudo Anda, buka editor teks Anda dan buat file berikut:
sudo nano /etc/nginx/sites-available/example.com
upstream fastcgi_backend {
  server   unix:/var/run/php/php7.2-fpm-magento.sock;
}

server {
    listen 80;
    server_name example.com www.example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    set $MAGE_ROOT /opt/magento/public_html;
    set $MAGE_MODE developer; # or production

    access_log /var/log/nginx/example.com-access.log;
    error_log /var/log/nginx/example.com-error.log;

    include /opt/magento/public_html/nginx.conf.sample;
}
Jangan lupa untuk mengganti example.com dengan domain Magento Anda dan setel jalur yang benar ke file sertifikat SSL. Snippets yang digunakan dalam konfigurasi ini dibuat dalam panduan ini.
Sebelum memulai kembali layanan Nginx, lakukan tes untuk memastikan bahwa tidak ada kesalahan sintaksis:
sudo nginx -t
Jika tidak ada kesalahan, hasilnya akan terlihat seperti ini:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Terakhir, restart layanan Nginx dengan mengetik:
sudo systemctl restart nginx

Verifikasi Instalasi

Buka browser Anda, ketikkan domain Anda dan jika instalasi Magento berhasil, layar yang mirip dengan screenshot berikut ini akan muncul:
ubuntu-magento