OpenBSD sebagai Penyelesaian E-Dagang Dengan PrestaShop dan Apache

Pengenalan

Tutorial ini menunjukkan OpenBSD sebagai penyelesaian e-dagang menggunakan PrestaShop dan Apache.

Apache diperlukan kerana PrestaShop mempunyai keperluan penulisan ulang URL yang kompleks yang tidak disokong oleh pelayan web terbina dalam OpenBSD, httpd. Tutorial ini menggunakan sijil ditandatangani sendiri. Sila gunakan sijil yang sah untuk pengeluaran.

Tugas Penyediaan

Buat sementara pengguna yang dibenarkan untuk menggunakan doastanpa kata laluan. Akses ini akan dikeluarkan selepas persediaan.

user add -c "Example User" -m -G wheel -L staff auser
passwd auser
echo 'permit nopass keepenv :wheel' > /etc/doas.conf

Tambah gedung pakej OpenBSD.

echo 'https://cdn.openbsd.org/pub/OpenBSD' > /etc/installurl

Majukan e-mel status dan keselamatan harian ke alamat anda.

echo '[email protected]' > /root/.forward

Tetapkan nama hos pelayan.

echo 'www.example.com' > /etc/myname
hostname www.example.com

Tambah alamat FQDN dan alamat IP anda ke /etc/hosts.
Gantikan 192.0.2.1dengan alamat IP Vultr anda.

127.0.0.1    localhost
::1          localhost
192.0.2.1    www.example.com

Tambah pakej yang diperlukan untuk PrestaShop dan Apache. Pilih versi terkini apabila digesa.

doas su
pkg_add apache-httpd php php-curl php-gd php-intl php-pdo_mysql php-zip mariadb-client mariadb-server wget unzip

Mencipta sijil SSL yang ditandatangani sendiri untuk ujian. Tetapkan Nama Biasa ke FQDN pelayan anda, misalnya www.example.com.

openssl req -x509 -new -nodes -newkey rsa:4096 -keyout /etc/ssl/private/example.com.key -out /etc/ssl/example.com.crt -days 3650 -sha256
chmod 0600 /etc/ssl/private/example.com.key

Muat turun dan Ekstrak PrestaShop

Cari URL untuk versi terbaru PrestaShop , muat turun /tmpdan ekstrak ke /var/www/htdocs/prestashop.

cd /tmp
wget <https://download.prestashop.com/download/releases/prestashop_1.7.6.4.zip>
unzip prestashop_1.7.6.4.zip -d /var/www/htdocs/prestashop
chown -R www:www /var/www/htdocs/prestashop

Konfigurasikan Firewall OpenBSD (pf)

Konfigurasikan firewall untuk menyekat semua lalu lintas masuk kecuali ssh , www dan https .

Buat salinan sandaran /etc/pf.conf.

cp /etc/pf.conf /etc/pf.conf.bak

Edit /etc/pf.confseperti yang ditunjukkan.

set skip on lo

block in
pass out  

pass in on egress inet proto tcp to port {ssh, www, https} \
    flags S/SA keep state

Uji dan aktifkan peraturan firewall.

doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf

Konfigurasi OpenSMTPD sebagai Relay E-mel

Sandarkan /etc/mail/smtpd.conffail anda .

cp /etc/mail/smtpd.conf /etc/mail/smtpd.conf.bak

Edit /etc/mail/smtpd.confseperti gambar di bawah.

Catatan: * Definisi jadual untuk rahsia menyimpan nama pengguna dan kata laluan untuk penyampai surat. * Tindakan keluar mencari nama pengguna dan kata laluan di bawah label prestashopmasuk /etc/mail/secretsdan menyampaikan e-mel melalui pelayan e-mel anda.

    table aliases file:/etc/mail/aliases
    table secrets file:/etc/mail/secrets

    listen on lo0

    action "local_mail" mbox alias <aliases>
    action "outbound" relay host smtp+tls://[email protected]:587 \
        tls no-verify auth <secrets>

    match from local for local action "local_mail"
    match from local for any action "outbound"

Buat /etc/mail/secrets

Ganti alamat e-mel dan kata laluan dengan bukti kelayakan yang anda gunakan untuk pelayan e-mel anda.

echo "prestashop [email protected]:password" > /etc/mail/secrets

Tetapkan kebenaran untuk dilindungi /etc/mail/secrets

chmod 0600 /etc/secrets

Lihat fail konfigurasi untuk kesilapan dan mulakan semula daemon smtpd.

smtpd -n
rcctl restart smtpd

Konfigurasikan PHP dan PHP-FPM Environment

Konfigurasi proses PHP-FPM untuk mendengar soket TCP dan bukannya soket domain UNIX.

Buat perubahan berikut di bawah untuk /etc/php-fpm.conffail.

...
; If using a TCP port, never expose this to a public network.
;listen = /var/www/run/php-fpm.sock
listen = 127.0.0.1:9000

Buat beberapa perubahan tambahan pada persekitaran PHP di /etc/php-7.3.ini. Nama fail ini mungkin berubah sedikit jika versi lebih baru daripada 7.3. Perubahan ini:

  • Benarkan fail yang lebih besar untuk dimuat naik.
  • Lumpuhkan persekitaran chroot.
  • Konfigurasi PHP untuk menghantar e-mel melalui sendmail.

    ; Default Value: not set
    ;chroot = /var/www
    ...
    ; Maximum allowed size for uploaded files.
    ; <http://php.net/upload-max-filesize>
    upload_max_filesize = 6M
    ...
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; <http://php.net/sendmail-path>
    ;sendmail_path =
    sendmail_path = /usr/sbin/sendmail -t -i
    ...
    ; Whether to allow the treatment of URLs (like <http://> or <ftp://)> as files.
    ; <http://php.net/allow-url-fopen>
    allow_url_fopen = On
    ...
    ; Maximum size of POST data that PHP will accept.
    ; Its value may be 0 to disable the limit. It is ignored if POST data reading
    ; is disabled through enable_post_data_reading.
    ; <http://php.net/post-max-size>
    post_max_size = 12M
    

    Dayakan pemalam PHP.

    cp /etc/php-7.3.sample/* /etc/php-7.3/.

Aktifkan dan mulakan daemon PHP-FPM. Nama daemon mungkin sedikit berbeza jika versi lebih baru.

rcctl enable php73_fpm
rcctl start php73_fpm

Mengkonfigurasi MariaDB

MariaDB menyediakan backend pangkalan data untuk PrestaShop. Kerana MariaDB memerlukan lebih banyak fail terbuka daripada kelas default yang membolehkan, buat kelas khusus dalam /etc/login.conf.

Di bahagian bawah fail, tambahkan baris berikut:

mysqld:\
      :openfiles-cur=1024:\
      :openfiles-max=2048:\
      :tc=daemon:

Pasang MariaDB.

 doas su
 mysql_install_db
 rcctl enable mysqld
 rcctl start mysqld

Konfigurasikan keselamatan MariaDB.

 mysql_secure_installation

Buat pangkalan data PrestaShop. Gunakan kata laluan yang kuat.

mysql -u root
CREATE DATABASE prestashop;
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'password123';
FLUSH PRIVILEGES;
EXIT

Mengkonfigurasi Apache

Sandarkan /etc/apache2/httpd2.conf

cp /etc/apache2/httpd2.conf /etc/apache2/httpd2.conf.bak

Buat perubahan berikut /etc/apache2/httpd2.conf, menggunakan #untuk mendayakan dan menyahdayakan modul.

Listen 443
...
LoadModule mpm_event_module /usr/local/lib/apache2/mod_mpm_event.so
#LoadModule mpm_prefork_module /usr/local/lib/apache2/mod_mpm_prefork.so
LoadModule proxy_module /usr/local/lib/apache2/mod_proxy.so
LoadModule proxy_fcgi_module /usr/local/lib/apache2/mod_proxy_fcgi.so
LoadModule ssl_module /usr/local/lib/apache2/mod_ssl.so
LoadModule rewrite_module /usr/local/lib/apache2/mod_rewrite.so
...
ServerAdmin [email protected]
ServerName 192.0.2.1:80
  • Beberapa lagi perubahan /etc/apache2/httpd2.confberlaku ke bahagian bawah fail. Keluarkan #daripada merangkumi kenyataan yang ditunjukkan.

  • Tambah talian Hosting Maya yang terakhir.

    # Server-pool management (MPM specific)
    Include /etc/apache2/extra/httpd-mpm.conf
    ...
    # Virtual Hosts
    IncludeOptional /etc/apache2/sites/*.conf
    

Buat /etc/apache2/sitesdirektori.

mkdir /etc/apache2/sites

Buat /etc/apache2/sites/example.confdengan maklumat berikut:

<VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com
  ServerAdmin [email protected]
  DocumentRoot "/var/www/htdocs/prestashop"

  <Directory "/var/www/htdocs/prestashop">
    Options -Indexes +Multiviews +FollowSymLinks
    AllowOverride All
    <Limit GET POST OPTIONS>
    </Limit>
    Require all granted
  </Directory>

</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
  ServerAlias www.example.com
  ServerAdmin [email protected]
  DocumentRoot "/var/www/htdocs/prestashop"

  <Directory "/var/www/htdocs/prestashop">
    Options -Indexes +Multiviews +FollowSymLinks
    AllowOverride All
    <Limit GET POST OPTIONS>
    </Limit>
    Require all granted
  </Directory>

  SSLEngine On
  SSLCertificateFile "/etc/ssl/example.com.crt"
  SSLCertificateKeyFile "/etc/ssl/private/example.com.key"
  SSLCipherSuite HIGH:!aNULL

</VirtualHost>

Mengkonfigurasi modul proksi Apache dengan menambah perkara berikut kepada /etc/apache2/sites/example.conf

<IfModule proxy_module>
  <IfModule dir_module>
    DirectoryIndex index.php
  </IfModule>
  <FilesMatch "\.php$">
    SetHandler "proxy:fcgi://127.0.0.1:9000"
  </FilesMatch>
</IfModule>

Uji konfigurasi, kemudian aktifkan dan mulakan Apache.

apachectl configtest
rcctl enable apache2
rcctl start apache2

Pastikan Apache sedang mendengar di port 80 dan 443.

netstat -ln -finet

Active Internet connections (only servers)
Proto   Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp          0      0  *.443                  *.*                    LISTEN
tcp          0      0  127.0.0.1.25           *.*                    LISTEN
tcp          0      0  *.22                   *.*                    LISTEN
tcp          0      0  *.80                   *.*                    LISTEN
tcp          0      0  127.0.0.1.3306         *.*                    LISTEN
tcp          0      0  127.0.0.1.9000         *.*                    LISTEN

Pasang PrestaShop

Layari ke laman web anda di http://www.example.com. Wizard pemasangan PrestaShop akan dilancarkan.

Sebaik sahaja anda melengkapkan pemasangan, perhatikan pautan depan dan pentadbiran dan hapuskan direktori /var/www/htdocs/prestashop/install.

Dayakan SSL.

  • Klik Parameter Kedai
  • Klik Umum
  • Dayakan SSL untuk semua bahagian kedai anda

Tukar kata laluan pentadbiran anda.

  • Klik Parameter Lanjutan
  • Klik Pasukan
  • Tukar kata laluan anda.

Beberapa Tugas Akhir

Sandarkan kedai dan pangkalan datanya:

cd /var/www/htdocs
doas tar cvfz /home/auser/prestashop.tar.gz prestashop/
doas mysqldump -u prestashop -p prestashop | gzip -4 > /home/auser/prestashop.sql.tar.gz
doas chown auser:auser /home/auser/prestashop*

Alih keluar akses untuk akaun pengguna anda dengan membuat semula doas.conffail.

echo 'permit keepenv :wheel' > /etc/doas.conf


Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut