# Wordpress en Ubuntu Server 22.04 [TOC] ## General Primero actualizamos los repositorios y el sistema ```shell sudo apt update && sudo apt upgrade -y ``` Instalación de LAMP ```shell sudo apt install apache2 \ ghostscript \ libapache2-mod-php \ libapache2-mod-fcgid \ mariadb-server \ mariadb-client \ php \ php-bcmath \ php-fpm \ php-curl \ php-imagick \ php-intl \ php-json \ php-mbstring \ php-mysql \ php-xml \ php-zip ``` ## Kernel Para ver la versión de nuestro sistema utilizamos uname ```shell uname -r ``` Actualizamos manualmente el kernel ```shell wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh sudo install ubuntu-mainline-kernel.sh /usr/local/bin/ ``` Corremos el script ```shell sudo ubuntu-mainline-kernel.sh -c ``` Instalamos el último kernel ```shell sudo ubuntu-mainline-kernel.sh -i ``` Limpiamos dependencias ```shell sudo apt --fix-broken install ``` ## Mariadb Finalizamos la instalación de mariadb ```shell mysql_secure_installation ``` Entramos en mysql ```shell mysql -u root -p ``` Dentro de MYSQL creamos una base de datos ```shell CREATE DATABASE wordpress; ``` Creamos el usuario ```shell CREATE USER 'wp-user'@'%' IDENTIFIED BY 'password'; ``` Damos privilegios ```shell GRANT ALL ON carbray.* TO 'wp-user'@'localhost' IDENTIFIED BY 'password'; ``` Y finalizamos ```shell FLUSH PRIVILEGES; ``` ### Si tenemos problemas con los usuarios ```shell ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; ``` ## Wordpress Descargamos Wordpress ```shell cd /tmp && wget https://wordpress.org/latest.tar.gz ``` Descomprimimos el archivo ```shell tar -xvf latest.tar.gz ``` Movemos de ruta ```shell cp -R wordpress /var/www/ ``` > [name=eliasibpl] > Aquí hemos de cambiar el nombre del directorio por el dominio, ej: dev.iticbcn.cat Cambiamos de propietario ```shell chown -R www-data:www-data /var/www/wordpress/ ``` Cambiamos permisos ```shell chmod -R 755 /var/www/wordpress/ ``` Creamos una carpeta uploads ```shell mkdir /var/www/wordpress/wp-content/uploads ``` Cambiamos permisos ```shell chown -R www-data:www-data /var/www/wordpress/wp-content/uploads/ ``` Copiamos el archivo de configuración ```shell sudo -u www-data cp /var/www/wordpress/wp-config-sample.php /var/www/wordpress/wp-config.php ``` Introducimos nuestras credenciales ```shell sudo -u www-data sed -i 's/database_name_here/wordpress/' /var/www/wordpress/wp-config.php sudo -u www-data sed -i 's/username_here/admincarbray/' /var/www/wordpress/wp-config.php sudo -u www-data sed -i 's/password_here/password/' /var/www/wordpress/wp-config.php ``` Cambiamos el archivo de configuración ```shell sudo -u www-data nano /var/www/wordpress/wp-config.php ``` Generamos una nueva salt con el siguiente enlace: https://api.wordpress.org/secret-key/1.1/salt/ Y cambiamos ```shell define( 'AUTH_KEY', 'put your unique phrase here' ); define( 'SECURE_AUTH_KEY', 'put your unique phrase here' ); define( 'LOGGED_IN_KEY', 'put your unique phrase here' ); define( 'NONCE_KEY', 'put your unique phrase here' ); define( 'AUTH_SALT', 'put your unique phrase here' ); define( 'SECURE_AUTH_SALT', 'put your unique phrase here' ); define( 'LOGGED_IN_SALT', 'put your unique phrase here' ); define( 'NONCE_SALT', 'put your unique phrase here' ); ``` :warning: Recuerda modificar el archivo de configuración php para habilitar plugins de mayor tamaño:warning: ## Apache Modificamos el archivo de sites-availables ```shell sudo nano /etc/apache2/sites-available/dev.iticbcn.cat.conf ``` Ejemplo de `.conf` ```shell <VirtualHost *:80> ServerAdmin admin@dev.iticbcn.cat ServerName dev.iticbcn.cat ServerAlias www.dev.iticbcn.cat.es DocumentRoot /var/www/dev.iticbcn.cat.es/ <Directory /var/www/dev.iticbcn.cat.es/> Options FollowSymLinks AllowOverride All DirectoryIndex index.php Require all granted </Directory> <Directory /var/www/dev.iticbcn.cat.es/wp-content> Options FollowSymLinks Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/dev.iticbcn.cat_error.log </VirtualHost> ``` Habilitamos el site y deshabilitamos default ```shell sudo a2ensite dev.iticbcn.cat sudo a2enmod rewrite sudo a2dissite 000-default ``` Siempre podemos probar nuestra configuración con configtest ```shell sudo apache2ctl configtest ``` Recargamos apache2 ```shell sudo systemctl reload apache2 ``` Y comprobamos el estado de nuestro apache2 ```shell sudo systemctl status apache2 ``` Comprobar logs ```shell journalctl -xeu apache2 ``` ## DNS Ahora hemos de apuntar con un registro tipo A el nombre de dominio, ej. dev.iticbcn.cat a la dirección pública de nuestro servidor. ## Certificado SSL Una vez lo tengamos los DNS's apuntando a nuestro servidor procederemos con el certificado: Instalamos certbot ```shell sudo apt install certbot python3-certbot-apache ``` Instalamos el certificado ```shell sudo certbot --apache ``` Comprobamos que el estado del timer esté habilitado ```shell sudo systemctl status certbot.timer ``` Hacemos una prueba de renovación ```shell sudo certbot renew --dry-run ``` ## Modificar tamaño de medios/plugins Modificamos el archivo `.htaccess` ```shell nano /var/www/dev.iticbcn.cat/.htaccess ``` Añadimos las siguientes líneas ```shell php_value upload_max_filesize 5G php_value post_max_size 1G php_value memory_limit 512M php_value max_execution_time 300 php_value max_input_time 300 ``` Recargamos apache2 ```shell systemctl reload apache2 ``` ## Instalación de versiones específicas ### Opcional - PHP 7.4 Añadimos el repositorio ```shell sudo add-apt-repository ppa:ondrej/php sudo apt update ``` Se instalará ```shell sudo apt install php7.4 ``` ### Opcional - Kernel específico Para ver la versión de nuestro sistema utilizamos uname ```shell uname -r ``` Actualizamos manualmente el kernel ```shell wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh sudo install ubuntu-mainline-kernel.sh /usr/local/bin/ ``` Corremos el script ```shell sudo ubuntu-mainline-kernel.sh -c ``` Instalamos el kernel que nos indican ```shell sudo ubuntu-mainline-kernel.sh -i v6.2.0 ``` Limpiamos dependencias ```shell sudo apt --fix-broken install ```