Native MAMP Web Server OSX 10.6.8 con Macports

Macports Logo
Macports Logo

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.

OSX 10.6 DMG

 

Nos aparecerá la siguiente pantalla

Instalaciones Opcionales OSX 10.6

En optional Installs podemos instalar X11.

setup 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.

XQuartz

Después instalamos Xcode con las opciones por defecto.

Xcode

Ahora es el momento de actualizar todo desde preferencias del sistema

Paso 2. Nombre del Host.

Desde la terminal utilizamos los siguientes comandos.

sudo scutil --set ComputerName "newname"
sudo scutil --set LocalHostName "newname"
sudo scutil --set HostName "fqdn"
dscacheutil -flushcache

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.

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

MySQL Community Server

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

Preferencias del sistema

Damos click encima de MySQL y activamos Automatically Start MySQL Server on Startup y Start MySQL Server

mamp3

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.

sequel-pro-1.0

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.

sequel1

El interface que nos aparece es el siguiente

sequel2

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.

 

Paso 6.- Instalar Macports.

Puedes descargar macports desde http://www.macports.org/install.php. Procedemos a la instalación.

macportssetup

 

Ahora abrimos el terminal y escribimos:

sudo nano /etc/paths

Escribe tu password y después copia y pega lo siguiente:

/opt/local/bin
/opt/local/sbin

guardamos el archivo: alt + x y despues y Reiniciamos la computadora y a continuación ejecutamos en el terminal

sudo port -v selfupdate
sudo port upgrade outdated

Estas instrucciones nos serán útiles para actualizar el software de macports a la manera apt-get.

Paso 7. Instalar Apache

Es muy importante desactivar el servidor web de OSX si lo tenemos activado antes de instalar el apache2 de macports.

Para instalar ejecutamos:

sudo port install apache2

 

Para ejecutar apache

sudo port load apache2

 

MacPorts ha creado un archivo denominado ~/.profile que hay que editar para añadir la siguiente línea

alias apache2ctl='sudo /opt/local/apache2/bin/apachectl'

 

Recargamos el .profile para que tenga efecto en la terminal

source ~/.profile

E iniciamos Apache.

apache2ctl start

Ahora es el momento de comprobar que funciona en la archiconocida dirección http://localhost . Deberemos ver el mensaje it works.

Paso 8. PHP 5.4

Instalamos PHP54

sudo port install php54
sudo port install php54-apache2handler
cd /opt/local/etc/php54 && sudo cp php.ini-production php.ini

Instalamos un montón de extensiones.

sudo port install php54-apc php54-curl php54-gd php54-http php54-iconv php54-imagick php54-mbstring php54-mcrypt php54-memcached php54-mysql php54-openssl php54-tidy

Testeamos php con el siguiente comando

php54 -i

Nos saldrá un montón de líneas de información

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

sudo cp /usr/local/mysql-5.6.17-osx10.6-x86/support-files/my-default.cnf /my.cnf

Preparamos mycnf, donde basedir es el directorio que nos hada la consulta de variables anterior

sudo cp /usr/local/mysql-5.6.17-osx10.6-x86/support-files/my-default.cnf /my.cnf

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

Paso 13. Mas extensiones PHP.

PHP-PEAR

Ejecutamos:

mkdir tmp
cd tmp
curl http://pear.php.net/go-pear.phar -o go-pear.phar
sudo php go-pear.phar

Tendrás que cambiar algunas opciones de configuración, la opción #1 y #4.

Presionamos 1 – Installation base ($prefix) – e introducimos:

/opt/local/lib/php54

Press 4 – Binaries directory – introducimos:

/opt/local/bin
Damos enter hasta que salimos de la utilidad de configuración.

3. Editamos /opt/local/etc/php54/php.ini y buscamos la expresión include_path y añadimos

include_path = ".:/opt/local/lib/php54/share/pear"

Luego ejecutamos

apache2ctl restart

PEAR está instalado, ahora vamos a instalar algo de software:

Unit tests

sudo pear install pear.phpunit.de/PHPUnit

Documentation generator

sudo pear install pear.apigen.org/apigen

Reiniciamos Apache

sudo /opt/local/apache2/bin/apachectl restart

Ahora podemos iniciar Apache y Memcached, con los siguientes comandos:

sudo port load apache2
sudo port unload apache2

sudo port load memcached
sudo port unload memcached

// memcached debugging, iniciar con:

memcached -vv

Paso 14. Virtual Hosts.

Podemos configurar virtualhosts, pero en mi caso prefiero trabajar con subdirectorio. En los enlaces que os dejo podéis ver como configurarlos.

Thanks to:

 

Owncloud en Ubuntu 12.04 LTS

owncloud-logo1

¿Qué es OwnCloud?

Owncloud es una solución de almacenamiento vía Internet similar a Dropbox y a Google Drive. Permite incluso conectarse a estos servicios  a través de su interface web.

Podemos acceder a nuestra información a través del navegador, o a través de una aplicación cliente disponible para Windows, Osx y Linux, además de para Android e iOs.

Pero además es:

  • Servidor webdav: para poder acceder a nuestros archivos a través de apache.
  • Servidor caldav: para poder compartir nuestro calendario, citas, reuniones, etc.
  • Servidor cardav: para poder compartir nuestros contactos.
  • Servidor ampache: para poder acceder a nuestro contenido multimedia a través de clientes de streaming.

Ubuntu LAMP (Linux+Apache+Mysql+PHP)

Nota: os recomiendo que echéis un vistazo a dos de mis posts si instalais el servidor desde cero:

Lo primero que necesitamos es instalar el servidor LAMP de ubuntu. Podemos hacerlo directamente en la instalación del Ubuntu Server, o posteriormente con los siguientes comandos:

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install lamp-server^

 

El carácter “^” es importante para que el tipo de instalación del servidor web sea apropiado. En la instalación nos pedirá que introduzcamos el password del root de MySQL. Asegúrate de introducir una buena password que sea fácil de recordar.

Owncloud utiliza los archivos .htaccess de Apache por razones de seguridad. Para poder usarlos necesitamos activar dos módulos con los siguientes comandos

sudo a2enmod rewrite
sudo a2enmod headers

 

Además tenemos que cambiar el archivo de configuración de apache para que reescriba las reglas adecuadamente. Con lo cual ejecutamos el siguiente comando

sudo nano /etc/apache2/sites-available/default

Una vez quí debemos cambiar la línea

AllowOverride None

Por

AllowOverride All

 

Finalmente reiniciamos apache

sudo service apache2 restart

 

Asegurar MySQL

 

Teclea lo siguiente para asegurar la instalación de MySQL

sudo mysql_secure_installation

Cuando te pregunte el password del root de MySQL, introduce el que metiste en el apartado anterior.

Cuando te pregunte si quieres cambiar el pasword del root, teclea “n” de no.

Cuando te pregunte si quieres eliminar los usuarios anónimos, tecle “s” de si

Cuando te pregunte si quieres deshabillitar el acceso remoto del root, teclea “s”.

Cuando te pregunte si quieres eliminar la test database, tecle “s”.

Cuando te pregunte si quieres recargar la tabla de privilegios, tecle “s”.

 

Ya tenemos asegurado MySQL.

 

Crear la base de datos para OwnCloud

 

Primero accedemos como root a MySql en el terminal con el siguiente comando

mysql -u root -p

 

Una vez dentro creamos la base de datos

CREATE DATABASE owncloud;

Después creamos un nuevo usuario con los privilegios apropiados para la nueva base de datos (Sustituimos some_password, por una que decidamos nosotros.)

GRANT ALL ON owncloud.* TO 'owncloud'@'localhost' IDENTIFIED BY 'some_password';
quit

 

Instalar OwnCloud

 

Instalamos paquetes necesarios para owncloud

sudo apt-get install php5-gd php-xml-parser php5-intl smbclient curl libcurl3 php5-curl

A 28 DE OCTUBRE DEL 2013, EL PAQUETE DE INSTALACIÓN DE OWNCLOUD HA CAMBIADO EL DIRECTORIO DE INSTALACIÓN FUERA DE /VAR/WWW. POR TANTO LAS LÍNEAS EN ROJO A CONTINUACIÓN NO LAS USÉIS. SEGUIR EL PROCEDIMIENTO DESCRITO EN https://www.digitalocean.com/community/articles/how-to-setup-owncloud-5-on-ubuntu-12-10

Añadimos la llave del repositorio de apt con los siguientes comandos:

wget http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/Release.key

sudo apt-key add - < Release.key 
rm Release.key

 

Después añadimos el repositorio de apt e instalamos OwnCloud

sudo echo 'deb http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/ /' >> /etc/apt/sources.list.d/owncloud.list 

sudo apt-get update

sudo apt-get install owncloud
sudo service apache2 restart

 

El resto de la instalación se hace a través del navegador, y nos permite elegir entre otras cosas, el directorio donde se guardarán los datos de usuario que carguemos a través del navegador.

 

Si decidimos elegir un directorio distinto al que nos indica por omisión, a este directorio hay asignarle el usuario www-data con el siguiente comando

sudo chown -R www-data:www-data /ruta/al/directorio/de/datos/de/owncloud

 

La dirección de nuestro owncloud será http://host/owncloud.

Si tenemos un fqdn (fully qualified domain name) lo introducimos en vez de host. Podemos obtener uno gratuito en dyndns.com.

Si no tenemos el fqdn, introducimos la ip del servidor.

Si accedemos a él, desde el propio servidor, en vez de host, ponemos localhost.

Y nos aparecerá una pantalla como esta

owncloud1

Le damos a Avanzado, y seleccionamos Configurar la base de datos: MySQL

owncloud3

En nombre de usuario, introducimos el nombre que queramos para el usuario administrador de owncloud, así como la contraseña.

En directorio de almacenamiento puedo elegir el que quiera, pero recuerdo, debemos asignarle el usuario www-data.

En configurar la base de datos introducimos el usuario, password y nombre de la base de datos que hemos creado para owncloud.

 

Y ya tenemos instalado nuestro servidor owncloud.

 

Antes de salir, recomiendo entrar en personal y añadir nuestro correo electrónico, para poder recuperar la contraseña en caso de que la perdamos.ownpost1

 

Últimos ajustes

Ajustes de php

Necesitamos configurar php para que admita archivos grandes. Podemos hacerlo a través del terminal editando los archivos. /etc/php5/apache2/php.ini /etc/php5/cli/php.ini y pero es más cómodo y seguro hacerlo a través del módulo de webmin.

Para instalar webmin, vamos a http://webmin.com y descargamos el instalador con el comando wget. En el momento actual la última versión es la 1.650

wget http://netcologne.dl.sourceforge.net/project/webadmin/webmin/1.650/webmin_1.650_all.deb

Instalamos algunos paquetes necesarios

sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python

Instalamos webmin y borramos el paquete

sudo dpkg -i webmin_1.650_all.debrm webmin_1.650_all.deb

Ahora podemos acceder al interface de webmin a través del navegador, en la dirección

https://ip_servidor:10000 (si accedemos desde el propio servidor https://localhost:10000)

Introducimos nuestro usuario y password y ya estamos dentro.

En el menú otros, seleccionamos PHP Configuration:

Damos al enlace Manage, y después den Resource Limits en cada uno de los ficheros y modificamos para que quede así.

phpconf2

Como maximum memory allocation, recomiendo poner una cuarta parte de la ram del servidor (pero es cuestión de ir probando).

Ajustes del .htaccess

Abrimos el .htaccess de owncloud con el siguiente comando

sudo nano /var/www/owncloud/.htaccess

Y modificamos las siguientes líneas

php_value upload_max_filesize 513Mphp_value post_max_size 513Mphp_value memory_limit 512M

Para que queden como los valores que modificamos en php.

php_value upload_max_filesize 20000Mphp_value post_max_size 20000Mphp_value memory_limit 2048M

Y reiniciamos apache

sudo service apache2 restart

Si queréis activar la encriptación SSL, lo podéis hacer siguiente el siguiente post.

 

 

Gracias a:

https://www.digitalocean.com/community/articles/how-to-setup-owncloud-5-on-ubuntu-12-10

http://refugeeks.com/owncloud-setup-guide/