tôi đã tạo ra một ấu trùng 8
ứng dụng và cài đặt apache2
.
tập tin cấu hình của tôi trông giống như sau:
000-default.conf
<Máy chủ ảo *:80>
# Lệnh ServerName đặt lược đồ yêu cầu, tên máy chủ và cổng
# máy chủ sử dụng để nhận dạng chính nó. Điều này được sử dụng khi tạo
# URL chuyển hướng. Trong bối cảnh máy chủ ảo, ServerName
# chỉ định tên máy chủ nào phải xuất hiện trong tiêu đề Host: của yêu cầu tới
# phù hợp với máy chủ ảo này. Đối với máy chủ ảo mặc định (tệp này)
# giá trị không mang tính quyết định vì nó được sử dụng làm máy chủ lưu trữ cuối cùng bất kể.
# Tuy nhiên, bạn phải đặt nó cho bất kỳ máy chủ ảo nào khác một cách rõ ràng.
#ServerName www.example.com
Quản trị viên web ServerAdmin@localhost
DocumentRoot /home/admin/Desktop/Code/
# Các mức nhật ký có sẵn: theo dõi8, ..., theo dõi1, gỡ lỗi, thông tin, thông báo, cảnh báo,
# lỗi, chí mạng, cảnh báo, nổi lên.
# Cũng có thể cấu hình loglevel cho cụ thể
# mô-đun, ví dụ:
#LogLevel thông tin ssl:cảnh báo
Nhật ký lỗi ${APACHE_LOG_DIR}/error.log
Nhật ký tùy chỉnh ${APACHE_LOG_DIR}/access.log kết hợp
# Đối với hầu hết các tệp cấu hình từ conf-available/, đó là
# được bật hoặc tắt ở cấp độ toàn cầu, có thể
# bao gồm một dòng cho chỉ một máy chủ ảo cụ thể. ví dụ như
# dòng sau chỉ bật cấu hình CGI cho máy chủ này
# sau khi nó đã bị vô hiệu hóa trên toàn cầu với "a2disconf".
#Bao gồm conf-có sẵn/phục vụ-cgi-bin.conf
<Thư mục /home/admin/Desktop/Code/laravel_project/public/>
AllowOverride All
cho phép từ tất cả
Tùy chọn + Chỉ mục
</Thư mục>
</Máy chủ ảo>
# vim: cú pháp=apache ts=4 sw=4 sts=4 sr noet
apache2.conf
# Đây là tệp cấu hình máy chủ Apache chính. Nó chứa
# chỉ thị cấu hình cung cấp cho máy chủ hướng dẫn của nó.
# Xem http://httpd.apache.org/docs/2.4/ để biết thông tin chi tiết về
# chỉ thị và /usr/share/doc/apache2/README.Debian về Debian cụ thể
# gợi ý.
#
#
# Tóm tắt cách hoạt động của cấu hình Apache 2 trong Debian:
# Cấu hình máy chủ web Apache 2 trong Debian khá khác so với
# cách được đề xuất của thượng nguồn để định cấu hình máy chủ web. Điều này là do Debian
# cài đặt Apache2 mặc định cố gắng thêm và xóa các mô-đun,
# máy chủ ảo và các chỉ thị cấu hình bổ sung linh hoạt nhất có thể, trong
# để thực hiện tự động hóa các thay đổi và quản trị máy chủ dễ dàng như
# khả thi.
# Nó được chia thành nhiều tệp tạo thành hệ thống phân cấp cấu hình được phác thảo
# bên dưới, tất cả nằm trong thư mục /etc/apache2/:
#
# /etc/apache2/
# |-- apache2.conf
# | `-- cổng.conf
# |-- kích hoạt mod
# | |-- *.load
# | `-- *.conf
# |-- kích hoạt conf
# | `-- *.conf
# `--kích hoạt trang web
# `-- *.conf
#
#
# * apache2.conf là tệp cấu hình chính (tệp này). Nó đặt các mảnh
# cùng nhau bằng cách bao gồm tất cả các tệp cấu hình còn lại khi khởi động
# máy chủ web.
#
# * port.conf luôn được bao gồm trong tệp cấu hình chính. Nó là
# được cho là xác định các cổng lắng nghe cho các kết nối đến có thể được
# tùy chỉnh bất cứ lúc nào.
#
# * Tệp cấu hình trong mods-enabled/, conf-enabled/ và pages-enabled/
# thư mục chứa các đoạn cấu hình cụ thể quản lý các mô-đun,
# phân đoạn cấu hình chung hoặc cấu hình máy chủ ảo,
# tương ứng.
#
# Chúng được kích hoạt bằng cách liên kết tượng trưng các tệp cấu hình có sẵn từ
# tương ứng *-có sẵn/ đối tác. Chúng nên được quản lý bằng cách sử dụng
# người trợ giúp a2enmod/a2dismod, a2ensite/a2dissite và a2enconf/a2disconf. Nhìn thấy
# trang người đàn ông tương ứng của họ để biết thông tin chi tiết.
#
# * Nhị phân được gọi là apache2. Do việc sử dụng các biến môi trường, trong
# cấu hình mặc định, apache2 cần được bắt đầu/dừng với
# /etc/init.d/apache2 hoặc apache2ctl. Gọi trực tiếp /usr/bin/apache2 sẽ không
# làm việc với cấu hình mặc định.
# Cấu hình Toàn cầu
#
#
# ServerRoot: Phần trên cùng của cây thư mục chứa máy chủ
# tệp cấu hình, lỗi và nhật ký được lưu giữ.
#
# GHI CHÚ! Nếu bạn định đặt cái này trên NFS (hoặc mạng khác)
# mount filesystem thì vui lòng đọc tài liệu Mutex (có sẵn
# tại <URL:http://httpd.apache.org/docs/2.4/mod/core.html#mutex>);
# bạn sẽ tiết kiệm cho mình rất nhiều rắc rối.
#
# KHÔNG thêm dấu gạch chéo ở cuối đường dẫn thư mục.
#
#ServerRoot "/etc/apache2"
#
# Tệp khóa tuần tự hóa chấp nhận PHẢI ĐƯỢC LƯU TRÊN ĐĨA ĐỊA PHƯƠNG.
#
#Tệp Mutex:${APACHE_LOCK_DIR} mặc định
#
# Thư mục chứa shm và các tệp thời gian chạy khác sẽ được lưu trữ.
#
DefaultRuntimeDir ${APACHE_RUN_DIR}
#
# PidFile: Tệp mà máy chủ sẽ ghi lại quá trình của nó
# số nhận dạng khi nó bắt đầu.
# Điều này cần được đặt trong /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}
#
# Timeout: Số giây trước khi hết thời gian nhận và gửi.
#
Thời gian chờ 300
#
# KeepAlive: Có cho phép kết nối liên tục hay không (hơn
# một yêu cầu cho mỗi kết nối). Đặt thành "Tắt" để hủy kích hoạt.
#
KeepAlive On
#
# MaxKeepAliveRequests: Số lượng yêu cầu tối đa cho phép
# trong khi kết nối liên tục. Đặt thành 0 để cho phép số lượng không giới hạn.
# Chúng tôi khuyên bạn nên để con số này ở mức cao để có hiệu suất tối đa.
#
MaxKeepAliveRequests 100
#
# KeepAliveTimeout: Số giây chờ yêu cầu tiếp theo từ
# cùng một khách hàng trên cùng một kết nối.
#
KeepAliveTimeout 5
# Những thứ này cần được đặt trong /etc/apache2/envvars
Người dùng ${APACHE_RUN_USER}
Nhóm ${APACHE_RUN_GROUP}
#
# Tra cứu tên máy chủ: Ghi lại tên của khách hàng hoặc chỉ địa chỉ IP của họ
# ví dụ: www.apache.org (bật) hoặc 204.62.129.132 (tắt).
# Mặc định bị tắt vì mạng sẽ tốt hơn nếu mọi người
# phải cố ý bật tính năng này, vì bật tính năng này có nghĩa là
# mỗi yêu cầu của khách hàng sẽ dẫn đến ÍT NHẤT một yêu cầu tra cứu tới
# tên máy chủ.
#
Tìm kiếm tên máy chủ Tắt
# ErrorLog: Vị trí của tệp nhật ký lỗi.
# Nếu bạn không chỉ định lệnh ErrorLog trong <VirtualHost>
# vùng chứa, thông báo lỗi liên quan đến máy chủ ảo đó sẽ là
# đã đăng nhập tại đây. Nếu bạn *do* xác định tệp nhật ký lỗi cho <VirtualHost>
# vùng chứa, lỗi của máy chủ đó sẽ được ghi ở đó chứ không phải ở đây.
#
Nhật ký lỗi ${APACHE_LOG_DIR}/error.log
#
# LogLevel: Kiểm soát mức độ nghiêm trọng của các thông báo được ghi vào error_log.
# Các giá trị khả dụng: dấu vết8, ..., dấu vết1, gỡ lỗi, thông tin, thông báo, cảnh báo,
# lỗi, chí mạng, cảnh báo, nổi lên.
# Cũng có thể định cấu hình cấp nhật ký cho các mô-đun cụ thể, ví dụ:
# "Thông tin LogLevel ssl: cảnh báo"
#
LogLevel cảnh báo
# Bao gồm cấu hình mô-đun:
Bao gồm tùy chọn mods-enabled/*.load
Bao gồm tùy chọn mods-enabled/*.conf
# Bao gồm danh sách các cổng để nghe trên
Bao gồm các cổng.conf
# Đặt mô hình bảo mật mặc định của máy chủ HTTPD Apache2. nó làm
# không cho phép truy cập vào hệ thống tập tin gốc bên ngoài /usr/share và /var/www.
# Cái trước được sử dụng bởi các ứng dụng web được đóng gói trong Debian,
# cái sau có thể được sử dụng cho các thư mục cục bộ do máy chủ web phục vụ. Nếu
# hệ thống của bạn đang phục vụ nội dung từ thư mục con trong /srv bạn phải cho phép
# truy cập tại đây hoặc trong bất kỳ máy chủ ảo nào có liên quan.
<Thư mục />
Tùy chọn Chỉ mục FollowSymLinks Bao gồm ExecCGI
AllowOverride All
Yêu cầu tất cả cấp
</Thư mục>
<Thư mục /usr/share>
AllowOverride Không có
Yêu cầu tất cả cấp
</Thư mục>
<Thư mục /var/www/>
Tùy chọn Chỉ mục FollowSymLinks
AllowOverride All
Yêu cầu tất cả cấp
</Thư mục>
#<Thư mục /srv/>
# Tùy chọn Chỉ mục FollowSymLinks
# AllowOverride Không có
# Yêu cầu tất cả được cấp
#</Thư mục>
# AccessFileName: Tên file cần tìm trong mỗi thư mục
# cho các chỉ thị cấu hình bổ sung. Xem thêm AllowOverride
# chỉ thị.
#
AccessFileName .htaccess
#
# Các dòng sau ngăn các tệp .htaccess và .htpasswd
# được xem bởi khách hàng Web.
#
<FilesMatch "^\.ht">
Yêu cầu tất cả bị từ chối
</FilesMatch>
#
# Các lệnh sau xác định một số biệt danh định dạng để sử dụng với
# một chỉ thị CustomLog.
#
# Những định nghĩa này khác với định nghĩa Định dạng nhật ký chung ở chỗ chúng sử dụng %O
# (các byte thực được gửi bao gồm cả tiêu đề) thay vì %b (kích thước của
# tệp được yêu cầu), vì tệp sau không thể phát hiện một phần
# yêu cầu.
#
# Lưu ý rằng việc sử dụng %{X-Forwarded-For}i thay vì %h không được khuyến nghị.
# Sử dụng mod_remoteip để thay thế.
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" kết hợp
LogFormat "%h %l %u %t \"%r\" %>s %O" chung
LogFormat "%{Referer}i -> %U" người giới thiệu
Tác nhân LogFormat "%{User-agent}i"
# Bao gồm các thư mục bỏ qua các tệp sao lưu của trình chỉnh sửa và dpkg,
# xem README.Debian để biết chi tiết.
# Bao gồm các đoạn báo cáo chung
Bao gồmConf-enabled/*.confTùy chọn
# Bao gồm các cấu hình máy chủ ảo:
Bao gồmCác trang web tùy chọn đã bật/*.conf
# vim: cú pháp=apache ts=4 sw=4 sts=4 sr noet
Của tôi .htaccess
file là file tiêu chuẩn khi tạo project laravel
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Các mô-đun sau được kích hoạt để cài đặt apache2 của tôi:
> apachectl -M
AH00558: apache2: Không thể xác định một cách đáng tin cậy tên miền đủ điều kiện của máy chủ, sử dụng 127.0.1.1. Đặt chỉ thị 'Tên máy chủ' trên toàn cầu để chặn thông báo này
Các mô-đun đã tải:
core_module (tĩnh)
so_module (tĩnh)
watchdog_module (tĩnh)
http_module (tĩnh)
log_config_module (tĩnh)
logio_module (tĩnh)
version_module (tĩnh)
unixd_module (tĩnh)
access_compat_module (được chia sẻ)
alias_module (được chia sẻ)
auth_basic_module (được chia sẻ)
authn_core_module (được chia sẻ)
authn_file_module (được chia sẻ)
authz_core_module (đã chia sẻ)
authz_host_module (được chia sẻ)
authz_user_module (được chia sẻ)
autoindex_module (được chia sẻ)
deflate_module (được chia sẻ)
dir_module (được chia sẻ)
env_module (được chia sẻ)
filter_module (được chia sẻ)
mime_module (đã chia sẻ)
mpm_prefork_module (được chia sẻ)
đàm phán_mô-đun (được chia sẻ)
php7_module (được chia sẻ)
reqtimeout_module (được chia sẻ)
viết lại_module (đã chia sẻ)
setenvif_module (đã chia sẻ)
status_module (được chia sẻ)
Cấu hình máy chủ của tôi trông giống như sau:
sudo apache2ctl -S
AH00558: apache2: Không thể xác định một cách đáng tin cậy tên miền đủ điều kiện của máy chủ, sử dụng 127.0.1.1. Đặt chỉ thị 'Tên máy chủ' trên toàn cầu để chặn thông báo này
Cấu hình máy chủ ảo:
*:80 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
ServerRoot: "/etc/Apache2"
Tài liệu chínhRoot: "/var/www/html"
Nhật ký lỗi chính: "/var/log/apache2/error.log"
Mutex mặc định: dir="/var/run/apache2/"cơ chế=mặc định
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Bản đồ viết lại Mutex: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Xác định: DUMP_VHOSTS
Xác định: DUMP_RUN_CFG
Người dùng: name="www-data" id=33
Nhóm: name="www-data" id=33
Khi tôi mở /
url mọi thứ đều hoạt động tốt.Tuy nhiên, khi mở một url sâu như /công ty/ứng dụng
Tôi nhận được lỗi sau đây:
Bất cứ đề nghị những gì tôi đang làm sai? tôi đã sử dụng AllowOverride All
và cho phép từ tất cả
cho tôi Tài liệuRoot
.
Tôi đánh giá cao câu trả lời của bạn!