Làm cách nào để thay đổi thư mục gốc của máy chủ apache? [đóng cửa]


241

Có ai biết cách thay đổi root tài liệu của máy chủ Apache không? Tôi về cơ bản muốn localhostđến từ /users/spencer/projectsthư mục thay vì /var/www.

Biên tập

Tôi cuối cùng đã tìm ra nó. Một số gợi ý tôi thay đổi httpd.conftập tin, nhưng cuối cùng tôi đã tìm thấy một tập tin /etc/apache2/sites-available/defaultvà thay đổi thư mục gốc từ /var/wwwsang /home/myusername/projects_foldervà nó đã hoạt động.


Stack Overflow là một trang web cho các câu hỏi lập trình và phát triển. Câu hỏi này dường như lạc đề vì nó không liên quan đến lập trình hay phát triển. Xem những chủ đề nào tôi có thể hỏi về đây trong Trung tâm trợ giúp. Có lẽ Server Fault hoặc Webmaster Stack Exchange sẽ là một nơi tốt hơn để hỏi.
jww

Câu trả lời:


209

Bạn cần thay đổi DocumentRootcài đặt trong httpd.conftập tin của bạn . Rất có thể nó sẽ ở dưới một cái gì đó như/etc/apache2/conf/httpd.conf

Sử dụng trình chỉnh sửa yêu thích của bạn (tôi khuyên dùng Vim ) và tìm kiếm DocumentRootvà thay đổi nó thành /users/spencer/projects. Cũng nhìn xa hơn một chút cho một thiết lập trông như thế này:

<Directory "/var/www">

Bạn cũng sẽ muốn thay đổi những gì trong dấu ngoặc kép vào thư mục mới của bạn. Điều này cho phép Apache truy cập để đọc từ thư mục đó khi người dùng đưa ra yêu cầu gọi nó.

Bây giờ khởi động lại dịch vụ apache của bạn ( httpd -k restart) và bạn nên đi.

Chỉnh sửa : Các tệp cấu hình trang web Apache2 hiện được lưu giữ trong /etc/apache2/sites-available/ (Debian, Ubuntu, v.v.).


6
Tôi đã mở /etc/apache2/httpd.conf, nhưng tệp trống. Tôi đang mở nó với gedit.
Spencer Cooley

3
Tệp có thể nằm trong /etc/httpd/conf/httpd.conf, tùy thuộc vào hương vị Linux của bạn.
Chris Henry

3
tệp httpd.conf trống nhưng tôi đã tìm thấy một tệp tại etc / apache2 / sites-Available / default và thay đổi thư mục gốc ở đó. Tôi nên đã đề cập rằng đây không phải là trên một máy chủ thực tế. Tôi đang thiết lập một môi trường phát triển địa phương. Không chắc chắn nếu điều đó làm nên sự khác biệt
Spencer Cooley

3
Có thể bật cả / var / www và / home / myusername / dự án_folder cùng một lúc không? Và tôi nên cấu hình như thế nào? cảm ơn.
Paul Lo

3
"Câu trả lời" thực sự lỗi thời. Câu trả lời đúng theo tài liệu Ubuntu 18.x là Thay đổi thư mục gốc của Apache hoặc chuyển dự án sang / var / www / html. Để thay đổi thư mục gốc của Apache, hãy chạy: cd / etc / apache2 / sites-Available. Sau đó mở tệp 000-default.conf bằng lệnh: nano 000-default.conf. Chỉnh sửa tùy chọn DocumentRoot: DocumentRoot / path / to / my / project. (xem Askubfox.com/questions/337874/
sea26.2

262

Xin lưu ý rằng điều này chỉ áp dụng cho Ubuntu 14.04 LTS và các bản phát hành mới hơn.

Trong Ubuntu 14.04 LTS của tôi, gốc tài liệu đã được đặt thành /var/www/html. Nó được cấu hình trong tập tin sau:

/etc/apache2/sites-available/000-default.conf

Vì vậy, chỉ cần làm một

sudo nano /etc/apache2/sites-available/000-default.conf

và thay đổi dòng sau đây thành những gì bạn muốn:

DocumentRoot /var/www/html

Cũng làm một

sudo nano /etc/apache2/apache2.conf

và tìm cái này

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

và thay đổi /var/www/htmlthư mục ưa thích của bạn

và lưu nó

Sau khi bạn lưu các thay đổi của mình, chỉ cần khởi động lại máy chủ web apache2 và bạn sẽ hoàn thành :)

sudo service apache2 restart


Nếu bạn thích một trình soạn thảo văn bản đồ họa, bạn chỉ có thể thay thế sudo nanobằng một gksu gedit.


1
@Paul Lo: Tôi chưa thử cái này trên Ubuntu 13.10, chỉ trên Ubuntu 14.04; Vì tôi khá chắc chắn rằng lần đầu tiên tôi thiết lập apache (trên Ubuntu 12.04), không có thư mục nào như vậy. Vì vậy, có, tôi đoán rằng điều này chỉ có sẵn trên Ubuntu 14.04 LTS và mới hơn. Tuy nhiên, bạn có thể có một cái nhìn vào các câu trả lời khác. Các upvote cho rằng họ đã giúp đỡ người khác, có thể họ cũng làm việc với Ubuntu 13.10.
mozzbozz

1
Tuy nhiên, cảm ơn bạn đã hỏi, tôi chỉ chỉnh sửa thông tin này thành câu trả lời để không ai khác rơi vào cái bẫy thử cái này với các phiên bản Ubuntu cũ hơn (y)
mozzbozz

3
@mozzbozzm, bạn nói đúng. Chỉ 14.04. Thực sự là một lựa chọn kỳ lạ, bây giờ đột nhiên có var/www/htmlroot mặc định. Họ thực sự đang cố gắng lãng phí thời gian của mọi người? :)
davidkonrad

4
Tôi đang gặp lỗi bị cấm You don't have permission to access / on this server.khi tôi nhấn localhost: 80 trong trình duyệt của mình. Tôi có cần thay đổi cổng không?
Costa

3
@Costa Tôi đã giải quyết vấn đề bằng cách thêm <Directory path_to_directory> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> vào /etc/apache2/apache2.conf
Keenan Gebze

42

Tôi đã phải chỉnh sửa /etc/apache2/sites-available/default. Các dòng giống như được đề cập bởi RDL.


3
Một chỉnh sửa được đề xuất bởi @pabloab có điều này để nói: "Apache 2.4 trở lên yêu cầu .confở cuối và theo mặc định có 000-tiền tố là". Kết quả là /etc/apache2/sites-available/000-default.conf. Tôi đã không thử nghiệm điều này, nhưng nó có thể giúp một số người.
Nick

^^ cái này đã sửa nó. Tài liệu ở đâu mà tôi yêu cầu .conf ở cuối các tệp có sẵn trên trang web của tôi?!? Tôi có khoảng 20 máy chủ ảo đã bị vô hiệu hóa và ngoại tuyến sau khi cập nhật và sau một vài giờ, việc tìm kiếm này và đổi tên các trang web có sẵn của tôi đã sửa nó cho tôi.
James Perih

23

Đây là cho Ubunutu 14.04:

Trong tệp /etc/apache2/apache2.confnên như sau mà không có tên thư mục:

<Directory /home/username>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

và trong tệp /etc/apache2/sites-available/000-default.confbạn nên bao gồm tên thư mục tùy chỉnh tức là www:

DocumentRoot /home/username/www

Nếu không như trên, nó sẽ báo lỗi khi tải máy chủ: Forbidden You don't have permission to access / on this server


Cảm ơn bạn thân :) Điều này đã làm việc cho tôi trong Ubuntu 16.04
Magesh Kumaar

2
Nó cũng hoạt động trên Debian 8
androsfat

15

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/apache2và 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.conftệ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-availablevà 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 DocumentRootlà đườ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.comvà 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à ubuntuthay đổ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 ubuntuvà 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.confbằng cách phát lệnh sudo gedit apache2.confvà 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à a2ensitea2dissitetương ứng. Bây giờ vì example.com.conftệ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.confvà 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.comtại localhostcổng mặc định của 80.

Các a2ensitelệ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.confvà thêm Listen 8080ngay 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ừ localhostlocalhost:8080


4

Tôi đã làm việc với LAMP và Để thay đổi thư mục Tài liệu gốc, tôi đã chỉnh sửa tệp mặc định có trong thư mục / etc / apache2 / sites- Available. Nếu bạn muốn làm như vậy chỉ cần chỉnh sửa như sau

DocumentRoot /home/username/new_root_folder
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/username/new_root_folder>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

Sau này, nếu bạn gõ localhost trong trình duyệt, nó sẽ tải nội dung * / home / username / new_root_folder * .


4

Nếu bạn không thể tìm http.confvà làm theo cách của Nick.

Khởi động lại Apache bằng cách sử dụng sudo service apache2 restart


4

Đối với apache2 trên Linux Mint 17.3 Cinnamon 64-bit các công việc sau:

  1. Trong việc /etc/apache2/sites-available/mở 000-default.conftệp và thay đổi Tài liệu gốc thành đường dẫn tuyệt đối của thư mục của bạn.

    sudo vim /etc/apache2/sites-available/000-default.conf

  2. Trong /etc/apache2/mở httpd.conf, và thêm một <Directory>thẻ tham khảo thư mục của bạn và có chứa các thiết lập chính xác giống như thẻ cho var/www.

    sudo vim /etc/apache2/apache2.conf

    Trên máy của tôi, nó trông như thế này:


<Directory /home/my_user_name/php/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Lưu ý: Trong bước đầu tiên, bạn có thể muốn thay đổi Tài liệu gốc trong default-ssl.conftệp cũng cho mục đích SSL. Nhưng theo như tôi có thể nói điều này là không bắt buộc để có được một môi trường phát triển chung đang chạy.


2

Trong phiên bản apache 2.4.18 (Ubuntu).

1. đi đến tập tin này /etc/apache2/apache2.conf tìm kiếm <Directory /var/www/>và thay thế vào thư mục của bạn ......

2.go để /etc/apache2/sites-av Available / 000-default.conf tìm kiếm DocumentRoot /var/www/htmlvà thay thế cho DocumentRoot của bạn ....


Tôi đã làm cả hai điều. Nó vẫn hiển thị Cấm Bạn không có quyền truy cập / trên máy chủ này.
Lập trình viên

kiểm tra sự cho phép thư mục của bạn nếu nó không có trong thư mục nhà của bạn.
habibun

2

Trong trường hợp bạn đang sử dụng Ubuntu 16.04. Vui lòng cập nhật 000-default.conf trong thư mục / etc / apache2 / site-Available.

tại đây -> Quản trị trang web ServerAdmin @ localhost DocumentRoot / var / www / html / YourFolder


1

Tôi đã làm /var/wwwcho một liên kết mềm đến thư mục cần thiết (ví dụ. /users/username/projects) Và mọi thứ đã ổn sau đó.

Tuy nhiên, tự nhiên, bản gốc /var/wwwcần phải bị xóa - hoặc đổi tên.


0

Nếu ai đó đã cài đặt LAMPtrong /optthư mục thì đó /etc/apache2không phải là thứ bạn đang tìm kiếm.

Tìm httpd.conftập tin trong /opt/lampp/etc/httpd.conf.

Thay đổi dòng trong thư mục này và lưu nó từ thiết bị đầu cuối.



0

Nếu bạn đang sử dụng Linux Mint (ý kiến ​​cá nhân, từ tất cả các bản phát hành này, điều này sẽ khiến tôi hài lòng), hãy làm theo điều này:

1- Truy cập / etc / apache2 / sites-Available và chỉnh sửa 000-default.conf 2- Tìm kiếm DocumentRoot, ví dụ DocumentRoot / var / www / html bạn thay đổi thư mục tương ứng; 3- Mở terminal và gõ: sudo service apache2 restart

EDITED ----- Tôi nhận ra rằng trong Mint, bạn đi /etc/apache2/apache.conf, thay thế / var / www vào đường dẫn tương ứng của bạn, thay vì khởi động lại máy chủ (bước 3).

Đó là nó.


0

Áp dụng cho Ubuntu 14.04 và các phiên bản mới hơn. Đảm bảo sao lưu các tệp sau trước khi thực hiện bất kỳ thay đổi nào.

1.Mở /etc/apache2/apache2.confvà tìm kiếm <Directory /var/www/>chỉ thị và thay thế đường dẫn bằng /home/<USERNAME>/public_html. Bạn có thể sử dụng * thay vì.

2.Mở /etc/apache2/sites-available/000-default.confvà thay thế DocumentRootgiá trị tài sản từ /var/www/htmlđến /home/<USERNAME>/public_html. Ngoài ra <Directory /var/www/html>để <Directory /home/<USERNAME>/public_html.

3.Open /etc/mods-available/php7.1.conf. Tìm và nhận xét mã sau

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

Không bật php_admin_flag engine OFFcờ BẬT vì lý do được đề cập trong nhận xét ở trên Mã chỉ thị. Ngoài ra phiên bản php có thể là 5.0, 7.0 hoặc bất cứ thứ gì bạn đã cài đặt.

Tạo public_htmlthư mục trong home/<USERNAME>.

Khởi động lại dịch vụ apache bằng cách thực hiện lệnh sudo service apache2 restart.

Kiểm tra bằng cách chạy tập lệnh mẫu trên máy chủ.


-3

Nếu bạn (như tôi) tìm thấy bài đăng này qua Google:

Tôi đã tìm thấy nó tại /etc/apache2/sites-av Available / 000-default.conf


4
vui lòng mô tả câu trả lời chi tiết của bạn bằng mã nhúng thay vì chỉ vào một tệp bên ngoài.
Christian MICHON
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.