Activar Apache
- Abrir Terminal haciendo clic en la lupa de la esquina superior derecha de tu pantalla y buscando Terminal
- Escribir
sudo apachectl start
y pulsar enter - Abrir Safari (o el navegador que prefieras), escribe localhost en la barra de direcciones y pulsa enter
¿No te puedes creer que sea tan fácil? ¡Lo es! Ahora deberías ver It works! en el navegador.
Enciende PHP
El Mac ya viene con PHP, así que no necesitas instalarlo desde PHP.net. Antes de High Sierra (versión 10.13), Mac venía con PHP 5 instalado. Esto hacía que los usuarios se molestaran porque no venía con PHP 7, por lo que había que hacer un trabajo extra para actualizar de PHP 5 a PHP 7. Afortunadamente High Sierra ya viene con PHP 7.1!!!
- Abra el Terminal y escriba
sudo nano /etc/apache2/httpd.conf
y presione enter - Presione Ctrl+W lo que hará aparecer una búsqueda
- Busque php y presione enter. Verás lo siguiente:
- Borra el # de
#LoadModule php7_module libexec/apache2/libphp7.so
- Pulsa Ctrl+O seguido de Enter para guardar el cambio que acabas de hacer
- Pulsa Ctrl+X para salir de nano
- Escribe
sudo apachectl restart
y pulsa enter
Acabas de activar PHP 7. Gran trabajo hasta ahora!
Crear carpeta de sitios
- Haga clic en Finder en la esquina inferior izquierda de su pantalla y haga clic en Ir > Inicio la barra de navegación superior. Esto te llevará a tu directorio de inicio, que también será el nombre que tenga tu ordenador; en este caso es david.
- Crea una nueva carpeta y nómbrala Sitios (El icono de Safari que se muestra a continuación se añade automáticamente a la carpeta de Sitios como se muestra a continuación)
- Abre tu editor de texto favorito y crea un archivo llamado index.php con el siguiente código:
<?phpecho "Hello From Sites Folder!";phpinfo();?>
- Guarda index.php en la carpeta Sites que has creado
- Vuelve al Terminal y escribe
sudo nano /etc/apache2/httpd.conf
- Pulsa Ctrl+W para que aparezca search
- Busca Library y pulsa enter. Deberías ver esto:
- Sustituye las dos apariciones de
/Library/WebServer/Documents
por/Users/david/Sites
(en lugar de david utiliza tu nombre que se encuentra en la parte superior de tu terminal junto al icono de inicio) - Pulsa Ctrl+O seguido de Enter para guardar estos cambios
- Pulsa Ctrl+X para salir de nano
- Escribe
sudo apachectl restart
y pulsa enter
Vuelve a Safari y refresca la página de localhost y verás ¡Hola desde la carpeta de sitios! con información de PHP que muestra que se está utilizando PHP 7.
Instalar MySQL
- Vaya a https://dev.mysql.com/downloads/mysql
- Desplácese hacia abajo hasta que vea tres botones de descarga y haga clic en el que está al lado de DMG Archive
- Desplácese hacia abajo y haga clic en No thanks, just start my download
- Haga clic en el archivo descargado, haga doble clic en el archivo pkg, y vaya a través de la instalación que debe tener este aspecto:
- Una vez que llegue al final de la instalación, verá una ventana emergente que le da su nombre de usuario de MySQL (raíz) y la contraseña (8hxKsiIh?YMt). Tu contraseña será diferente. Copie la contraseña en un archivo de texto (o haga una captura de pantalla) y pulse OK. Haga esto ahora, ya que será un dolor para restablecer la contraseña si usted no lo sabe.
- Pulsa el logo de Apple en la parte superior izquierda de tu pantalla y ve a Preferencias del Sistema
- Pulsa sobre MySQL y verás que está desactivado
- Pulsa Iniciar Servidor MySQL para encenderlo y verás:
- Vuelve al Terminal y escribe
sudo /usr/local/mysql/bin/mysql -u root -p
- Cuando pulses intro te pedirá tu Contraseña. Esta es la contraseña que usas cuando te conectas a tu Mac
- Entonces dice Enter Password: que para mí es 8hxKsiIh?YMt (deberías usar la contraseña que copiaste antes en lugar de 8hxKsiIh?YMt). Verás esta pantalla:
- Escribe
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
y pulsa enter - Ve a https://www.sequelpro.com y descarga Sequel Pro. Esto es como phpMyAdmin, pero mejor porque es una aplicación de escritorio.
- Pasa por la instalación, abre Sequel Pro, e introduce 127.0.0.1 para el Host. Introduzca root para el nombre de usuario y newpassword para la contraseña. Pulse Conectar
- Haga clic en Elegir base de datos… en la parte superior izquierda seguido de Añadir base de datos…
- Déle el nombre mydb y pulse intro
- A continuación, haga clic en el signo más en la parte inferior izquierda para crear una nueva tabla. Nombra la tabla mytable y pulsa add
- Haz clic en el signo más justo encima de la palabra INDEXES y nombra el campo message. ¡Establece el tipo como VARCHAR y dale una longitud de 200.
- Haz clic en Content en la parte superior.
- Haz clic en el signo más en la parte inferior (el que está a la izquierda del signo menos)
- Dale a la nueva entrada un id de 1 y establece el mensaje como MySQL funciona perfectamente!
- Abre index.php en tu carpeta de Sitios y cambia el código a
<?php$con = new mysqli("127.0.0.1", "root", "newpassword", "mydb");$message = $con->query("SELECT message FROM myTable")->fetch_object()->message;$con->close();echo "$message <br/>";echo "Hello From Sites Folder!";phpinfo();
Obviamente este ejemplo es inmune a la inyección SQL, ya que no hay valores introducidos por el usuario. Sin embargo, si no entiendes las sentencias preparadas de MySQLi tan bien como te gustaría, echa un vistazo a este post para ver un excelente tutorial sobre cómo evitar la inyección SQL 😉. Hay incluso una versión de PDO, si lo prefieres más.
- Refresca localhost en Safari y deberías ver:
¡Genial! Ahora tienes MySQL funcionando, así que puedes usar localhost para almacenar información en bases de datos.
Haz que las URLs amigables con el SEO funcionen
En lugar de ir a localhost/profile.php?user=david, se ve mejor cuando puedes ir a localhost/profile/david. Hagamos que esto funcione habilitando mod_rewrite para poder usar RewriteRules.
- Vamos al Terminal y escribimos
sudo nano /etc/apache2/httpd.conf
seguido de pulsar enter - Pulsamos Ctrl+W, escribimos rewrite, y pulsa enter
- Quita el # en
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
- Pulsa Ctrl+O seguido de Enter para guardar
- Pulsa Ctrl+X para salir de nano
- Escribe
sudo apachectl restart
Ahora puedes usar URLs amigables cuando desarrolles usando localhost.
Haga que el .htaccess funcione
Esto no es necesario para hacer que las URLs de vanidad funcionen, pero personalmente prefiero usar un archivo .htaccess, ya que me permite controlar la versión.
- Ir a la Terminal y escribir
sudo nano /etc/apache2/httpd.conf
seguido de pulsar enter - Pulsar Ctrl+W, escribir
AllowOverride controls
, y pulsa enter - Cambia
AllowOverride None
porAllowOverride All
- Pulsa Ctrl+O seguido de Enter para guardar
- Pulsa Ctrl+X para salir de nano
- Escribe
sudo apachectl restart
Ahora puedes añadir un archivo .htaccess en la carpeta Sitios y funcionará bien.
Activar SSL/HTTPS
En lugar de acceder a tu sitio web a través de localhost, puede que quieras acceder a tu sitio web yendo a https://localhost. Si activas el SSL, verás un candado junto a localhost en la barra de URL.
- Vaya a Terminal y escriba
sudo nano /etc/apache2/httpd.conf
seguido de pulsar enter - Pulse Ctrl+W, escriba socache_shmcb_module, y pulsa enter
- Borra el # de
#LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
- Pulsa Ctrl+W, escribe mod_ssl, y pulsa enter
- Borra el # de
#LoadModule ssl_module libexec/apache2/mod_ssl.so
- Pulsa Ctrl+W, escribe httpd-ssl, y pulsa enter
- Borra el # de
#Include /private/etc/apache2/extra/httpd-ssl.conf
- Pulsa Ctrl+O seguido de Enter para guardar
- Pulsa Ctrl+X para salir de nano
- Escribe
sudo nano /etc/apache2/extra/httpd-ssl.conf
y pulsa enter - Pulsa Ctrl+W, escribe ServerName, y pulsa enter
- Reemplaza www.example.com:443 con localhost
- Encima verás
/Library/WebServer/Documents
. Sustitúyelo por/Users/david/Sites
. (Usa tu nombre en lugar de david como hiciste antes) - Justo debajo de
<VirtualHost_default_:443>
añade (pero asegúrate de sustituir david por tu nombre):
<Directory "/Users/david/Sites"> Options All MultiviewsMatch Any AllowOverride All Require all granted</Directory>
- Tu terminal debería tener ahora este aspecto:
- Pulsa Ctrl+O seguido de Enter para guardar
- Pulsa Ctrl+X para salir de nano
- Escribe
sudo nano /etc/ssl/openssl.cnf
y pulsa enter - Al final de openssl.cnf añada esto:
subjectAltName = DNS:localhost
- Su terminal debería tener este aspecto:
- Pulse Ctrl+O seguido de Enter para guardar
- Pulse Ctrl+X para salir de nano
- Tipo
sudo openssl req -extensions san -config /etc/ssl/openssl.cnf -x509 -nodes -newkey rsa:4096 -keyout /private/etc/apache2/server.key -out /private/etc/apache2/server.crt -days 365 -subj "/C=US/ST=Florida/L=Boca Raton/O=WebsiteBeaver/CN=localhost"
y pulse enter. (Puedes usar tu información en su lugar, pero no cambies el localhost)
- Tipo
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /private/etc/apache2/server.crt
y pulsa enter
- Tipo
sudo apachectl
restart - Ahora ve a https://localhost en tu navegador, y verás un candado junto a la url que significa que has terminado de configurar el SSL
.