Cada configuración es diferente. Para mí, tengo muchos usuarios en un servidor que cada uno aloja sitios web; para usted, es probable que no necesite crear más de un usuario en el sistema. Sin embargo, si administra varios sitios web en este servidor, esta configuración lo ayudará a administrar, configurar y depurar cada dominio de una manera más fácil que una configuración LAMP estándar. Para que eso suceda, utilizo varios dispositivos de Apache para evitar errores de permisos.
Primero, esta es la estructura del documento que uso:
/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs
Cada usuario tiene su propia cuenta con una carpeta de dominios (que agregué para /etc/skel
que se cree cada vez. Cada dominio tiene su propia carpeta en la domains
carpeta con una html
carpeta (tengo mis razones para esto, principalmente para que los dominios puedan tener archivos web fuera) del ámbito público). Siéntase libre de modificar esta estructura como mejor le parezca, solo recuerde llevar esos cambios a lo largo de esta publicación.
En segundo lugar, alojo muchos sitios PHP, así que uso suPHP en mi configuración. Por defecto, el paquete de archivo estándar no tiene habilitado el indicador de compilación adecuado, lo que da como resultado una versión menos segura de suPHP. Hice mi propio paquete suPHP que utilizo en mis servidores, las instrucciones de instalación a continuación. suPHP le permite definir a qué scripts PHP de usuario se deben ejecutar (entre otras cosas, incluyendo: php.ini personalizado para cada sitio, etc.). También habilito suExec para Apache, eliminando aún más la necesidad de tener propiedad del usuario www-data (un usuario que desprecio).
Primero asegúrese de tener Apache y todos los demás servicios instalados en su servidor. Asegúrese de que al menos estén trabajando. Después de eso, recomiendo instalar suphp-common y el módulo libapache2-mod-suphp requerido (Más información: ¿Qué son los PPA y cómo los uso? ). Luego, después de instalarlos, active suPHP y suexec usandoa2enmod
sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5
sudo /etc/init.d/apache restart
Luego vendrá el archivo de configuración. He creado varias herramientas que generan automáticamente los archivos de configuración cada vez que agrego un nuevo sitio; Sin embargo, aquí está la plantilla básica que uso:
<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>
Esto configura el registro para ese dominio, la raíz del documento y todas las demás necesidades básicas para que el dominio funcione. Coloco estos archivos en /etc/apache2/sites-available/
nombres típicamente [USER]-[DOMAIN]
y los habilito / deshabilito a2ensite
así:
sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]
Después de cada modificación en los archivos de configuración, Apache deberá recargarse con
sudo /etc/init.d/apache reload
Si bien puede parecer mucho configurar la cantidad de flexibilidad obtenida, en mi opinión, supera con creces el tiempo de configuración. Aunque solo necesita un servidor web de un solo usuario, en el futuro si alguna vez quisiera algo más que un servidor web de un solo usuario, necesitaría realizar más acciones (o simplemente abandonar la seguridad por completo) para hacerlo.