บทนำ
บทแนะนำนี้แสดงให้เห็นถึง OpenBSD เป็นโซลูชั่นอีคอมเมิร์ซโดยใช้ PrestaShop และ Apache
ต้องการ Apache เนื่องจาก PrestaShop มีข้อกำหนดการเขียน URL ที่ซับซ้อนซึ่งไม่ได้รับการสนับสนุนจากเว็บเซิร์ฟเวอร์ในตัวของ http: //d OpenBSD บทช่วยสอนนี้ใช้ใบรับรองที่ลงนามเอง กรุณาใช้ใบรับรองการตรวจสอบสำหรับการผลิต
เตรียมงาน
สร้างผู้ใช้ปกติที่ได้รับอนุญาตให้ใช้ชั่วคราว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
ส่งต่อสถานะรายวันและอีเมลความปลอดภัยไปยังที่อยู่ของคุณ
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 ที่ลงชื่อด้วยตนเองเพื่อทำการทดสอบ ตั้งชื่อสามัญเป็น 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
และถ่ายทอดอีเมลผ่านเซิร์ฟเวอร์อีเมลของคุณ
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
แทนที่ที่อยู่อีเมลและรหัสผ่านด้วยข้อมูลรับรองที่คุณใช้สำหรับเซิร์ฟเวอร์อีเมลของคุณ
echo "prestashop [email protected]:password" > /etc/mail/secrets
ตั้งค่าการอนุญาตให้ปลอดภัย /etc/mail/secrets
chmod 0600 /etc/secrets
ทดสอบไฟล์กำหนดค่าเพื่อหาข้อผิดพลาดและรีสตาร์ท smtpd daemon
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
/etc/php-7.3.ini
ทำการเปลี่ยนแปลงบางอย่างเพิ่มเติมกับสภาพแวดล้อมใน PHP ชื่อไฟล์นี้อาจเปลี่ยนแปลงเล็กน้อยหากเวอร์ชั่นใหม่กว่า 7.3 การเปลี่ยนแปลงเหล่านี้:
- อนุญาตให้อัปโหลดไฟล์ขนาดใหญ่
- ปิดใช้งานสภาพแวดล้อมที่ chrooted
-
กำหนดค่า PHP เพื่อส่งอีเมลผ่าน 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/
เปิดใช้งานและเริ่ม daemon PHP-FPM ชื่อ daemon อาจแตกต่างกันเล็กน้อยหากเป็นรุ่นที่ใหม่กว่า
rcctl enable php73_fpm
rcctl start php73_fpm
การกำหนดค่า MariaDB
MariaDB จัดเตรียมแบ็กเอนด์ฐานข้อมูลสำหรับ 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
เกิดขึ้นที่ด้านล่างของไฟล์ ลบออก#
จากคำสั่ง include ที่ระบุ
-
เพิ่มบรรทัดการโฮสต์เสมือนล่าสุด
# 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 สำหรับทุกส่วนของร้านค้าของคุณ
เปลี่ยนรหัสผ่านการบริหารของคุณ
- คลิกพารามิเตอร์ขั้นสูง
- คลิกทีม
- เปลี่ยนรหัสผ่านของคุณ.
งานสุดท้ายบางอย่าง
สำรองข้อมูลร้านค้าและฐานข้อมูลของคุณ:
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