Εισαγωγή
Εργασίες προετοιμασίας
Λήψη και εξαγωγή του PrestaShop
Διαμόρφωση του τείχους προστασίας του OpenBSD (pf).
Διαμορφώστε το OpenSMTPD ως αναμετάδοση email
Διαμορφώστε το περιβάλλον PHP και PHP-FPM
Διαμόρφωση MariaDB
Διαμόρφωση του Apache
Εγκαταστήστε το PrestaShop
Μερικές τελικές εργασίες
Εισαγωγή
Αυτό το σεμινάριο παρουσιάζει το OpenBSD ως λύση ηλεκτρονικού εμπορίου χρησιμοποιώντας PrestaShop και Apache.
Απαιτείται το Apache επειδή το PrestaShop έχει πολύπλοκες απαιτήσεις επανεγγραφής URL που δεν υποστηρίζονται από τον ενσωματωμένο διακομιστή web του OpenBSD, httpd. Αυτό το σεμινάριο χρησιμοποιεί πιστοποιητικά αυτουπογεγραμμένα. Χρησιμοποιήστε ένα επαληθευμένο πιστοποιητικό για την παραγωγή.
Εργασίες προετοιμασίας
Δημιουργήστε προσωρινά έναν κανονικό χρήστη που επιτρέπεται να χρησιμοποιείται doas
χωρίς κωδικό πρόσβασης. Αυτή η πρόσβαση θα καταργηθεί μετά τη ρύθμιση.
user add -c "Example User" -m -G wheel -L staff auser
passwd auser
echo 'permit nopass keepenv :wheel' > /etc/doas.conf
Προσθέστε το αποθετήριο πακέτων OpenBSD.
echo 'https://cdn.openbsd.org/pub/OpenBSD' > /etc/installurl
Προωθήστε καθημερινά email κατάστασης και ασφάλειας στη διεύθυνσή σας.
echo '[email protected]' > /root/.forward
Ορίστε το όνομα κεντρικού υπολογιστή του διακομιστή.
echo 'www.example.com' > /etc/myname
hostname www.example.com
Προσθέστε το FQDN και τη διεύθυνση IP του διακομιστή σας στο /etc/hosts
.
Αντικαταστήστε 192.0.2.1
με τη διεύθυνση IP του Vultr.
127.0.0.1 localhost
::1 localhost
192.0.2.1 www.example.com
Προσθέστε τα απαιτούμενα πακέτα για PrestaShop και Apache. Επιλέξτε τις πιο πρόσφατες εκδόσεις όταν σας ζητηθεί.
doas su
pkg_add apache-httpd php php-curl php-gd php-intl php-pdo_mysql php-zip mariadb-client mariadb-server wget unzip
Δημιούργησε ένα αυτο-υπογεγραμμένο πιστοποιητικό SSL για δοκιμή. Ορίστε το Common Name στο FQDN του διακομιστή σας, π.χ. 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
Λήψη και εξαγωγή του PrestaShop
Εντοπίστε τη διεύθυνση URL για την πιο πρόσφατη έκδοση του PrestaShop , πραγματοποιήστε λήψη /tmp
και εξαγωγή σε /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
Διαμορφώστε το τείχος προστασίας ώστε να αποκλείει όλη την εισερχόμενη κυκλοφορία εκτός από τα ssh , www και https .
Δημιουργήστε ένα αντίγραφο ασφαλείας του /etc/pf.conf
.
cp /etc/pf.conf /etc/pf.conf.bak
Επεξεργαστείτε /etc/pf.conf
όπως φαίνεται.
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
Δοκιμάστε και ενεργοποιήστε τους κανόνες του τείχους προστασίας.
doas pfctl -nf /etc/pf.conf
doas pfctl -f /etc/pf.conf
Δημιουργήστε αντίγραφα ασφαλείας του /etc/mail/smtpd.conf
αρχείου σας .
cp /etc/mail/smtpd.conf /etc/mail/smtpd.conf.bak
Επεξεργαστείτε /etc/mail/smtpd.conf
όπως φαίνεται παρακάτω.
Σημειώσεις: * Ο ορισμός του πίνακα για μυστικά περιέχει το όνομα χρήστη και τον κωδικό πρόσβασης για τον αναμεταδότη αλληλογραφίας. * Η εξερχόμενη ενέργεια αναζητά το όνομα χρήστη και τον κωδικό πρόσβασης κάτω από την ετικέτα prestashop
στο /etc/mail/secrets
και ρελέ το e-mail μέσω του διακομιστή e-mail σας.
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"
Δημιουργώ /etc/mail/secrets
Αντικαταστήστε τη διεύθυνση email και τον κωδικό πρόσβασης με τα διαπιστευτήρια που χρησιμοποιείτε για τον διακομιστή email σας.
echo "prestashop [email protected]:password" > /etc/mail/secrets
Ορίστε δικαιώματα για ασφάλεια /etc/mail/secrets
chmod 0600 /etc/secrets
Εξετάστε το αρχείο διαμόρφωσης για σφάλματα και επανεκκινήστε τον δαίμονα smtpd.
smtpd -n
rcctl restart smtpd
Διαμορφώστε τη διαδικασία PHP-FPM για ακρόαση σε μια υποδοχή TCP αντί για μια υποδοχή τομέα UNIX.
Κάντε την παρακάτω αλλαγή για το /etc/php-fpm.conf
αρχείο.
...
; 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
Κάντε μερικές πρόσθετες αλλαγές στο περιβάλλον PHP στο /etc/php-7.3.ini
. Αυτό το όνομα αρχείου μπορεί να αλλάξει ελαφρώς εάν η έκδοση είναι νεότερη από 7.3. Αυτές οι αλλαγές:
- Επιτρέψτε τη μεταφόρτωση μεγαλύτερων αρχείων.
- Απενεργοποιήστε το περιβάλλον chroot.
Διαμορφώστε την PHP για αποστολή email μέσω 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
Ενεργοποιήστε τα πρόσθετα PHP.
cp /etc/php-7.3.sample/* /etc/php-7.3/.
Ενεργοποιήστε και ξεκινήστε τον δαίμονα PHP-FPM. Το όνομα του δαίμονα μπορεί να είναι ελαφρώς διαφορετικό εάν η έκδοση είναι νεότερη.
rcctl enable php73_fpm
rcctl start php73_fpm
Διαμόρφωση MariaDB
Το MariaDB παρέχει το backend της βάσης δεδομένων για το PrestaShop. Επειδή το MariaDB χρειάζεται περισσότερα ανοιχτά αρχεία από όσα επιτρέπει η προεπιλεγμένη κλάση, δημιουργήστε μια ειδική κλάση στο /etc/login.conf
.
Στο κάτω μέρος του αρχείου, προσθέστε τις ακόλουθες γραμμές:
mysqld:\
:openfiles-cur=1024:\
:openfiles-max=2048:\
:tc=daemon:
Εγκαταστήστε το MariaDB.
doas su
mysql_install_db
rcctl enable mysqld
rcctl start mysqld
Διαμορφώστε την ασφάλεια MariaDB.
mysql_secure_installation
Δημιουργήστε τη βάση δεδομένων PrestaShop. Χρησιμοποιήστε έναν ισχυρό κωδικό πρόσβασης.
mysql -u root
CREATE DATABASE prestashop;
GRANT ALL PRIVILEGES ON prestashop.* TO 'prestashop'@'localhost' IDENTIFIED BY 'password123';
FLUSH PRIVILEGES;
EXIT
Διαμόρφωση του Apache
Αντιγράφων ασφαλείας /etc/apache2/httpd2.conf
cp /etc/apache2/httpd2.conf /etc/apache2/httpd2.conf.bak
Πραγματοποιήστε τις ακόλουθες αλλαγές στο /etc/apache2/httpd2.conf
, χρησιμοποιώντας #
την ενεργοποίηση και απενεργοποίηση λειτουργικών μονάδων.
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
Πολλές ακόμη αλλαγές /etc/apache2/httpd2.conf
συμβαίνουν προς το κάτω μέρος του αρχείου. Αφαιρέστε #
από τις δηλώσεις συμπερίληψης που υποδεικνύονται.
Προσθέστε τελευταία τις γραμμές Virtual Hosting.
# Server-pool management (MPM specific)
Include /etc/apache2/extra/httpd-mpm.conf
...
# Virtual Hosts
IncludeOptional /etc/apache2/sites/*.conf
Δημιουργήστε τον /etc/apache2/sites
κατάλογο.
mkdir /etc/apache2/sites
Δημιουργήστε /etc/apache2/sites/example.conf
με τις ακόλουθες πληροφορίες:
<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>
Διαμορφώστε τη μονάδα διακομιστή μεσολάβησης του Apache προσθέτοντας τα ακόλουθα στο /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>
Δοκιμάστε τη διαμόρφωση, ενεργοποιήστε και ξεκινήστε το Apache.
apachectl configtest
rcctl enable apache2
rcctl start apache2
Βεβαιωθείτε ότι ο Apache ακούει στις θύρες 80 και 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
Εγκαταστήστε το PrestaShop
Περιηγηθείτε στον ιστότοπό σας στη διεύθυνση http://www.example.com
. Ο οδηγός εγκατάστασης του PrestaShop θα ξεκινήσει.
Μόλις ολοκληρώσετε την εγκατάσταση, λάβετε υπόψη σας την πρόσοψη του καταστήματος και τους συνδέσμους διαχειριστή και διαγράψτε τον κατάλογο /var/www/htdocs/prestashop/install
.
Ενεργοποίηση SSL.
- Κάντε κλικ στην επιλογή Παράμετροι καταστήματος
- Κάντε κλικ στο Γενικό
- Ενεργοποιήστε το SSL για όλα τα μέρη του καταστήματός σας
Αλλάξτε τον κωδικό πρόσβασης διαχειριστή.
- Κάντε κλικ στην επιλογή Σύνθετες παράμετροι
- Κάντε κλικ στο Team
- Αλλάξτε τον κωδικό σας.
Μερικές τελικές εργασίες
Δημιουργήστε αντίγραφα ασφαλείας του καταστήματός σας και της βάσης δεδομένων του:
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*
Καταργήστε την πρόσβαση doas για τον λογαριασμό χρήστη σας, δημιουργώντας εκ νέου το doas.conf
αρχείο.
echo 'permit keepenv :wheel' > /etc/doas.conf