ข้อกำหนดเบื้องต้น ติดตั้งสำเร็จแล้ว
ฉันติดตั้ง Elastic Stack บน Ubuntu 20.04 LTS ฉันทำตามขั้นตอนทั้งหมด ในลิงค์นี้ (ถึง #2 ติดตั้งและกำหนดค่า Kibana บน Ubuntu ที่ฉันไม่ต้องการ) ไม่มีปัญหาแต่อย่างใด
หลังจากการติดตั้งเสร็จสิ้น ฉันไปที่: example.com/magento และฉันได้รับ 403 Forbidden ฉันเข้าใจว่านี่เป็นปัญหาเกี่ยวกับการอนุญาต แต่ก่อนฉันจะติดตั้ง Magento ฉันทำตามคำแนะนำนี้และตั้งค่า สิทธิ์ อย่างถูกต้องตามที่ไฮไลท์ไว้ด้านล่าง:
cd /var/www/html/<ไดเร็กทอรีการติดตั้ง magento>
ค้นหา var ที่สร้างจากผู้ขาย pub/static pub/media app/etc -type f -exec chmod g+w {} +
ค้นหา var ที่สร้างจากผู้ขาย pub/static pub/media app/etc -type d -exec chmod g+ws {} +
chown -R :www-ข้อมูล #อูบุนตู
chmod u+x bin/magento
เมื่อฉันติดตั้ง Magento 2 เป็นครั้งแรก ฉันสามารถดูได้ในโดเมนหลักที่ไม่มี https และในไดเร็กทอรี example/Magento ฉันคิดว่าปัญหาอยู่ในไฟล์การกำหนดค่า Nginx ของฉัน และโดยเฉพาะอย่างยิ่งใน SSL/พอร์ต ซึ่งมีดังนี้:
## กำหนดค่า nginx สำหรับ Magento 2
ต้นน้ำ fastcgi_backend {
เซิร์ฟเวอร์ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
}
เซิร์ฟเวอร์ {
รูท /var/www/example.com/html/directory;
# เพิ่ม index.php ในรายการหากคุณใช้ PHP
ดัชนี index.php index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
ที่ตั้ง / {
# ความพยายามครั้งแรกในการให้บริการคำขอเป็นไฟล์ จากนั้น
# เป็นไดเร็กทอรี จากนั้นถอยกลับไปแสดง 404
try_files $uri $uri/ /index.php?$args;
}
# ส่งสคริปต์ PHP ไปยังเซิร์ฟเวอร์ FastCGI
ตำแหน่ง ~ \.php$ {
รวมตัวอย่าง/fastcgi-php.conf;
fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
}
# ปฏิเสธการเข้าถึงไฟล์ .htaccess ถ้ารูทเอกสารของ Apache
# เห็นด้วยกับของ nginx
#
ตำแหน่ง ~ /\.ht {
ปฏิเสธทั้งหมด
}
ฟัง [::]:443 ssl ipv6only=เปิด; # จัดการโดย Certbot
ฟัง 443 ssl; # จัดการโดย Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # จัดการโดย Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # จัดการโดย Certbot
รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
} #ปิดแท็กเซิร์ฟเวอร์
## บล็อกใหม่สำหรับวีโอไอพี
เซิร์ฟเวอร์ {
ฟัง 8080;
server_name example.com www.example.com;
ตั้ง $MAGE_ROOT /var/www/example.com/html/directory/magento;
# ตั้งค่าเริ่มต้น $MAGE_MODE;
ตั้งค่าการผลิต $MAGE_MODE;
รวม /var/www/example.com/html/directory/magento/nginx.conf.sample;
}
#ตั้งค่าตัวแทน
# ที่มา: https://devdocs.magento.com/guides/v2.4/install-gde/prereq/es-config-nginx.html
รวม /etc/nginx/conf.d/*.conf;
เซิร์ฟเวอร์ {
ถ้า ($host = www.example.com) {
ส่งคืน 301 https://$host$request_uri;
} # จัดการโดย Certbot
ถ้า ($host = example.com) {
ส่งคืน 301 https://$host$request_uri;
} # จัดการโดย Certbot
ฟัง 80 ;
ฟัง [::]:80 ;
server_name example.com www.example.com;
กลับ 404; # จัดการโดย Certbot
}
รวม /etc/nginx/conf.d/*.conf;
เชื่อมโยงกับไฟล์ใหม่ /etc/nginx/conf.d/magento_es_auth.conf
โดยมีเนื้อหาดังนี้
เซิร์ฟเวอร์ {
ฟัง 8080;
ตำแหน่ง /_คลัสเตอร์/สุขภาพ {
proxy_pass http://localhost:9200/_cluster/health;
}
}
sudo nginx -t
ผลตอบแทน:
nginx: [warn] ชื่อเซิร์ฟเวอร์ที่ขัดแย้งกัน "" ใน 0.0.0.0:8080 ละเว้น
nginx: ไฟล์การกำหนดค่า /etc/nginx/nginx.conf ไวยากรณ์ใช้ได้
nginx: การทดสอบไฟล์การกำหนดค่า /etc/nginx/nginx.conf สำเร็จ
การต่ออายุใบรับรอง SSL sudo certbot ต่ออายุ --dry-run
ผ่านไป!
nginx.conf.sample