Instalar el servidor web Apache
Hace un tiempo actualicé mi ubuntu a 13.10 y luego la instalación de apache php se arruinó. Así que tuve que reinstalarlo rápidamente para continuar trabajando en mis proyectos php.
Apache está en los repositorios de ubuntu, por lo que se puede instalar sin mucho esfuerzo. Aquí está el comando rápido que necesita para disparar a la terminal.
$ sudo apt-get install apache2
Apache por defecto se configura rápidamente para que pueda abrirlo desde el navegador con la url localhost
http://localhost/
Iniciar/Detener apache
Para iniciar o detener el servidor web apache desde la línea de comandos, use los siguientes comandos.
# Start web server $ sudo service apache2 start # Stop the web server $ sudo service apache2 stop # Restart the web server $ sudo service apache2 restart # Reload configuration without restarting $ sudo service apache2 reload
El directorio raíz web predeterminado es /var/www. Entonces, cualquier archivo que se coloque en este directorio es accesible desde la url localhost. Más adelante comprobaremos cómo cambiar el directorio raíz web predeterminado
Para verificar qué versión de apache está instalada, use el comando apache2 con la opción v/
$ apache2 -v Server version: Apache/2.4.6 (Ubuntu) Server built: Aug 9 2013 14:28:56
Localizar archivos de configuración
Para obtener más información sobre cómo se configura Apache exactamente en su sistema, use el comando apache2ctl.
$ apache2ctl -V AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Server version: Apache/2.4.6 (Ubuntu) Server built: Aug 9 2013 14:28:56 Server's Module Magic Number: 20120211:23 Server loaded: APR 1.4.8, APR-UTIL 1.5.2 Compiled using: APR 1.4.8, APR-UTIL 1.5.2 Architecture: 64-bit Server MPM: prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/etc/apache2" -D SUEXEC_BIN="/usr/lib/apache2/suexec" -D DEFAULT_PIDLOG="/var/run/apache2.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="mime.types" -D SERVER_CONFIG_FILE="apache2.conf" .....
Indica el nombre del archivo de configuración, el servidor mpm que se está utilizando y muchos otros detalles. Estos son útiles cuando se configura más apache.
El archivo de configuración principal se encuentra en /etc/apache2/apache2.conf
Solo anteponga HTTPD_ROOT con SERVER_CONFIG_FILE para obtener la ubicación real del archivo de configuración.
O hay otra opción S que también informa varios detalles de configuración sobre apache
$ apache2ctl -S AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message VirtualHost configuration: *:80 is a NameVirtualHost default server localhost (/etc/apache2/sites-enabled/000-default.conf:1) port 80 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:1) port 80 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:1) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www" Main ErrorLog: "/var/log/apache2/error.log" Mutex default: dir="/var/lock/apache2" mechanism=fcntl Mutex mpm-accept: using_defaults Mutex watchdog-callback: using_defaults Mutex rewrite-map: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www-data" id=33 not_used Group: name="www-data" id=33 not_used User: name="www-data" id=33 not_used Group: name="www-data" id=33 not_used
Toda esa información es bastante útil al configurar apache. Ahorra tiempo que de otro modo se gastaría en adivinar.
Hay muchos archivos de configuración relacionados con apache. El archivo de configuración principal es "apache2.conf" como se mencionó anteriormente. Este archivo de configuración tiene instrucciones para cargar más archivos de configuración. Aquí está la línea que lo hace.
# Include generic snippets of statements IncludeOptional conf-enabled/*.conf # Include the virtual host configurations: IncludeOptional sites-enabled/*.conf
Corrige el mensaje de error
Apache por defecto da el siguiente mensaje de error
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Para solucionar esto, establezca la variable ServerName en su nombre de host o nombre de dominio completo en el archivo de configuración de apache
$ sudo nano /etc/apache2/apache2.conf
Agregue la siguiente línea al final
ServerName yourhostname
Recargar la configuración de Apache
$ sudo service apache2 reload
Cambiar directorio raíz web
Para cambiar el directorio raíz web, debemos cambiar la configuración en los archivos de configuración "habilitados para sitios". Como práctica estándar, se crea un archivo de configuración separado dentro del directorio habilitado para sitios para cada host virtual.
Un host virtual es un dominio. Entonces puede tener múltiples dominios servidos por apache. En este ejemplo, sin embargo, solo usamos el archivo de configuración predeterminado.
Debe haber un archivo llamado 000-default.conf dentro del directorio /etc/apache2/sites-enabled. Si no está allí, cópielo de /etc/apache2/sites-available. El archivo se ve así inicialmente.
<VirtualHost *:80> ... #ServerName www.example.com ServerAdmin [email protected] DocumentRoot /var/www # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ... </VirtualHost>
Cambie la ruta de DocumentRoot a la nueva raíz web que desea usar. Guarde el archivo y reinicie apache.
$ sudo service apache2 restart
Ahora intente acceder a localhost. Si no funciona, verifique el registro de errores ubicado en
$ cat /var/log/apache2/error.log
A partir de Apache 2.4.3 existe una función de seguridad que evita que apache acceda a otros directorios. Y luego, la URL del host local mostraría el mensaje de error "Prohibido" y el registro de errores contendría un mensaje como este
[Sun Nov 03 11:25:24.521491 2013] [authz_core:error] [pid 6950] [client 127.0.0.1:41078] AH01630: client denied by server configuration: /var/www/phpinfo.php
El error significa que apache no puede acceder al directorio raíz web debido a alguna configuración. Para solucionar esto, agregue lo siguiente a la configuración de vhost
<Directory "/var/www2"> Order allow,deny Allow from all # New directive needed in Apache 2.4.3: Require all granted </Directory>
The "Require" directive fixes the problem. Newer version of Apache (2.3+) require the "Require" directive to allow access.
El archivo final 000-default.conf debería verse así
<VirtualHost *:80> ... #ServerName www.example.com ServerAdmin [email protected] DocumentRoot /var/www2 # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ... # New directive needed in Apache 2.4.3: <Directory "/var/www2"> Order allow,deny Allow from all # New directive needed in Apache 2.4.3: Require all granted </Directory> </VirtualHost>
Ahora reinicie apache nuevamente y el nuevo directorio raíz web finalmente debería funcionar.
Agregar más vhosts o dominios
Para agregar más hosts virtuales, simplemente cree más archivos de configuración como 000-default.conf y asígnele cualquier nombre que no tenga la extensión conf. Establezca un ServerName único en cada archivo y asigne a cada host un directorio raíz web separado.
Alternativamente, cree un archivo de configuración en el directorio de sitios disponibles y use el comando a2ensite para habilitar el sitio. Creará los enlaces simbólicos necesarios en el directorio "habilitado para sitios".
Primero cree un archivo de configuración copiando el archivo de configuración predeterminado.
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mysite.conf
Edite el archivo de configuración según sea necesario. Lo importante a cambiar es la raíz del documento para el nuevo sitio.
Luego habilítelo usando el comando a2ensite
$ sudo a2ensite mysite
Reinicie apache. Y el nuevo sitio debería funcionar bien.
Habilitar archivo htaccess
El archivo htaccess permite modificar varios parámetros de configuración de apache por directorio en tiempo de ejecución. Por defecto, Apache no está configurado para usar el archivo htaccess. Para hacerlo, simplemente agregue la siguiente línea en la sección Directorio que se muestra arriba.
AllowOverride FileInfo
Lo anterior le indicará a apache que comience a leer los archivos htaccess y analice las instrucciones de configuración escritas en ellos.
La configuración final podría verse así -
<Directory "/var/www2"> Order allow,deny Allow from all AllowOverride FileInfo # New directive needed in Apache 2.4.3: Require all granted </Directory>
Después de instalar apache, es posible que desee instalar otras cosas como php, mysql, phpmyadmin, según lo que necesite. ¡¡Así que adelante y disfruta!!