Cách di chuyển web root Apache đến một vị trí mới trên Debian 8
Trên Debian 8, web server Apache2 lưu trữ tài liệu của nó trong/var/www/html
theo mặc định. Thư mục này nằm trên hệ thống file root cùng với phần còn lại của hệ điều hành. Bạn có thể cần di chuyển tài liệu root đến một vị trí khác, chẳng hạn như một hệ thống file được mount riêng biệt. Ví dụ: nếu bạn phục vụ nhiều trang web từ cùng một version Apache, việc đặt root tài liệu của mỗi trang web trên dung lượng riêng của nó cho phép bạn mở rộng quy mô để đáp ứng nhu cầu của một trang web hoặc khách hàng cụ thể. Trong hướng dẫn này, bạn sẽ di chuyển root tài liệu Apache đến vị trí mới bằng cách di chuyển file và thay đổi file cấu hình của Apache.
Yêu cầu
Để hoàn thành hướng dẫn này, bạn cần :
Server Debian 8 có user không phải root có quyền
sudo
. Bạn có thể tìm hiểu thêm về cách cài đặt user có các quyền này trong hướng dẫn Cài đặt Server Ban đầu với Debian 8 của ta .Web server Apache2: Nếu bạn chưa cài đặt , phần Apache của bài viết chuyên sâu, Cách cài đặt ngăn xếp Linux, Apache, MySQL, PHP (LAMP) trên Debian 8 , có thể hướng dẫn bạn.
Vị trí mới cho root tài liệu của bạn: Vị trí root tài liệu mới hoàn toàn có thể cấu hình dựa trên nhu cầu của bạn. Nếu bạn đang di chuyển root tài liệu của bạn sang một thiết bị lưu trữ khác, bạn cần chọn một vị trí bên dưới điểm mount của thiết bị.
Trong hướng dẫn này, ta sẽ sử dụng folder /mnt/volume-nyc1-01
, trỏ tới một dung lượng Lưu trữ khối được đính kèm với server . Nếu bạn muốn sử dụng Block Storage để giữ các trang web của bạn , hãy hoàn thành hướng dẫnCách sử dụng Block Storage trên DigitalOcean để gắn ổ đĩa của bạn trước khi bạn tiếp tục.
Bước 1 - Sao chép file sang vị trí mới
Trên bản cài đặt Apache mới, tài liệu root được đặt tại /var/www/html
. Tuy nhiên, nếu bạn đang làm việc với một server hiện có, bạn có thể có một cài đặt khác đáng kể bao gồm nhiều root tài liệu trong các lệnh VirtualHost tương ứng.
Bạn có thể tìm kiếm vị trí của các root tài liệu bổ sung bằng cách sử dụng grep
. Tìm kiếm trong folder /etc/apache2/sites-enabled
để giới hạn sự tập trung của bạn vào các trang đang hoạt động bằng lệnh sau:
- grep -R "DocumentRoot" /etc/apache2/sites-enabled
Cờ -R
đảm bảo grep
sẽ in cả DocumentRoot và tên file trong kết quả của nó.
Kết quả trông như sau , mặc dù tên và số lượng kết quả có thể khác nhau trên một cài đặt hiện có:
Outputsites-enabled/000-default.conf DocumentRoot /var/www/html
Sử dụng phản hồi từ grep
đảm bảo rằng bạn đang di chuyển các file mà bạn muốn di chuyển và cập nhật các file cấu hình thích hợp của chúng.
Đến đây bạn đã xác nhận vị trí của root tài liệu của bạn , hãy sao chép các file vào vị trí mới của chúng bằng rsync
.
Đầu tiên, hãy cài đặt rsync
với
- sudo apt-get install rsync
Sau đó, thực hiện lệnh này để sao chép các file :
- sudo rsync -av /var/www/html /mnt/volume-nyc1-01
Sử dụng cờ -a
bảo toàn các quyền và các thuộc tính folder khác, trong khi -v
cung cấp kết quả dài dòng để bạn có thể theo dõi tiến trình. Tìm hiểu thêm về cách sử dụng rsync
trong hướng dẫn Cách sử dụng Rsync để đồng bộ hóa Thư mục local và từ xa trên VPS .
Lưu ý: Hãy chắc chắn rằng không có dấu gạch chéo trên folder , có thể được thêm vào nếu bạn sử dụng tính năng hoàn thành tab. Khi có dấu gạch chéo ở cuối, rsync
sẽ kết xuất nội dung của folder vào điểm mount thay vì chuyển nó vào folder html
có chứa:
Các file hiện đang ở vị trí mới, nhưng Apache vẫn đang tìm kiếm ở vị trí cũ, vì vậy hãy khắc phục điều đó.
Bước 2 - Cập nhật file cấu hình
Apache2 sử dụng cả file cấu hình trang web và global . Để biết thông tin cơ bản về phân cấp file cấu hình, hãy xem Cách cấu hình Server Web Apache trên Ubuntu hoặc Debian VPS .
Nếu bạn đang làm việc với cài đặt hiện có, bạn nên sửa đổi file server ảo mà bạn đã tìm thấy trước đó bằng grep
. Đối với ví dụ này, ta sẽ xem xét hai file Server ảo được cung cấp với Apache theo mặc định, 000-default.conf
và default-ssl.conf
.
Bắt đầu bằng cách chỉnh sửa file 000-default.conf
:
- sudo nano /etc/apache2/sites-enabled/000-default.conf
Tìm dòng bắt đầu bằng DocumentRoot
và cập nhật dòng đó với vị trí mới:
<VirtualHost *:80> ... ServerAdmin webmaster@localhost DocumentRoot /mnt/volume-nyc1-01/html
Tiếp theo, tìm một khối Directory
cũng trỏ đến đường dẫn ban đầu và cập nhật nó để trỏ đến đường dẫn mới.
Trên cài đặt mới, không có mục nhập Directory
mục trong trang web mặc định. Thêm mã sau vào file cấu hình của bạn để Apache có thể phân phát file từ vị trí mới của bạn:
... ServerAdmin webmaster@localhost DocumentRoot /mnt/volume-nyc1-01/html <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /mnt/volume-nyc1-01/html/> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> ...
Khối Directory
đầu tiên đặt một số quyền mặc định hạn chế và khối thứ hai cấu hình các tùy chọn cho root web mới trong /mnt/volume-nyc1-01/html/
Lưu ý: Bạn nên tìm những địa điểm khác mà đường dẫn ban đầu đã hiển thị và thay đổi cả những địa điểm đó sang vị trí mới. Ngoài cài đặt DocumentRoot
và Directory
, bạn cũng có thể tìm thấy những thứ như alias và các đoạn viết lại cần cập nhật. Bất cứ nơi nào bạn nhìn thấy đường dẫn của root tài liệu root trong kết quả của grep
, bạn cần cập nhật đường dẫn để phản ánh vị trí mới.
Sau khi bạn áp dụng các thay đổi cần thiết, hãy lưu file .
Tiếp theo, ta sẽ chú ý đến cấu hình SSL. Khi cài đặt mới, SSL chưa được cấu hình , nhưng có thể bạn cần cập nhật file ssl-default.conf
để tránh một số sự cố sau này nếu bạn không nhớ rằng mình cần thực hiện thay đổi.
Lưu ý: Nếu SSL không được bật, thì file ssl-default.conf
chỉ nằm trong /etc/apache2/sites-available.
Nếu bạn bật SSL với sudo a2ensite ssl-default
, một softlink sẽ được tạo từ file trong sites-available
cho /etc/apache2/sites-enabled
. Trong trường hợp đó, bạn có thể chỉnh sửa file từ một trong hai folder .
Chỉnh sửa file :
- sudo nano /etc/apache2/sites-available/ssl-default.conf
Sau đó, áp dụng các thay đổi tương tự bạn đã thực hiện trước đó, bằng cách thay đổi DocumentRoot
và đảm bảo các luật Directory
được cấu hình đúng cách:
... <IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin webmaster@localhost DocumentRoot /mnt/volume-nyc1-01 <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /mnt/volume-nyc1-01/html/> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> ...
Khi bạn đã hoàn tất các thay đổi cấu hình, hãy đảm bảo cú pháp đúng với lệnh sau:
- sudo apachectl configtest
Bạn sẽ thấy kết quả như sau:
OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK
Trên cài đặt mặc định, bạn sẽ thấy thông báo trước đó, bạn có thể bỏ qua thông báo này một cách an toàn. Miễn là bạn thấy Syntax OK
, hãy khởi động lại web server . Nếu không, hãy theo dõi và khắc phục các sự cố mà nó đã báo cáo.
Sử dụng lệnh sau để khởi động lại Apache:
- sudo systemctl reload apache2
Khi server đã khởi động lại, hãy truy cập các trang web bị ảnh hưởng của bạn và đảm bảo chúng hoạt động như mong đợi. Khi bạn thấy phù hợp , mọi thứ đã ổn định, đừng quên xóa bản sao root của dữ liệu.
Kết luận
Trong hướng dẫn này, bạn đã thay đổi root tài liệu Apache thành một vị trí mới. Điều này có thể giúp bạn quản trị web server cơ bản, như lưu trữ hiệu quả nhiều trang web trên một server duy nhất. Nó cũng cho phép bạn tận dụng các thiết bị lưu trữ thay thế như lưu trữ khối mạng, một bước quan trọng trong việc mở rộng quy mô trang web khi nhu cầu của nó thay đổi.
Nếu bạn đang quản lý một trang web bận rộn hoặc đang phát triển, bạn có thể quan tâm đến việc tìm hiểu cách tải kiểm tra web server của bạn để xác định các tắc nghẽn hiệu suất trước khi bạn gặp phải chúng trong quá trình production . Bạn cũng có thể tìm hiểu thêm về việc cải thiện trải nghiệm production trong so sánh năm cách này để cải thiện cài đặt server ứng dụng web production của bạn .
Các tin liên quan
Cách thiết lập mod_rewrite cho Apache trên CentOS 72016-10-26
Cách di chuyển web root Apache đến vị trí mới trên Ubuntu 16.04
2016-07-27
Cách thiết lập xác thực mật khẩu với Apache trên Ubuntu 16.04
2016-07-26
Cách cung cấp các ứng dụng Django với Apache và mod_wsgi trên Ubuntu 16.04
2016-05-17
Cách mã hóa kết nối Tomcat 8 với Apache hoặc Nginx trên Ubuntu 16.04
2016-04-29
Cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 16.04
2016-04-21
Cách thiết lập server ảo Apache trên Ubuntu 16.04
2016-04-21
Cách tạo chứng chỉ SSL tự ký cho Apache trong Ubuntu 16.04
2016-04-21
Cách thiết lập Let's Encrypt chứng chỉ cho nhiều server ảo Apache trên Ubuntu 14.04
2016-01-19
Cách bảo mật Apache bằng Let's Encrypt trên Ubuntu 14.04
2015-12-18