14 May Como instalar nginx, php, mysql y wordpress en Ubuntu 16.04 (Xenial Xerus), (LEMP)
Vamos a hacer una instalación de un LEMP (Linux, Nginx, MySQL y PHP) en Ubuntu 16.04 (Xenial Xerus).
Pre requisitos:
Si lo van a hacer local tener Ubuntu 16.04 (Xenial Xerus) instalado en su equipo, si lo van a instalar en un servidor o VPS, tener contratado el VPS o Servidor en la nube, configurar y probar los accesos vía ssh tener Ubuntu 16.04 (Xenial Xerus) instalado en el Servidor o VPS.
vamos a conectarnos por ssh a la maquina remota para poder hacer la instalación, los que lo van a hacer en local no necesitan conectarse a ningún servidor.
en este primer paso explico por separado.
si estas en local te vas a la consola y sigues los pasos a partir del siguiente punto.
si vas a un servidor vas al terminal y nos conectamos vía ssh.
ssh root@direccion_ip_maquinaRemota
les va a pedir contraseña del usuario en este caso el administrador, cuando teclean la contraseña no se ve nada en la consola.
luego que estamos conectados vía ssh a el Servidor remoto vamos a hacer alguna cosas primero actualizar Ubuntu y después instalar todo lo que necesitamos.
apt update & apt full-upgrade
este comando nos actualiza el sistema operativo ahora vamos a instalar nginx, php, mysql y correremos un wordpress allí.
instalamos nginx, para instalar nginx en Ubuntu debes desinstalar apache2 que no se porque lo instala por defecto.
apt remove --purge apache2*
luego de eso instalamos nginx.
apt install nginx
luego instalamos MySQL.
apt install mysql-server mysql-client
les va a pedir la contraseña de administrador de mysql.
asegurar MYSQL.
mysql_secure_installation Enter current password for root (enter for none): Change the root password? [Y/n] <--N Remove anonymous users? [Y/n] <-- Y Disallow root login remotely? [Y/n] <-- Y Remove test database and access to it? [Y/n] <-- Y Reload privilege tables now? [Y/n] <-- Y Thanks for using MySQL!
Instalamos php-fpm.
apt install php-fpm php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-intl php-mysql php-cli php-mcrypt php-zip php-curl git
ahora vamos a configurar todo para que nginx y php-fpm se puedan ver en nuestro navegador sin problemas, para esto editamos el fichero /etc/php/7.0/fpm/php.ini con tu editor favorito y modificamos los parámetros.
file_uploads = On allow_url_fopen = On memory_limit = 256M upload_max_filesize = 100M cgi.fix_pathinfo=0 max_execution_time = 360 date.timezone = America/Caracas
vamos a nuestro browser o navegador web, si están en local y solo en local http://localhost o http://127.0.0.1 allí verán el mensaje de bienvenida de nginx, si es un servidor remoto o VPS o cualquier otro contenedor en la nube http://direcciónIP del servidor y por dirección IP se entiende (dirección del servidor, dominio, subdominio, etc.) allí también deberíamos ver la pagina de bienvenida de nginx.
para saber si tenemos php instalado vamos a crearnos un archivo en el documen root de nginx por ahora para probar que tenemos instalado php esto es en /var/www/html/ allí se encuentra por defecto el archivo index.nginx-debian.html que no es mas que el que trae por defecto nginx, para ejecutar php en nginx debemos hacer y configurar algunas cosas, primero configurar nuestro virtualhost para nginx este se encuentra en /etc/nginx/sites-avaliable/default.
## # You should look at the following URL's in order to grasp a solid understanding # of Nginx configuration files in order to fully unleash the power of Nginx. # http://wiki.nginx.org/Pitfalls # http://wiki.nginx.org/QuickStart # http://wiki.nginx.org/Configuration # # Generally, you will want to move this file somewhere, and start with a clean # file but keep this around for reference. Or just disable in sites-enabled. # # Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples. ## # Default server configuration # server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You should disable gzip for SSL traffic. # See: https://bugs.debian.org/773332 # # Read up on ssl_ciphers to ensure a secure configuration. # See: https://bugs.debian.org/765782 # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; root /var/www/html; # Add index.php to the list if you are using PHP index index.php index.html index.htm index.nginx-debian.html; server_name dominio.com o ip; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php7.0-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php7.0-fpm: fastcgi_pass unix:/run/php/php7.0-fpm.sock; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } }
con esta configuración ya deberíamos ver scripts php en nuestro servidor, para ello vamos a crearnos un archivo info.php
en nuestro root de nginx que esta en /var/www/html/info.php
vim /var/www/html/info.php
este archivo añadimos lo siguiente:
<?php phpinfo();
guardamos el archivo y listo reiniciamos nginx y php-fpm.
systemctl restart nginx.service systemctl restart php7.0-fpm.service
ahora vamos al navegador web y vamos a la dirección: si estas en local http://localhost/info.php o http://127.0.0.1/info.php y se debe ver la configuración de nuestro equipo, si estas en la nube debes poner en el browser http://tu_dominio.com/info.php o http://tu_direccion_ip/info.php
ahora vamos a configurar un virtualhost y crear un directorio para nuestro wordpress, a descargarlo e instalarlo, para esto debemos crearnos un directorio para que se entienda lo voy a hacer en /var/www/ pero por costumbre debe hacerse en /home/usuario/public_html/
mkdir /var/www/wordpress/public_html
con esto creamos el directorio wordpress y public_html en /var/www/ ingresamos al directorio wordpress/poublic_html y allí nos descargamos la ultima versión de wordpress.
wget http://wordpress.org/latest.tar.gz
después de descargar wordpress lo descomprimimos.
tar -xvf latest.tar.gz
nos creamos una base de datos para el blog.
mysql -u root -p
les pedirá el password de el usuario de mysql lo teclean, ingresan a la consola de mysql y allí vamos a crear las base de datos para el blog.
create database wordpress;
con esto creamos la base de datos.
create user usuarioblog@localhost identified by '*****';
con este comando creamos un usuario y le damos una contraseña, cambiar los ***** por la contraseña que le quieran asignar al usuario para el blog.
grant all privileges on wordpress.* to usuarioblog@localhost identified by '*****';
con esto asignamos el usuario creado en MySQL a la base de datos y le damos los privilegios que necesita.
flush privileges;
limpiamos los privilegios de MySQL.
exit;
salimos de MySQL.
ya tenemos los datos que necesitamos para la instalación de wordpress, ahora vamos a modificar el archivo wp–config–sample.php de wordpress.
cp wp-config-sample.php wp-config.php
editamos el wp-config.php
y le damos los parámetros de base de datos.
* @package WordPress */ // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'Nombre_de_la_base_de_datos'); /** MySQL database username */ define('DB_USER', 'nombre_de_usuario_creado_en_mysql_para_la_base_de_datos_del_wordpress'); /** MySQL database password */ define('DB_PASSWORD', 'contraseña'); /** MySQL hostname */ define('DB_HOST', 'localhost');
listo la configuración del wordpress y la Base de datos, ahora vamos con el virtualhost para mostrar nuestro wordpress, esto lo modificamos en sites-avaliables del nginx.
vim /etc/nginx/sites-available/wordpress # Default server configuration # server { listen 80 default_server; listen [::]:80 default_server; client_max_body_size 5000M; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; root /var/www/wordpress/public_html; # Add index.php to the list if you are using PHP index index.php index.html index.htm index.nginx-debian.html; server_name nombre_del_servidor.com; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. #try_files $uri $uri/ =404; try_files $uri $uri/ /index.php?q=$uri&$args; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php7.0-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php7.0-fpm: fastcgi_pass unix:/run/php/php7.0-fpm.sock; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } }
debemos crear un enlace simbólico de sites-avaliable a sites-enabled.
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/wordpress
a mi en la primera vez no me corrió wordpress, lo que hice fue habilitar el modulo mcrypt y después reinicie los servicios de nginx y php-fpm.
sudo phpenmod mcrypt sudo systemctl restart php7.0-fpm.service sudo systemctl restart nginx.service
listo con esto tendrán su wordpress corriendo en nginx, espero les sirva como a mi.
Happy Hacking!