Thư mục đề nghị để lưu trữ nội dung trang web là gì?


21

Khi tôi mới bắt đầu lập trình cho web và tôi muốn tạo một dự án mới, tôi luôn được dạy để tạo một thư mục /var/www/. Tuy nhiên, trong rất nhiều hướng dẫn tôi đọc mọi người có xu hướng tạo một thư mục trong /home/username/.

Tôi không thích ý tưởng đưa nó vào /home/username/.

Có một vị trí chính xác hoặc nếu không những lợi thế / bất lợi của việc đặt nó trong các khu vực nhất định trên hệ thống tập tin là gì?


Đó là sở thích ("tốt nhất" ngụ ý rằng, có lẽ bạn nên thay đổi điều này để an toàn nhất, v.v.) để phát triển. Nếu bạn cũng đang phục vụ họ từ đó, thì có lẽ bạn sẽ muốn một cái gì đó tách biệt để giữ khoảng cách giữa các tệp cá nhân của bạn và nội dung chia sẻ web. Nhưng có một triệu cấu hình. Tôi gắn bó /var/wwwvà thường có nó trên một ổ đĩa khác (chỉ ưu tiên).
nerdwaller

Không có thư mục "tốt nhất". Đó hoàn toàn là sự hiểu biết của bạn vì vị trí tài chính của các tệp không quan trọng.
Ramhound

Câu trả lời:


36

Không có thư mục "tốt nhất". Và trong khi mọi người có thể lập luận rằng câu hỏi này là chủ quan, hoặc việc sắp xếp các tập tin thực tế không quan trọng với vụng trộm và họ nói đúng về vụ sau này, có những khuyến nghị được tiêu chuẩn hóa về nơi đặt những gì trong các hệ thống giống Unix.

Các hệ thống tập tin tiêu chuẩn cấp bậc định nghĩa này và cung cấp bạn những điều sau đây:

  • /var- một nơi để đặt dữ liệu thay đổi trong quá trình hoạt động bình thường, như nhật ký, v.v. /var/wwwlà thư mục mặc định để đặt nội dung web cho Apache, nhưng cách sử dụng của nó hoàn toàn không được chuẩn hóa và chỉ là nơi "thông thường" mà bạn đặt vì mọi người không thay đổi cài đặt mặc định rất thường xuyên.

  • /srv- thư mục này nên chứa dữ liệu được phục vụ bởi hệ thống. Đây thường là nơi bạn muốn. FHS giải thích:

    Mục đích chính của việc chỉ định điều này là để người dùng có thể tìm vị trí của dữ liệu cho dịch vụ cụ thể và để các dịch vụ yêu cầu một cây duy nhất cho dữ liệu chỉ đọc, dữ liệu có thể ghi và tập lệnh (như tập lệnh cgi) có thể được đặt một cách hợp lý. Dữ liệu chỉ được người dùng đặc biệt quan tâm nên có trong thư mục chính của người dùng đó. (Càng)

    Một phương pháp để cấu trúc dữ liệu theo /srvgiao thức, ví dụ. ftp, rsync, www, Vàcvs

    Vì vậy, chỉ cần tạo một /srv/wwwthư mục và sử dụng này. Bạn có thể tạo các thư mục con cho mọi máy chủ ảo mà bạn có thể muốn phân phối với máy của mình.

  • /homechứa các tệp thực sự chỉ thuộc về một người dùng. Apache ví dụ cho phép userdirs , vì vậy bạn có thể truy cập các file web của người dùng thông qua http://example.com/~username, và họ đang phục vụ từ các public_htmlthư mục trong nhà của người dùng.

    Nếu bạn sử dụng một máy chủ được chia sẻ giữa nhiều người và bạn muốn cho phép mọi người lưu trữ tập lệnh của riêng họ, thì đây là nơi họ nên đến. Hãy nhớ làm cho các thư mục có thể ghi được bởi người dùng mà chúng thuộc về.

Về bản chất /srv/www/var/wwwlà các thư mục bạn nên tạo thư mục con cho bất kỳ dự án web nào bạn có thể muốn lưu trữ. Sau đó, bạn có thể xác định các quyền khác nhau trên các thư mục này để cho phép người dùng hoặc nhóm người dùng nhất định viết thư cho họ. Nếu bạn có dự án cho một người dùng tại một thời điểm, hãy sử dụng /home.


3
Các http://example.com/~usernamethường không trỏ đến /home/username/, nhưng để /home/username/public_html/.
choroba

Vâng, cảm ơn, điều đó nên được thêm vào cho rõ ràng. Làm xong.
slhck

Sau vài năm sử dụng /var/www, đã đến lúc thay đổi!
sitilge

Ngoài ra, wwwâm thanh giống như một tên miền phụ với tôi.
sitilge

Chỉ cần thêm ... Việc sử dụng / var / www là một cách phổ biến cho các trường hợp phục vụ trang web đơn lẻ và như đã nói vị trí mặc định của Apache, trong khi sử dụng / home / usr / was / là một cách phổ biến cho các máy chủ đại lý hoặc nhiều trang web lưu trữ được rút ra từ khái niệm người dùng == khách hàng. Cả hai chỉ là thực tiễn phổ biến và câu trả lời của shlck là sử dụng tốt hơn các mục đích dự định của hệ thống tập tin.
Jools

4

Vâng, bạn có thể đặt các tệp ở bất cứ đâu miễn là mọi thứ có thể truy cập chúng đúng cách, tuy nhiên các hệ thống tệp lộn xộn là vấn đề đau đầu nếu có ai đó đến sau.

/srv là hợp lý nhất cộng với nếu bạn tuân theo Tiêu chuẩn phân cấp hệ thống tập tin, nó sẽ đi vào đây.

Nếu bạn làm nhiều tên miền, bạn có thể làm như vậy, /srv/domain1 /srv/domain2v.v./ftp /www /tftp /logs /etc.etc.etc

Đối với tôi cảm thấy một cấu trúc rất vững chắc để xây dựng và dễ dàng kiểm soát

Nhưng là một quản trị viên, bạn có thể làm sạch hoặc lộn xộn như bạn muốn.


1

Ok dễ dàng trả lời nhanh chóng.

Nếu các tệp web của bạn trên hệ thống sẽ chỉ được truy cập bởi MỘT người dùng trên hệ thống linux. Sử dụng thư mục chính của người dùng ( ~/).

Nếu các tệp web của bạn trên hệ thống sẽ được truy cập bởi người dùng MULTIPLE trên hệ thống linux. Sử dụng /srv/.

Đây chính xác là những gì http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICEPROVIDEDBYSYEC .

Đây là trích dẫn:

/ srv chứa dữ liệu dành riêng cho trang web được phục vụ bởi hệ thống này.

Mục đích chính của việc xác định điều này là để người dùng có thể tìm thấy vị trí của các tệp dữ liệu cho dịch vụ cụ thể và để các dịch vụ yêu cầu một cây cho dữ liệu chỉ đọc, dữ liệu có thể ghi và tập lệnh (như tập lệnh cgi) có thể được đặt một cách hợp lý. Dữ liệu chỉ được người dùng cụ thể quan tâm nên có trong thư mục chính của người dùng đó.

Tiền thưởng: www? ftp? Tổ chức theo giao thức? Huh?

Như đã nêu ở đây trong http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.html#SRVDATAFORSERVICEPROVIDEDBYSYSTEM

  • Nếu trang web của bạn chỉ được truy cập bởi MỘT người dùng trên hệ thống và CHỈ qua trình duyệt (giao thức http) thì: ~/http/your-website-directory/hoặc (giao thức https) sau đó:~/https/your-website-directory/
  • Nếu trang web của bạn chỉ được truy cập bởi MỘT người dùng trên hệ thống và KHÔNG CHỈ qua trình duyệt mà có nhiều giao thức (ig http VÀ tcp VÀ ...) thì: ~/your-website-directory/
  • Nếu trang web của bạn được người dùng MULTIPLE truy cập trên hệ thống và CHỈ qua trình duyệt (giao thức http) thì: /srv/http/your-website-directory/hoặc (giao thức https):/srv/https/your-website-directory/
  • Nếu trang web của bạn được người dùng MULTIPLE truy cập trên hệ thống và KHÔNG CHỈ qua trình duyệt mà có nhiều giao thức (ig http AND ftp AND ...) thì: /srv/your-website-directory/

Tại sao không www? Đây là di sản từ thời Apache. www không chỉ định giao thức nào đang được sử dụng. Debian vẫn sử dụng cái này cho đến ngày hôm nay trong khi Arch linux sử dụng / srv / http.


0

Máy chủ web Apache có trang web mặc định bên dưới /var/www/nhưng nó đang đề xuất đặt các trang web khác theo/srv/

Tôi nhận thấy điều này trên Ubuntu Server 14.04 LTS. apache2.confTệp mặc định của nó chứa khối nhận xét:

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>
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.