Abantecart adalah aplikasi e-commerce gratis, open source dan kaya fitur. Itu ditulis dalam PHP dan didukung oleh teknologi terbaru seperti HTML5, Bootstrap, MVC dan banyak lagi. Itu dapat membuat beberapa toko online menggunakan satu instalasi dengan dukungan untuk produk digital dan fisik, integrasi dengan beberapa gateway pembayaran dan mata uang, berbagai bahasa, kupon, kredit toko, dan dasbor pelanggan. Anda dapat menjalankan kampanye pemasaran email melaluinya atau membuat spanduk untuk meningkatkan keterlibatan pengguna. Selain itu, SEO dioptimalkan dengan dukungan untuk URL yang ramah, terintegrasi dengan beberapa platform analitik dan mendukung plugin.
Dalam tutorial ini, Anda akan mempelajari cara menginstal Abantecart di server berbasis Debian 11.
Prasyarat
-
Server yang menjalankan Debian 11.
-
Pengguna non-root dengan hak istimewa sudo.
-
Semuanya diperbarui.
$ sudo apt update && sudo apt upgrade
-
Beberapa paket yang dibutuhkan sistem Anda.
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release unzip debian-archive-keyring -y
Beberapa paket ini mungkin sudah diinstal pada sistem Anda.
Langkah 1 - Konfigurasi Firewall
Langkah pertama adalah mengkonfigurasi firewall. Debian hadir dengan ufw (Firewall Tidak Kompleks).
Periksa apakah firewall sedang berjalan.
$ sudo ufw status
Anda akan mendapatkan output berikut.
Status: inactive
Izinkan port SSH agar firewall tidak memutus koneksi saat ini saat mengaktifkannya.
$ sudo ufw allow OpenSSH
Izinkan port HTTP dan HTTPS juga.
$ sudo ufw allow 80/tcp $ sudo ufw allow 443/tcp
Aktifkan Firewall
$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Periksa kembali status firewall.
$ sudo ufw status
Anda akan melihat keluaran serupa.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
Langkah 2 - Instal PHP
Abantecart mendukung PHP 8.0. Untuk menginstalnya, kita akan menggunakan repositori PHP Ondrej. Jalankan perintah berikut untuk menambahkan repositori.
$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
Tambahkan kunci GPG yang terkait dengan repositori.
$ wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
Perbarui repositori Debian.
$ sudo apt update
Instal PHP 8.0 dan ekstensi yang diperlukan.
$ sudo apt install php8.0-cli php8.0-fpm php8.0-mysql php8.0-gd php8.0-common php8.0-curl php8.0-xml php8.0-mbstring
Langkah 3 - Instal MySQL
Untuk menginstal server MySQL, langkah pertama adalah menambahkan kunci GPG untuk paket
Ada bug di Debian di mana Anda perlu menjalankan perintah GPG secara terpisah untuk mengatur .gpg
direktori.
$ sudo gpg
Tekan Ctrl + C untuk keluar dari perintah di atas. Impor kunci GPG dan simpan di /usr/share/keyrings
direktori.
$ sudo gpg --no-default-keyring --keyring /usr/share/keyrings/mysql8.0-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --brecv-keys 3A79BD29
Tambahkan repositori MySQL resmi.
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/mysql8.0-archive-keyring.gpg] http://repo.mysql.com/apt/debian/ `lsb_release -cs` mysql-8.0" \ | sudo tee /etc/apt/sources.list.d/mysql-8.list
Perbarui repositori Debian.
$ sudo apt update
Instal MySQL.
$ sudo apt install mysql-server
Anda akan disambut dengan layar konfigurasi yang meminta Anda untuk mengatur kata sandi root. Pilih kata sandi yang kuat.
Anda akan diminta untuk mengkonfirmasi kata sandi. Selanjutnya, Anda akan disajikan dengan layar yang menjelaskan sistem otentikasi baru. Pilih Oke untuk melanjutkan.
Terakhir, Anda akan diminta untuk memilih metode otentikasi. Pilih Enkripsi Kata Sandi Kuat dan pilih Oke untuk menyelesaikan penyiapan.
Langkah 4 - Instal Nginx
Debian dikirimkan dengan versi Nginx yang lebih lama. Anda perlu mengunduh repositori Nginx resmi untuk menginstal versi terbaru.
Impor kunci penandatanganan Nginx resmi.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Tambahkan repositori untuk versi stabil Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Perbarui repositori Debian.
$ sudo apt update
Instal Nginx.
$ sudo apt install nginx
Verifikasi instalasi. Pastikan Anda menggunakan sudo
setiap kali Anda menjalankan perintah Nginx di Debian. Jika tidak, itu tidak akan berhasil.
$ sudo nginx -v nginx version: nginx/1.20.2
Aktifkan layanan Nginx.
$ sudo systemctl enable nginx
Langkah 5 - Konfigurasi MySQL untuk AbanteCart
Instalasi MySQL aman.
$ sudo mysql_secure_installation
Untuk langkah pertama, Anda akan dimintai kata sandi root Anda. Selanjutnya, Anda akan ditanya apakah Anda ingin menyiapkan Plugin Validasi Kata Sandi, yang dapat Anda gunakan untuk menguji kekuatan kata sandi MySQL Anda. Pilih Y
untuk melanjutkan. Anda akan diminta untuk memilih tingkat validasi kata sandi di langkah berikutnya. Pilih 2
yang merupakan level terkuat dan akan mengharuskan sandi Anda setidaknya terdiri dari delapan karakter dan menyertakan campuran huruf besar, huruf kecil, angka, dan karakter khusus.
Securing the MySQL server deployment. Enter password for user root: VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Pada langkah selanjutnya, Anda akan ditanya apakah akan mengubah kata sandi root atau tidak. Tekan N
untuk melanjutkan.
Using existing password for root. Estimated strength of the password: 100 Change the password for root ? ((Press y|Y for Yes, any other key for No) : N
Tekan Y
lalu ENTER
kunci untuk semua perintah berikut untuk menghapus pengguna anonim dan database pengujian, menonaktifkan login root dan memuat aturan yang baru ditetapkan.
... Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Success. ... Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Success. ... Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. ... Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y Success. All done!
Masukkan shell MySQL. Masukkan kata sandi root Anda untuk melanjutkan.
$ mysql -u root -p
Buat abcart
pengguna. Pastikan sandi memenuhi persyaratan yang ditetapkan sebelumnya.
mysql> CREATE USER 'abcart'@'localhost' IDENTIFIED BY 'Your_password2';
Buat abantecart
basis data.
mysql> CREATE DATABASE abantecart;
Berikan hak istimewa pengguna di abantecart
basis data.
mysql> GRANT ALL PRIVILEGES ON abantecart.* TO 'abcart'@'localhost';
Keluar dari Shell.
mysql> exit
Langkah 6 - Instal AbanteCart
Unduh versi terbaru AbanteCart dari Github.
$ wget https://github.com/abantecart/abantecart-src/archive/master.zip
Ekstrak filenya.
$ unzip master.zip
Buat direktori root web publik untuk Abantecart.
$ sudo mkdir /var/www/html/abantecart -p
Salin abantecart-src-master/public_html
yang telah diekstrak direktori ke direktori webroot. Perhatikan garis miring (/ ) di akhir perintah berikut.
$ sudo cp -r abantecart-src-master/public_html /var/www/html/abantecart/
Setel izin yang tepat ke direktori webroot.
$ sudo chown -R nginx:nginx /var/www/html/abantecart
Untuk saat ini, instalasi dasar selesai. Selanjutnya, kita perlu mengatur SSL dan Nginx sebelum menyelesaikan instalasi.
Langkah 7 - Instal SSL
Untuk menginstal sertifikat SSL menggunakan Let's Encrypt, kita perlu menginstal alat Certbot.
Kami akan menggunakan penginstal paket Snapd untuk itu. Karena sebagian besar server Debian tidak disertakan bersamanya, instal Snap.
$ sudo apt install snapd
Pastikan versi Snapd Anda terbaru.
$ sudo snap install core && sudo snap refresh core
Instal Certbot.
$ sudo snap install --classic certbot
Gunakan perintah berikut untuk memastikan bahwa perintah Certbot dapat dijalankan dengan membuat tautan simbolis ke /usr/bin
direktori.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Verifikasi penginstalan.
$ certbot --version certbot 1.22.0
Buat sertifikat SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d abantecart.example.com
Perintah di atas akan mengunduh sertifikat ke /etc/letsencrypt/live/abantecart.example.com
direktori di server Anda.
Buat grup Diffie-Hellman sertifikat.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Buat direktori webroot tantangan untuk pembaruan otomatis Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Buat Pekerjaan Cron untuk memperbarui SSL. Ini akan berjalan setiap hari untuk memeriksa sertifikat dan memperbarui jika diperlukan. Untuk itu, buat dulu file /etc/cron.daily/certbot-renew
dan buka untuk diedit.
$ sudo nano /etc/cron.daily/certbot-renew
Tempelkan kode berikut.
#!/bin/sh certbot renew --cert-name abantecart.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Ubah izin pada file tugas agar dapat dieksekusi.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Langkah 8 - Konfigurasi Nginx dan PHP
Konfigurasi PHP-FPM
Buka file /etc/php/8.0/fpm/pool.d/www.conf
.
$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf
Kita perlu menyetel pengguna/grup proses PHP Unix ke nginx . Temukan user=www-data
dan group=www-data
baris dalam file dan ubah menjadi nginx
.
... ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = nginx group = nginx ...
Juga, temukan baris listen.owner=www-data
dan listen.group=www-data
dalam file dan ubah menjadi nginx
.
listen.owner = nginx listen.group = nginx
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Langkah selanjutnya adalah menonaktifkan ekstensi opcache PHP.
Buka file /etc/php/8.0/fpm/conf.d/10-opcache.ini
untuk diedit.
$ sudo nano /etc/php/8.0/fpm/conf.d/10-opcache.ini
Tempel baris berikut di akhir.
opcache.enable=0
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Mulai ulang proses PHP-fpm.
$ sudo systemctl restart php8.0-fpm
Konfigurasi Nginx
Buat dan buka file /etc/nginx/conf.d/abantecart.conf
untuk diedit.
$ sudo nano /etc/nginx/conf.d/abantecart.conf
Tempelkan kode berikut di dalamnya.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name abantecart.example.com; access_log /var/log/nginx/abantecart.access.log; error_log /var/log/nginx/abantecart.error.log; # SSL ssl_certificate /etc/letsencrypt/live/abantecart.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/abantecart.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/abantecart.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; root /var/www/html/abantecart; index index.php; location / { try_files $uri $uri/ /index.php?$args; } # Pass PHP Scripts To FastCGI Server location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass unix:/run/php/php8.0-fpm.sock; # Depends On The PHP Version fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; try_files $uri =404; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } # Make sure files with the following extensions do not get loaded by nginx because nginx would # display the source code, and these files can contain PASSWORDS! location ~* \.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ { deny all; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac). location ~ /\. { deny all; access_log off; log_not_found off; } ### Retina images handler. Check cookie and looking for file with @2x at the end of name location ~* ^(.*)\.(jpg|jpeg|png|gif|webp)$ { set $hidpi_uri [email protected]$2; if ($http_cookie !~ 'HTTP_IS_RETINA=1') { break; } try_files $hidpi_uri $uri =404; } location ~* \.(jpg|jpeg|png|gif|css|js|ico|webp)$ { expires max; log_not_found off; } location ~ /(system/logs|resources/download) { deny all; return 403; } location /admin/ { location ~ .*\.(php)?$ { deny all; return 403; } } #rewrite for images for retina-displays location ~ / { if (!-e $request_filename){ rewrite ^/(.*)\?*$ /index.php?_route_=$1 last; } } } # enforce HTTPS server { listen 80; listen [::]:80; server_name abantecart.example.com; return 301 https://$host$request_uri; }
Simpan file dengan menekan Ctrl + X dan memasukkan Y ketika diminta setelah selesai.
Buka file /etc/nginx/nginx.conf
untuk diedit.
$ sudo nano /etc/nginx/nginx.conf
Tambahkan baris berikut sebelum baris include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Verifikasi sintaks file konfigurasi Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Mulai layanan Nginx untuk mengaktifkan konfigurasi baru.
$ sudo systemctl start nginx
Langkah 9 - Selesai Instalasi
Luncurkan https://abantecart.example.com
di browser Anda, dan Anda akan disajikan dengan layar berikut.
Centang kotak untuk menyetujui lisensi dan tekan Lanjutkan untuk melanjutkan. Selanjutnya, penginstal akan memeriksa apakah semua persyaratan terpenuhi atau tidak.
Jika semuanya baik-baik saja, tekan Lanjutkan untuk melanjutkan ke halaman berikutnya.
Anda akan diminta untuk mengisi kredensial database. Di sini Anda dapat membuat akun administrator dan kunci keamanan untuk mengakses panel kontrol. Jika Anda menginginkan data demo, biarkan kotak dicentang jika tidak, biarkan tidak dicentang jika Anda ingin memulai dari awal.
Tekan Lanjutkan untuk melanjutkan ketika selesai. Penginstal kemudian akan melanjutkan dengan menyiapkan semuanya dan, setelah selesai, akan menampilkan layar berikut kepada Anda.
Tandai tautan ke panel kontrol Anda karena Anda akan membutuhkannya. Jalankan perintah berikut untuk menghapus file penginstal karena tidak diperlukan dan menimbulkan risiko keamanan.
$ sudo rm -rf /var/www/html/abantecart/install
Masuk ke panel Kontrol, dan Anda akan diminta untuk menyelesaikan penyiapan toko Anda.
Anda dapat menutup wizard cepat dan mengonfigurasinya dari panel Kontrol yang ditunjukkan di bawah ini atau melanjutkan dengan wizard untuk menyiapkan pengaturan dasar.
Kesimpulan
Ini mengakhiri tutorial kami tentang pengaturan AbanteCart di server berbasis Debian 11. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.