Cách đúng để thay đổi thư mục hoặc chạy từ nhiều thư mục dưới cổng khác nhau cho apache2 như sau:
Đối với apache2, các tệp cấu hình được đặt bên dưới /etc/apache2
và không sử dụng một tệp cấu hình duy nhất như trong các phiên bản cũ hơn nhưng được chia thành các tệp cấu hình nhỏ hơn, với /etc/apache2/apache2.conf
tệp cấu hình chính. Để phục vụ các tệp từ một thư mục khác, chúng tôi cần một tệp conf ảohost mới. Các tệp conf của Virtualhost được đặt trong /etc/apache2/sites-available
(không chỉnh sửa các tệp trong phạm vi kích hoạt trang web). Cài đặt apache mặc định sử dụng tập tin virtualhost conf 000-default.conf
.
Bắt đầu bằng cách tạo một tệp virtualhost mới bằng cách sao chép tệp virtualhost mặc định được sử dụng bởi cài đặt apache mặc định (tệp chạy tại localhost trên cổng 80). Thay đổi vào thư mục /etc/apache2/sites-available
và sau đó tạo bản sao bằng cách sudo cp 000-default.conf example.com.conf
, bây giờ chỉnh sửa tệp bằng cách sudo gedit example.com.conf
:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
Tôi đã xóa các dòng không quan trọng từ các tập tin trên cho ngắn gọn. Đây DocumentRoot
là đường dẫn đến thư mục mà các tệp trang web sẽ được phục vụ như index.html
.
Tạo thư mục mà bạn muốn phục vụ các tệp, ví dụ; mkdir example.com
và thay đổi chủ sở hữu và nhóm mặc định của thư mục, ví dụ: nếu tên người dùng đã đăng nhập của bạn là ubuntu
thay đổi quyền như sudo chown ubuntu:www-data example.com
. Điều này cấp quyền truy cập đầy đủ cho người dùng ubuntu
và cho phép đọc và thực hiện quyền truy cập vào nhóm www-data
.
Bây giờ chỉnh sửa tập tin apache conf /etc/apache2/apache2.conf
bằng cách phát lệnh sudo gedit apache2.conf
và tìm dòng <Directory /var/www/>
và bên dưới thẻ đóng </Directory>
, thêm vào dưới đây:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
Bây giờ có hai lệnh để kích hoạt hoặc vô hiệu hóa các tập tin cấu hình virtualhost, đó là a2ensite
và a2dissite
tương ứng. Bây giờ vì example.com.conf
tệp của chúng tôi sử dụng cùng một cổng ( 80
) như được sử dụng bởi tệp cấu hình mặc định ( 000-default.conf
), chúng tôi phải vô hiệu hóa tệp cấu hình mặc định bằng cách phát lệnh sudo a2dissite 000-default.conf
và kích hoạt tệp conf của Virtualhost của chúng tôi bằng cáchsudo a2ensite example.com.conf
Bây giờ khởi động lại hoặc tải lại máy chủ bằng lệnh sudo service apache2 restart
. Bây giờ apache phục vụ các tệp từ thư mục example.com
tại localhost
cổng mặc định của 80
.
Các a2ensite
lệnh cơ bản tạo ra một liên kết tượng trưng đến tập tin conf dưới thư mục trang web-enabled
Không chỉnh sửa các tệp trong directoy kích hoạt trang web (hoặc * đã bật), như được chỉ ra trong câu trả lời này https://stackoverflow.com/a/41568701/2532763
Để thay đổi cổng và chạy từ nhiều thư mục trên các cổng khác nhau:
Bây giờ nếu bạn cần chạy thư mục trên một cổng khác, hãy thay đổi số cổng từ 80 thành 8080 bằng cách chỉnh sửa tệp virtualhost dưới dạng:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
và chỉnh sửa /etc/apache2/ports.conf
và thêm Listen 8080
ngay bên dưới dòngListen 80
Bây giờ chúng ta có thể kích hoạt tệp conf Virtualhost mặc định chạy trên cổng 80 vì thư mục example.com sử dụng cổng 8080, như sudo a2ensite 000-default.conf
Bây giờ khởi động lại hoặc tải lại máy chủ bằng lệnh sudo service apache2 restart
. Bây giờ cả hai thư mục có thể được truy cập từ localhost
vàlocalhost:8080