Deploy Magento 2, an open-source e-commerce platform, on an ECS instance running Ubuntu with NGINX, MySQL, OpenSearch, and Composer.
Lihat situs resmi Adobe Commerce untuk informasi selengkapnya mengenai Magento 2.
Latar Belakang
Topik ini menggunakan instans ECS dengan konfigurasi berikut:
-
Tipe instans: ecs.c7.large
-
Sistem operasi: gambar publik Ubuntu 22.04 64-bit
-
CPU: 2 vCPU
-
Memori: 4 GiB
CatatanMagento 2 memerlukan setidaknya 4 GiB memori.
Versi perangkat lunak berikut diperlukan sesuai dokumentasi resmi Magento 2:
-
Composer 2.7: Mengelola codebase Magento 2 dan dependensi pihak ketiga.
-
OpenSearch 2.12: Menyediakan pencarian produk, termasuk penyaringan dan pengurutan relevansi.
-
MySQL 8.0: Menyimpan data bisnis seperti produk, pesanan, dan catatan pelanggan.
-
PHP 8.3: Mengeksekusi logika aplikasi dan berkomunikasi dengan database serta layanan lainnya.
-
NGINX 1.24: Menyajikan file statis dan melakukan reverse-proxy permintaan dinamis ke PHP-FPM.
Prasyarat
-
Dapatkan kunci pribadi Anda dari Adobe Commerce.
Kunci pribadi mencakup Public Key dan Private Key, yang dapat dilihat dan dikelola di halaman Access Keys di Adobe Commerce Marketplace. Klik Create A New Access Key untuk membuat kunci baru, lalu gunakan Copy untuk menyalin nilai kuncinya.
-
Alamat IP publik secara otomatis ditetapkan ke instans ECS. Atau, alamat IP elastis (EIP) dikaitkan dengan instans ECS. Untuk petunjuk cara mengaktifkan bandwidth publik, lihat Enable public bandwidth.
-
Port 22 terbuka dalam aturan grup keamanan masuk. Lihat Add a security group rule.
-
Docker diinstal pada instans ECS. Lihat Install Docker.
-
Stack LNMP (Linux, NGINX, MySQL, dan PHP) telah dideploy. Lihat Deploy an LNMP stack.
Catatan-
Versi yang diperlukan: NGINX 1.24, MySQL 8.0, dan PHP 8.3.
-
Sesuaikan nomor versi pada langkah-langkah berikut ini.
-
Prosedur
Langkah 1: Instal ekstensi PHP
-
Instal paket inti PHP dan ekstensinya.
-
Instal paket inti PHP beserta ekstensi bawaannya.
sudo apt-get install php8.3-cli php8.3-common php8.3-fpm php8.3-mysql php8.3-zip php8.3-gd php8.3-curl php8.3-intl php8.3-mbstring php8.3-soap php8.3-xml php8.3-bcmath php8.3-sqlite3 php8.3-opcache -
Instal ekstensi tambahan.
sudo apt-get install php8.3-bcmath php8.3-curl php8.3-gd php8.3-intl php8.3-mbstring php8.3-soap php8.3-xml php8.3-zip php8.3-sqlite3 -
Restart NGINX untuk menerapkan perubahan.
sudo systemctl restart nginx
-
-
Konfigurasikan php.ini.
-
Buka file php.ini.
sudo vim /etc/php/8.3/fpm/php.ini sudo vim /etc/php/8.3/cli/php.ini -
Perbarui pengaturan berikut, lalu simpan dan tutup file tersebut.
memory_limit = 2G max_execution_time = 1800 zlib.output_compression = On -
Restart PHP-FPM.
sudo systemctl restart php8.3-fpm
-
Langkah 2: Buat database Magento2
-
Hubungkan ke MySQL.
mysql -u root -pMasukkan kata sandi root MySQL saat diminta.
-
Buat dan konfigurasikan database. Pada contoh ini, nama database dan username keduanya adalah
magento.CREATE DATABASE magento; CREATE USER 'magento'@'localhost' IDENTIFIED BY 'magento'; GRANT ALL PRIVILEGES ON magento.* TO 'magento'@'localhost'; FLUSH PRIVILEGES; EXIT; -
Verifikasi database.
mysql -u magento -pCatatanJika monitor MySQL muncul, berarti database berhasil dibuat. Jika terjadi error, jalankan kembali pernyataan sebelumnya.
Langkah 3: Unduh dan instal OpenSearch
-
Sebelum menginstal OpenSearch dengan Docker, selesaikan tugas-tugas berikut:
-
Nonaktifkan memory paging dan swapping untuk meningkatkan performa.
sudo swapoff -a -
Tingkatkan batas memory map untuk OpenSearch.
-
Buka sysctl.conf.
sudo vi /etc/sysctl.conf -
Tambahkan
vm.max_map_count=262144 -
Verifikasi konfigurasi.
sudo sysctl -p cat /proc/sys/vm/max_map_countSetelah menjalankan perintah tersebut, output
vm.max_map_count = 262144menunjukkan bahwa parameter telah berhasil dimodifikasi.vm.swappiness = 0 kernel.sysrq = 1 vm.max_map_count = 262144 net.ipv4.neigh.default.gc_stale_time = 120 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_announce = 2 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_slow_start_after_idle = 0
-
-
-
Jalankan OpenSearch dalam kontainer Docker.
-
Ambil image OpenSearch.
sudo docker pull opensearchproject/opensearch:2 -
Deploy OpenSearch dalam kontainer untuk memverifikasi Docker berfungsi dengan baik.
sudo docker run -d \ -p 9200:9200 \ -p 9600:9600 \ -e "discovery.type=single-node" \ -e "OPENSEARCH_INITIAL_ADMIN_PASSWORD=admin" \ -e "plugins.security.disabled=true" \ opensearchproject/opensearch:latestCatatanContoh ini menonaktifkan SSL pada layer HTTP dan Transport untuk pengujian dengan mengatur
plugins.security.disabledketrue. -
Kirim permintaan ke port 9200. Kredensial default adalah admin/admin.
sudo curl -k http://localhost:9200 -ku admin:adminOutput yang diharapkan:
{ "name" : "a937e018****", "cluster_name" : "docker-cluster", "cluster_uuid" : "GLAjAG6bTeWE****_d-CLw", "version" : { "distribution" : "opensearch", "number" : <version>, "build_type" : <build-type>, "build_hash" : <build-hash>, "build_date" : <build-date>, "build_snapshot" : false, "lucene_version" : <lucene-version>, "minimum_wire_compatibility_version" : "7.10.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "The OpenSearch Project: https://opensearch.org/" }
-
-
Daftar kontainer yang sedang berjalan dan salin ID kontainer OpenSearch.
sudo docker container ls -
Konfigurasikan NGINX sebagai proxy untuk OpenSearch.
-
Verifikasi bahwa /etc/nginx/nginx.conf berisi
include /etc/nginx/conf.d/*.conf;.vi /etc/nginx/nginx.conf## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } #mail { # # See sample authentication script at: # # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript # # # auth_http localhost/auth.php; # pop3_capabilities "TOP" "USER"; # # imap_capabilities "IMAP4rev1" "UIDPLUS"; -
Buat konfigurasi proxy.
-
Buat file konfigurasi berikut.
sudo vim /etc/nginx/conf.d/magento_es_auth.confserver { listen 8080; location /_cluster/health { proxy_pass http://localhost:9200/_cluster/health; } } -
Restart NGINX.
sudo service nginx restart -
Periksa apakah proxy berfungsi:
sudo curl -u admin:admin -i http://localhost:8080/_cluster/health?prettyOutput yang diharapkan:
root@z1zzZ:/# curl -u admin:admin -i http://localhost:8080/_cluster/health?pretty HTTP/1.1 200 OK Server: nginx/1.18.0 (Ubuntu) Date: Tue, 14 Jan 2025 05:43:56 GMT Content-Type: application/json; charset=UTF-8 Content-Length: 497 Connection: keep-alive { "cluster_name" : "docker-cluster", "status" : "green", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "discovered_master" : true, "active_primary_shards" : 0, "active_shards" : 0, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 }
-
-
Langkah 4: Unduh dan instal Composer
-
Instal alat dekompresi.
Composer memerlukan
unzipataup7zipuntuk dekompresi.sudo apt-get install unzip sudo apt-get install p7zip-full -
Instal Composer:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" -
Pindahkan
composer.pharke direktori PATH agar dapat diakses secara global.sudo mv composer.phar /usr/local/bin/composer -
Verifikasi versi Composer.
composer --version
Langkah 5: Unduh dan instal Magento2
-
Buat proyek Composer dengan pasangan kunci akses yang diperoleh dari Adobe Commerce. Nama proyek adalah
magento.cd /var/www/html/ sudo composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition magento -
Masukkan kunci autentikasi Anda saat diminta.
Catatan-
Kunci autentikasi adalah kunci privat yang diperoleh pada bagian Prasyarat.
-
Pengunduhan dapat memakan waktu 5 hingga 10 menit.
ecs-user@xxx:/var/www/html$ sudo composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition magento Creating a "magento/project-community-edition" project at "./magento" Warning from repo.magento.com: You haven't provided your Magento authentication keys. For instructions, visit https://devdocs.magento.com/guides/v2.3/install-gde/prereq/connect-auth.html Authentication required (repo.magento.com): Username: 2732xxx14ff71b9 Password: Do you want to store credentials for repo.magento.com in /root/.config/composer/auth.json ? [Yn] y Installing magento/project-community-edition (2.4.7-p3) - Downloading magento/project-community-edition (2.4.7-p3) - Installing magento/project-community-edition (2.4.7-p3): Extracting archive Created project in /var/www/html/magento Loading composer repositories with package information -
-
Tetapkan izin file.
cd /var/www/html/magento 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 -
Instal Magento 2.
Instal Adobe Commerce dari command line. Pada contoh ini,
db-hostadalah localhost, dandb-name,db-user, dandb-passwordsemuanya adalahmagento.sudo bin/magento setup:install \ --base-url=http://196.****.*.1/ \ # Alamat IP publik instans ECS --db-host=localhost \ # Host database --db-name=magento \ # Nama database --db-user=magento \ # Username database --db-password=magento \ # Kata sandi database --admin-firstname=admin \ # Nama depan administrator backend --admin-lastname=admin \ --admin-email=cy****sper@email.com \ # Alamat email administrator --admin-user=admin \ # Username login backend --admin-password=admin*** \ # Kata sandi login backend --language=en_US \ # Bahasa website --currency=USD \ --timezone=America/Chicago \ --use-rewrites=1 \ --search-engine=opensearch \ --opensearch-host=localhost \ --opensearch-port=9200 \ --opensearch-enable-auth=1 \ --opensearch-username=admin \ --opensearch-password=admin \ --opensearch-index-prefix=magento2 -
Setelah instalasi, output serupa berikut akan ditampilkan.
[Progress: 1445 / 1448] Post installation file permissions check... For security, remove write permissions from these directories: '/home/wwwroot/magento2/app/etc' [Progress: 1446 / 1448] Write installation date... [Progress: 1447 / 1448] Enabling Update by Schedule Indexer Mode... 14 indexer(s) are in "Update by Schedule" mode. [Progress: 1448 / 1448] [SUCCESS]: Magento installation complete. [SUCCESS]: Magento Admin URI: /admin_46i5yq2 Nothing to import.Magento Admin URI adalah URL backend administrator, yang dapat diakses setelah NGINX dikonfigurasi. Contoh:
http://47.****.**.72/admin_46i****. -
Konfigurasikan forwarding NGINX.
-
Buat file konfigurasi Magento 2.
sudo vim /etc/nginx/conf.d/magento.conf -
Tambahkan konten berikut, lalu simpan dan keluar.
upstream fastcgi_backend { server unix:/run/php/php8.3-fpm.sock; } server { listen 80; server_name ip; set $MAGE_ROOT /var/www/html/magento; include /var/www/html/magento/nginx.conf.sample; } -
Verifikasi sintaksis NGINX.
nginx -t -
Restart NGINX.
sudo systemctl restart nginx
-
Kunjungi website Magento 2
-
Buka
http://<Alamat IP publik instans ECS Anda>di browser untuk melihat halaman utama default.Halaman tersebut menampilkan halaman utama tema Luma Magento default dengan judul Home Page dan teks placeholder
CMS homepage content goes here., yang menunjukkan bahwa Magento 2 berhasil diinstal. -
Buka
http://<Alamat IP publik instans ECS>/admin_46i****dan login dengan usernameadmindan passwordadmin***.