Mỗi thiết lập là khác nhau. Đối với tôi, tôi có rất nhiều người dùng trên một máy chủ mà mỗi trang web lưu trữ, đối với bạn, bạn có thể sẽ không cần phải tạo nhiều hơn một người dùng trên hệ thống. Tuy nhiên, nếu bạn quản lý nhiều trang web trên máy chủ này, thiết lập này sẽ giúp bạn quản lý, định cấu hình và gỡ lỗi từng tên miền một cách dễ dàng hơn so với thiết lập LAMP tiêu chuẩn. Để điều đó xảy ra, tôi sử dụng một số thiết bị của Apache để khắc phục các lỗi về quyền.
Đầu tiên, đây là cấu trúc tài liệu tôi sử dụng:
/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs
Mỗi người dùng có tài khoản riêng với một thư mục tên miền (tôi đã thêm vào để /etc/skel
tạo tài khoản mỗi lần. Mỗi tên miền có thư mục riêng trong domains
thư mục có html
thư mục (tôi có lý do của mình cho việc này, chủ yếu là vì vậy tên miền có thể có tệp web bên ngoài của lĩnh vực công cộng). Hãy thoải mái sửa đổi cấu trúc này khi bạn thấy phù hợp, chỉ cần nhớ thực hiện những thay đổi đó trong suốt bài đăng này.
Thứ hai, tôi lưu trữ rất nhiều trang web PHP vì vậy tôi sử dụng suPHP trong cấu hình của mình. Theo mặc định, gói lưu trữ tiêu chuẩn không bật cờ biên dịch phù hợp dẫn đến phiên bản suPHP kém an toàn hơn. Tôi đã tạo gói suPHP của riêng mình mà tôi sử dụng trên các máy chủ của mình, hướng dẫn cài đặt bên dưới. suPHP cho phép bạn xác định tập lệnh PHP nào của người dùng sẽ được thực thi (trong số những thứ khác bao gồm: php.ini tùy chỉnh cho mỗi trang, v.v.). Tôi cũng kích hoạt suExec cho Apache - loại bỏ thêm nhu cầu có quyền sở hữu đối với người dùng dữ liệu www (một người dùng mà tôi coi thường).
Trước tiên hãy đảm bảo bạn có Apache và tất cả các dịch vụ khác được cài đặt trên máy chủ của bạn. Hãy chắc chắn rằng họ ít nhất đang làm việc. Sau đó, tôi khuyên bạn nên cài đặt suphp-common và mô-đun libapache2-mod-suphp cần thiết (Thông tin thêm: PPA là gì và tôi sử dụng chúng như thế nào? ). Sau đó, sau khi cài đặt, kích hoạt suPHP và suexec bằng cách sử dụnga2enmod
sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5
sudo /etc/init.d/apache restart
Tiếp theo sẽ đến tập tin cấu hình. Tôi đã tạo ra nhiều công cụ tự động tạo các tệp cấu hình mỗi khi tôi thêm một trang web mới; tuy nhiên, đây là mẫu cơ bản tôi sử dụng:
<VirtualHost *:80>
ServerAdmin [EMAIL]
ServerName [DOMAIN]
ServerAlias www.[DOMAIN] [DOMAIN]
DocumentRoot /home/[USER]/domains/[DOMAIN]/html
<Directory /home/[USER]/domains/[DOMAIN]>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
</Directory>
ErrorLog /home/[USER]/domains/[DOMAIN]/logs/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /home/[USER]/domains/[DOMAIN]/logs/access.log combined
SuexecUserGroup [USER] [USER]
suPHP_UserGroup [USER] [USER]
suPHP_ConfigPath /home/[USER]/etc
</VirtualHost>
Điều này thiết lập ghi nhật ký cho tên miền đó, gốc tài liệu và tất cả các nhu cầu cơ bản khác để tên miền hoạt động. Tôi đặt các tệp này trong /etc/apache2/sites-available/
tên thường được đặt [USER]-[DOMAIN]
và bật / tắt chúng a2ensite
như thế:
sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]
Sau mỗi lần sửa đổi tệp cấu hình, Apache sẽ cần được tải lại
sudo /etc/init.d/apache reload
Mặc dù có vẻ như rất nhiều để thiết lập mức độ linh hoạt đạt được, theo tôi, vượt xa thời gian thiết lập. Mặc dù bạn chỉ cần một máy chủ web người dùng duy nhất, nhưng trong tương lai nếu bạn muốn bất kỳ thứ gì ngoài máy chủ web người dùng, bạn sẽ cần thực hiện thêm các hành động (hoặc chỉ bỏ bảo mật cùng nhau) để làm như vậy.