ดังนั้นฉันจึงใช้เซิร์ฟเวอร์ Ubuntu 20.04 โดยมี Nginx อยู่
หลังจากสัปดาห์ที่ยากลำบาก ฉันก็สามารถทำให้มันทำงานได้ตามปกติ รวมถึง php ถึง php-fpm
ปัญหาของฉันคือฉันไม่ต้องการให้มีโฟลเดอร์หลายร้อยโฟลเดอร์ในรูทของเว็บไซต์ (ตั้งค่าที่ /var/www/www.my-domain.com/) ดังนั้นฉันจึงต้องการใส่ส่วนขยายที่เกี่ยวข้องกับ php ทั้งหมดที่ฉันติดตั้ง (เช่น เป็น phpmyadmin และ IceCoder จนถึงตอนนี้) ในโฟลเดอร์อื่น (สมมติว่า /var/php/) และเชื่อมโยงคำขอทั้งหมดของดัชนี php จากโฟลเดอร์รูท (เช่นถ้าฉันพิมพ์ https://my-domain.com/icecoder หรือ https://my-domain.com/phpmyadmin) เพื่อเปลี่ยนเส้นทางฉันไปยังโฟลเดอร์ที่มีไฟล์ index.php อยู่
ปัญหาที่เกิดขึ้นคือ:
- ก่อนอื่นฉันไม่รู้วิธีทำให้ symlink ทำงาน (ฉันรู้คำสั่ง "ln -s target destination") แต่มันไม่ทำงาน
- ประการที่สองฉันไม่รู้วิธีกำหนดค่าไฟล์ default.conf เพื่อให้เกิดขึ้น
ฉันพยายามมุ่ย index.php อย่างง่ายด้วย <?php phpinfo();?>
ภายในโฟลเดอร์ /php ในโฟลเดอร์รูทของฉัน แต่เมื่อฉันเข้าถึงผ่านเบราว์เซอร์ ฉันได้รับข้อผิดพลาด "ไม่มีการตั้งค่าอินพุตไฟล์" หากฉันพยายามเข้าถึงโฟลเดอร์ดังกล่าว (เช่น https://my-domain.com/icecoder) ฉันลงเอยที่เว็บไซต์ของฉัน และสำหรับอันนี้ ที่อยู่โดยตรงของไฟล์ index.php นี้ใช้ได้... ยกเว้นฉันจะได้รับสถานะ "ทำงาน" เป็นชั่วโมงเท่านั้น ข้อความ แต่ไม่มี css เครื่องมือสำหรับนักพัฒนาไม่โหลดด้วยซ้ำ
นี่คือไฟล์กำหนดค่าของฉัน (โดเมนจริงของฉันไม่ระบุตัวตนภายใต้โดเมนของฉัน):
nginx.conf
ผู้ใช้ www-data;
worker_processes อัตโนมัติ
error_log /var/log/nginx/error.log ประกาศ;
pid /var/run/nginx.pid;
เหตุการณ์ {
worker_connections 1024;
}
http {
รวม /etc/nginx/mime.types;
#include /etc/nginx/sites-available/*.conf;
#default_type แอปพลิเคชัน/octet-stream;
#root /var/www;
log_format main '$remote_addr - $remote_user [$time_local] "$request"'
'$สถานะ $body_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log หลัก;
ส่งไฟล์บน;
#tcp_nopush บน;
keepalive_timeout 65;
#gzip บน;
รวม /etc/nginx/conf.d/*.conf;
}
default.conf
เซิร์ฟเวอร์ {
server_name my_domain.com;
#access_log /var/log/nginx/host.access.log หลัก;
รูท /var/www/www.my_domain.com;
ดัชนี index.html index.php;
ที่ตั้ง / {
try_files $uri /index.html index.php =404;
}
# เปลี่ยนเส้นทางหน้าข้อผิดพลาดของเซิร์ฟเวอร์ไปยังหน้าสแตติก /50x.html
#
error_page 500 502 503 504 /50x.html;
ตำแหน่ง = /50x.html {
รูท /var/www/www.my_domain.com;
}
error_page 404 /40x.html;
ตำแหน่ง = /40x.html {
รูท /var/www/www.my_domain.com;
}
# พร็อกซี่สคริปต์ PHP เพื่อ Apache ฟัง 127.0.0.1:80
#
#location ~ \.php$ {
#proxy_pass http://127.0.0.1;
#}
# ส่งสคริปต์ PHP ไปยังเซิร์ฟเวอร์ FastCGI ที่รับฟัง 127.0.0.1:9000
#
ตำแหน่ง ~ [^/]\.php(/|$) {
fastcgi_pass ยูนิกซ์:/var/run/php/php7.4-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param PHP_VALUE open_baseir="/var/www/www.my_domain.com/:/var/www/www.my_domain.com/php/";
รวม fastcgi_params;
}
# พารามิเตอร์ SCRIPT_FILENAME ใช้สำหรับการกำหนด PHP FPM
#ชื่อคริป. หากไม่ได้ตั้งค่าไว้ในไฟล์ fastcgi_params
# เช่น /etc/nginx/fastcgi_params หรือในบริบทพาเรนต์
#โปรดแสดงความคิดเห็นในบรรทัดต่อไปนี้:
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
ที่ตั้ง ~ /\{ # le "~" indique une regex que "/" démarre, ici tout ce qui a un "." autre que php หรือ html
ปฏิเสธทั้งหมด
access_log off;
ปิด log_not_found;
}
ฟัง 443 ssl; # จัดการโดย Certbot
ssl_certificate /etc/letsencrypt/live/my_domain.com/fullchain.pem; # จัดการโดย Certbot
ssl_certificate_key /etc/letsencrypt/live/my_domain.com/privkey.pem; # จัดการโดย Certbot
รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
}
เซิร์ฟเวอร์ {
ฟัง 80;
server_name www.my_domain.com;
ส่งคืน 301 https://$server_name$request_uri; # เปลี่ยนเส้นทางคำขอ HTTP ไปยังเว็บไซต์ https
}
เซิร์ฟเวอร์ {
ฟัง 80;
ฟัง 443 ssl;
server_name my_domain.com;
ส่งคืน 301 http://www.my_domain.com$request_uri;
}
นี่คือ ls -l ของโฟลเดอร์รูท
-rw-r--r-- 1 www-data www-data 507 21 ก.ย. 20:03 40x.html
-rw-r--r-- 1 www-data www-data 507 21 ก.ย. 20:04 50x.html
drwxr-xr-x 6 www-data www-data 4096 26 ส.ค. 23:45 สินทรัพย์
-rw-r--r-- 1 www-data www-data 83243 27 ส.ค. 02:19 favicon.ico
-rw-r--r-- 1 www-data www-data 25942 27 ส.ค. 02:19 favicon.png
drwxr-xr-x 13 www-data www-data 4096 21 ก.ย. 17:34 น. ICE
-rw-r--r-- 1 www-data www-data 63175 21 ก.ย. 15:58 index.html
-rw-r--r-- 1 www-data www-data 19 ก.ย. 63 22:24 น. index.php
drwxr-xr-x 2 www-data www-data 4096 27 ส.ค. 00:31 น. การบำรุงรักษา
drwxr-xr-x 15 www-data www-data 4096 21 ก.ย. 16:08 น. หน้า
lrwxrwxrwx 1 รูทรูท 12 กันยายน 21 21:36 php -> /var/www/php
drwxr-xr-x 6 www-data www-data 4096 8 ก.ย. 16:13 ส่วน
และของโฟลเดอร์ /var/php
drwxr-xr-x 13 www-data www-data 4096 21 ก.ย. 17:34 น. icecoder
-rw-r--r-- 1 www-data www-data 19 ก.ย. 21 21:39 น. index.php
lrwxrwxrwx 1 รูทรูท 12 กันยายน 21 21:48 php -> /var/www/php
drwxr-xr-x 2 www-data www-data 4096 21 ก.ย. 21:37 น. phpmyadmin
โฟลเดอร์ทั้งหมดของฉันอยู่ใน 755 และไฟล์ใน 644 mod
ขอบคุณสำหรับความช่วยเหลือที่คุณสามารถให้ฉัน