Nota: Configuraremos un servidor básico para correr Virtualbox, y nunca accederemos a él desde Internet directamente, sino a través de una máquina virtual, para aumentar la seguridad del sistema. Por tanto, la configuración que proponemos es exclusivamente para un entorno doméstico al que de momento no accederemos directamente a través de Internet por el puerto 80.
Instalar virtualbox
Vamos a configurar /etc/apt/sources.list para incluir el repositorio de Oracle:
$ sudo nano /etc/apt/sources.list
Y añadimos la siguiente línea
deb http://download.virtualbox.org/virtualbox/debian xenial contrib
$ chmod +x upvboxext.sh ## para hacerlo ejecutable.
$ sudo ./upvboxext.sh
Añadir el usuario que utilizará virtualbox.
Como no vamos a entrar por Internet directamente configurar al usuario con permisos sudo (user1) para gestionar vuestras propias máquinas virtuales y darles acceso a todo los archivos. Para otras configuraciones, mirar el siguiente link.
MAMP significa Mac + Apache + MySQL + PHP. Es decir, vamos a montar las ultimas versiones de Apache, PHP y MySQL para montar un servidor web a la úlltima. La gran ventaja de urilizar Macports para realizar esta instalación es que contaremos con el último software libre en nuestro querido Snow Leopard.
Para acceder a nuestro servidor desde internet es necesario que el router haga un reenvío de puertos a nuestro ordenador, o que asignemos la ip de nuestro ordenador como DMZ en el router, pero en este segundo caso es obligatorio que activemos el firewall de OSX dejando abiertos los puestos que vamos a usar, en nuestro caso el 80 para http y el 443 para https.
Podemos incluso hacer un doble firewall con reenvío de puertos en el router y capado de puertos en el mac. Yo en mi caso tengo montado littlesnitch en el mac que controla todo lo que entra y sale y te avisa en tiempo real permitiéndote generar reglas según los programas que uses de forma inmediata.
Paso 1. Instalación y Actualización de OSX.
Primero instalamos Snow Leopard marcando la casilla de X11. Si no lo hemos marcado en el momento de la instalación lo podemos hacer después desde el disco de instalación.
Damos click en la carpeta Instalaciones opcionales.
Nos aparecerá la siguiente pantalla
En optional Installs podemos instalar X11.
También podemos instalar Xquartz, proyecto del que deriva el X11 de Mac, para tener todo actualizado. Para descargar la aplicación haz click en este enlace. Después de instalarlo relogea o reinicia el mac.
Después instalamos Xcode con las opciones por defecto.
Ahora es el momento de actualizar todo desde preferencias del sistema
Paso 2. Nombre del Host.
Desde la terminal utilizamos los siguientes comandos.
ComputerName se refieren al nombre de la máquina, el LocalHostName a nombre del ordenador para nuestra red interna, y HostName el fqdn o nombre de dominio de internet que podemos obtener de forma gratuita en dyndns.org.
sudo nano /etc/hosts
Debajo de la línea que empieza por 127.0.0.1 ponemos la ip de la interfaz de red de nuestro servidor que escucha internet (y que puede ser también la que usamos en la intranet) seguida del fqdn y del nombre local. Por ejemplo
192.168.1.10 nombre.com nombre
Ctrl+x para salvar y después de esto reiniciamos el Mac
Paso 3. Instalar textwrangler.
Aunque podríamos editar los archivos de configuración con nano, con vi o con cualquier otro editor, textwrangler hará que toda esta tarea y la de configuración posteriores sea mucho más sencilla. Podéis descargarlo gratuitamente desde este enlace.
Paso 4. Instalación de MySQL
Podríamos instalarlo via macports, pero es mucho mejor instalar el MySQL Community Server, sobre todo por un par de utilidades. En el momento de esta instalación la versión es 5.6.17. Damos click en el siguiente enlace y elegimos nuestra versión de OSX. En nuestro caso la 10.6 y descargamos en formato dmg. Si vuestro mac corre el kernel a 32bits bajaros la versión a 32, si corre el kernel a 64bits entonces la versión a 64. En mi caso tengo un Mac Pro 1.1 (de primera generación) e instalaré la versión a 32bits. Aseguraté de descargar la versión correcta. Si te equivocas para borrar MySQL sigue las instrucciones del siguiente enlace.
Una vez descargado el dmg, lo abrimos y vemos
Instalamos los tres paquetes en el orden en que aparecen. Tras la instalación podemos is a preferencias del sistemas y nos aparecerá un nuevo icono
Damos click encima de MySQL y activamos Automatically Start MySQL Server on Startup y Start MySQL Server
Para ver la versión instalada de MySQL tecleamos en el terminal
/usr/local/mysql/bin/mysql -v
para salir en la línea de comandos teclea
quit
para salir en la línea de comandos teclea
Después de la instalación y para no tener que teclear la ruta a mysql editamos
cd ; nano .bash_profile
y añadimos
export PATH="/usr/local/mysql/bin:$PATH"
Ctr+X para salir y salvamos. Para activarlo ejecutamos en el terminal
source ~/.bash_profile
Para probar que funciona ejecutamos en el terminal
mysql -v
Ahora vamos a dar password al root
mysqladmin -u root password 'aqui_tu_password'
No olvides las comillas simples!!!!!
Para acceder a MySQL como root teclea:
mysql -u root -paqui_tu_password
Ojo!!!! No hay espacio entre -p y aqui_tu_password
Para asegurar MySQL teclea:
sudo mysql_secure_installation
Te preguntará
Si quieres cambiar la password del root: como la acabamos de dar de alta en principio no hace falta.
Si quieres eliminar a los usuarios anonimos: Yes
Si quieres desautorizar al root para que loguee remotamente: Yes
Si quieres eliminar la test database: yes
Si quieres recargar los privilegios de las tablas: yes
Después de esto puedes interactuar directamente en la línea de comandos de MySQL con:
mysql -u root -p[password]
Paso 5.- Instalamos el gestor de bases de datos Sequel Pro.
Es muy similar a phpmyadmin, solo que se ejecuta directamente como un programa en nuestro escritorio. Podemos descargarla gratuitamente desde la web del desarollador en el siguiente enlace. Nos bajamos el dmg, lo abrimos y arrastramos el icono a la carpeta aplicaciones.
Cuando lo abrimos seleccionamos la pestaña socket, introducimos los datos como veis y el password del root de MySQL.
El interface que nos aparece es el siguiente
En el menú de arriba podemos añadir nuevas bases de datos, y en el botón de usuarios, añadir usuarios y asignarles permisos para cada base de datos. El programa es muy intuitivo.
Editamos con textwrangler el archivo /opt/local/etc/php54/php.ini y modificamos lo siguiente:
1. Buscamos la expresión
;date.timezone =
y la sustituimos por
date.timezone = "Europe/Madrid"
2. Incrementamos los límites de PHP (esto es opcional, depende del uso que vayas a dar al servidor. En mi caso para owncloud prefiero maximizar los recursos) .
Localizamos
memory_limit = 128M
y la sustituimos por
memory_limit = 2048M
Localizamos
upload_max_filesize = 2M
y la sustituimos por
upload_max_filesize = 20000M
Localizamos
max_input_time = 60
y la sustituimos por
max_input_time = 300
Localizamos
post_max_size = 8M
y la sustituimos por
post_max_size = 20000M
Localizamos
max_execution_time = 30
y la sustituimos por
max_execution_time = 300
3. Reiniciamos apache
apache2ctl restart
Paso 9. Conectar Apache con PHP
Sacamos copia de seguridad del archivo de configuración de apache
cd /opt/local/apache2/conf
sudo cp httpd.conf httpd.conf.backup
Activamos el modulo php en Apache
cd /opt/local/apache2/modules
sudo /opt/local/apache2/bin/apxs -a -e -n php5 mod_php54.so
Editamos con textwrangler el archivo /opt/local/apache2/conf/httpd.conf y modificamos lo siguiente:
1. Buscamos la expresión AddType y después de los # añadimos
AddType text/html .php
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
2. Buscamos la expresión AddHandler (justo unas líneas más abajo) y añadimos
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .phps
3. Sustituimos la línea
DirectoryIndex index.html
por
DirectoryIndex index.html index.php
4. De forma opcional pero para incrementar la seguridad del servidor sustituimos
Options Indexes FollowSymLinks
por
Options FollowSymLinks
5. Eliminamos la extensión php5.so si existe
6. Al final del archivo añadimos
#
# Include PHP configurations
#
Include conf/extra/mod_php54.conf
7. En la sección ServerName ponemos el fqdn de nuestro servidor
ServerName fqdn:80
8.Chequeamos que la sintaxis es correcta/opt/local/apache2/bin/httpd -t
8. salvamos y reiniciamos Apache
apache2ctl restart
Paso 10. testear PHP+Apache
El directorio raiz de las web de apachem es /opt/local/apache2/htdocs y vamos a convertir el index.html a index.php mas una pequeñas modificaciones.
cd /opt/local/apache2/htdocs
sudo mv index.html index.php
Editamos el archivo para que quede
<html>
<body>
<?php
It works!
phpinfo(); ?>
</body>
</html>
Salvamos el archivo y vamos a http://127.0.0.1 para ver si funciona todo ok.
Paso 11. Conectarlo todo.
Vamos a hacer primero una consulta a MySQL para obtener dos datos que necesitaremos en seguida: basedir y sockets. Anotalos para utilizarlos mas adelante. La instrucción es la que sigue y deberemos introducir la password de MySQL
mysqladmin -u root -p variables
Los resultados obtenidos en mi instalación son:
basedir /usr/local/mysql
socket /tmp/mysql.sock
Preparamos mycnf, donde basedir es el directorio que nos hada la consulta de variables anterior
Editamos /opt/local/etc/php54/php.ini y en las líneas en las que aparece default_socket, añadimos el socket que nos ha dado variables. En mi caso
pdo_mysql.default_socket = /tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
Guardamos y reiniciamos Apache
apache2ctl restart
Comprobamos la conexión
php54 -i | grep -i 'mysql'
Y ahora el test definitivo, editamos el archivo index.php que hemos editado antes y lo dejamos como
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'MYSQL_ROOT_PASSWRD';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if ($conn) {
echo 'CONNECT OK';
} else {
die ('Error connecting to mysql');
}
$dbname = 'mysql';
mysql_select_db($dbname);
Reemplazamos MYSQL_ROOT_PASSWRD con el password del root de MySQL. Al acceder a http://127.0.0.1 nos tiene que aparecer el mensaje CONNECT OK. Inmediatamente borramos el archivo!!!!!!
sudo rm /opt/local/apache2/htdocs/index.php
cd /opt/local/apache2/htdocs/
cp index.html.sample index.html
Paso 12. Revisar
Reiniciamos y ditamos de nuevo ~/.profile y verificamos que está
alias apache2ctl='sudo /opt/local/apache2/bin/apachectl'
En caso contrario la volvemos a añadir (Macports puede haberla modificado) y volvemos a ejecutar
source ~/.bash_profile
y después ejecutamos
sudo port load apache2
Este howto es para todos aquellos que quieran servir páginas web desde su casa, ya sea publicando directamente en el servidor o instalando
algún portal en php como wordpress o joomla.
El primer paso es dar de alta un dominio de segundo nivel en www.dyndns.com o alguna página similar. Hay que tener en cuenta que las ip’s asignadas a los usuarios caseros suelen ser
dinámicas, por lo que deberemos estar pendientes de que la ip que damos de alta en dyndns sea la correcta, y si nos la cambia nuestro ISP, deberemos cambiarla en dyndns. Continuar leyendo «Servidor web casero con Apache, Php y Mysql en debian»
Este howto es para todos aquellos que quieran servir páginas web desde su casa, ya sea publicando directamente en el servidor o instalando algún portal en php como wordpress o joomla.
El primer paso es dar de alta un dominio de segundo nivel en www.dyndns.com o alguna página similar. Hay que tener en cuenta que las ip’s asignadas a los usuarios caseros suelen ser dinámicas, por lo que deberemos estar pendientes de que la ip que damos de alta en dyndns sea la correcta, y si nos la cambia nuestro ISP, deberemos cambiarla en dyndns.
Con el nombre de dominio que hemos obtenido en dyndns (en el presente ejemplo server1.example.com), procedemos a nombrar nuestra debian, respecto a nuestra ip externa (la que no es 127.0.0.1).
$ nano /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.0.100 server1.example.com server1
# The following lines are desirable for IPv6 capable hosts