Bạn nên có một thư mục như là người chủ web, nơi duy nhất tập tin mà bạn muốn tiếp xúc với toàn bộ internet nên cư trú.
project/
web/
index.php
css/
js/
images/
config/
lib/
- web/là gốc rễ cho thấy khách
- lib/là ở đây thư mục thư viện, và ở đâu autoload nhìn cho các tập tin.
Bạn có thể thêm nhiều thư mục con khác vào dự án/như bộ điều khiển, mô-đun, chế độ xem, trình trợ giúp, v.v. Điều này phụ thuộc vào khung của bạn.
EDIT:
Nếu bạn sử dụng nhà soạn nhạc (mà tôi đề nghị) và có thể NPM với grunt và ít cấu trúc tập tin của bạn sẽ được như sau:
project/
web/
js/
css/
images/
index.php
cli/
config/
config.php
node_modules/
src/
test/
vendor/
composer.json
composer.lock
packages.json
- web/có tất cả của bạn các tệp công khai
- cli/tập lệnh và chương trình được chạy từ dòng lệnh KHÔNG phải là web
- cấu hình/có tất cả đồng nghiệp của bạn Các tệp nfig (trong git bạn bỏ qua config.php và thay vào đó có config.dist.php không có tên người dùng, mật khẩu, mã xác nhận và tiền tố/hậu tố và "bí mật" khác)
- node_modules/có tất cả các tệp thư viện của bạn từ npm (trong git tôi đề nghị bạn đặt điều này trong một submodule)
- src có tất cả các file PHP địa phương của bạn trong cấu trúc psr4, thiết lập để tự động load trong composer.json
- thử nghiệm/có tất cả các bài kiểm tra đơn vị của bạn cho các lớp src của bạn, thiết lập trong autload-dev trong composer.json (nhớ sử dụng composer install --no-dev trực tiếp, có thể thêm -o nếu bạn không có quá nhiều lớp)
- nhà cung cấp có tất cả các tệp thư viện của bạn từ nhà soạn nhạc và ONE và ONLY autoload.php được đưa vào web/chỉ mục.php và bất kỳ kịch bản cli nào (trong git tôi đề nghị bạn bỏ qua thư mục nhà cung cấp này)
Thêm các thư mục và tệp khác theo yêu cầu cho dự án của bạn.
Để sử dụng triển khai cấu trúc này:
/sites/project/ (project is your projectname)
current (alias to current release folder releases/v1.1.0)
previous (optional alias to previous release folder releases/v1.0.1)
releases/
v1.0.0/ (git checkout of tag v1.0.0)
v1.0.1/ (git checkout of tag v1.0.1)
v1.1.0/ (git checkout of tag v1.1.0)
shared/ (has all your shared files and folders to be aliased in all releases - maybe something like GlusterFS)
Thực hiện một kịch bản triển khai. Một cái gì đó như thế này:
Sao lưu dự phòng đầu tiên của db hoặc sao chép nó vào cơ sở dữ liệu mới, thanh toán git repo vào thư mục mới với thẻ phát hành, nhận tất cả các mô-đun con, chạy trình soạn nhạc --no-dev, thiết lập bất kỳ bí danh nào các thư mục và tệp được chia sẻ như tệp hình ảnh và tệp cấu hình đã tải lên, tạo ra js/css với grunt và ít hoặc tương đương, trỏ bí danh hiện tại vào thư mục mới bằng thẻ, chạy tập lệnh cơ sở dữ liệu cập nhật, khởi động lại dịch vụ nginx/apache/fpm-php, chạy thử nghiệm để kiểm tra trang web đã hết.
Có tập lệnh để quay lại phiên bản trước (hoặc hướng dẫn để bạn biết phải làm gì).
Đây chỉ là một suy nghĩ. Bạn đã cân nhắc sử dụng một khung công tác MVC PHP đã tồn tại, chẳng hạn như CakePHP chưa? Tôi hiểu rằng có thể có một đường cong học tập, nhưng nó có thể là đáng giá để xem xét những lợi ích của một khung nguồn mở, phổ biến. Tôi đã xây dựng và duy trì mã riêng của mình trong nhiều năm, nhưng nhận thấy rằng nó có khả năng mở rộng hơn để sử dụng khung bên thứ ba, đặc biệt là cho các trang web lớn. Bạn có thể thấy rằng nó sẽ giúp bạn tiết kiệm thời gian trong thời gian dài, và bạn sẽ có các kỹ năng quý giá cho các dự án gia công phần mềm trong tương lai. – Dooltaz
Tôi thực sự đã nghĩ về điều đó ... và tôi có thể sử dụng một cách dứt khoát ... nhưng tôi phải tự mình làm điều đó trước khi tôi có thể tiếp tục :) một điều thần kinh ha – johnnietheblack