Setiap pengaturan berbeda. Bagi saya, saya memiliki banyak pengguna di server yang masing-masing meng-host situs web, untuk Anda, Anda mungkin tidak perlu membuat lebih dari satu pengguna di sistem. Namun, jika Anda mengelola beberapa situs web di server ini, pengaturan ini akan membantu Anda mengelola, mengkonfigurasi, dan men-debug setiap domain dengan cara yang lebih mudah daripada pengaturan LAMP standar. Agar hal itu terjadi, saya menggunakan beberapa perangkat oleh Apache untuk mengatasi kesalahan izin.
Pertama, ini adalah struktur dokumen yang saya gunakan:
/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs
Setiap pengguna memiliki akun sendiri dengan folder domain (yang saya tambahkan /etc/skel
sehingga dibuat setiap waktu. Setiap domain memiliki folder sendiri di domains
folder dengan html
folder (Saya punya alasan untuk ini, terutama agar domain dapat memiliki file web di luar dari ranah publik) Jangan ragu untuk memodifikasi struktur ini sesuai keinginan Anda, ingatlah untuk membawa perubahan-perubahan tersebut di seluruh posting ini.
Kedua, saya meng-host banyak situs PHP jadi saya menggunakan suPHP dalam konfigurasi saya. Secara default paket arsip standar tidak mengaktifkan flag kompilasi yang tepat sehingga menghasilkan versi suPHP yang kurang aman. Saya telah membuat paket suPHP saya sendiri yang saya gunakan di server saya, instruksi instalasi di bawah ini. suPHP memungkinkan Anda untuk menentukan skrip PHP apa yang harus dijalankan oleh pengguna (antara lain termasuk: custom php.ini untuk setiap situs, dll). Saya juga mengaktifkan suExec untuk Apache - lebih lanjut menghapus kebutuhan untuk memiliki kepemilikan kepada pengguna data-www (pengguna yang saya benci).
Pertama, pastikan Anda memiliki Apache, dan semua layanan lainnya diinstal pada server Anda. Pastikan mereka setidaknya berfungsi. Setelah itu saya merekomendasikan untuk menginstal suphp-common dan modul libapache2-mod-suphp yang diperlukan (Informasi lebih lanjut: Apa itu PPA dan bagaimana cara menggunakannya? ). Kemudian, setelah menginstal, aktifkan suPHP dan suexec menggunakana2enmod
sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5
sudo /etc/init.d/apache restart
Selanjutnya akan muncul file konfigurasi. Saya telah membuat berbagai alat yang secara otomatis menghasilkan file konfigurasi setiap kali saya menambahkan situs baru; namun, inilah templat dasar yang saya gunakan:
<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>
Ini mengatur logging untuk domain itu, root dokumen, dan semua kebutuhan dasar lainnya untuk domain untuk beroperasi. Saya menempatkan file-file ini dalam /etc/apache2/sites-available/
nama yang khas [USER]-[DOMAIN]
dan mengaktifkan / menonaktifkannya dengan a2ensite
seperti:
sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]
Setelah setiap modifikasi ke file konfigurasi, Apache perlu dimuat ulang
sudo /etc/init.d/apache reload
Meskipun mungkin tampak seperti banyak mengatur jumlah fleksibilitas yang didapat, menurut saya, jauh melebihi waktu setup. Meskipun Anda hanya memerlukan server web pengguna tunggal, di masa depan jika Anda menginginkan sesuatu selain server web pengguna tunggal, Anda perlu melakukan tindakan lebih lanjut (atau hanya menggabungkan keamanan secara bersamaan) untuk melakukannya.