GNU/Linux >> Belajar Linux >  >> Debian

Cara Menginstal AbanteCart dengan Nginx dan SSL di Debian 11

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.


Debian
  1. Cara Menginstal Nginx di Debian 8 (Jessie)

  2. Cara Menginstal Nginx di Debian 9 (Peregangan)

  3. Cara Menginstal WonderCMS dengan Nginx di Debian 11

  1. Cara Menginstal Nginx di Debian 9

  2. Cara Menginstal dan Mengkonfigurasi Drupal dengan Apache di Debian 9

  3. Instal Lets Encrypt dan Secure Nginx dengan SSL/TLS di Debian 9

  1. Cara Menginstal InvoicePlane dengan Nginx di Debian 9

  2. Cara Menginstal Drupal 9 dengan Nginx dan Mengenkripsi SSL di Debian 10

  3. Cara Memasang Forum Wacana dengan Nginx dan Lets Encrypt SSL Gratis di Debian 11