# WordPress

**WordPress** és el sistema de gestió de continguts (CMS) més utilitzat mundialment, emprat tant per a blogs personals com per a portals corporatius i botigues en línia. Aquest document mostra com desplegar WordPress en un servidor Ubuntu 26.04 fent servir la pila **LAMP** (Linux, Apache, MariaDB, PHP) i com protegir l'accés amb un certificat SSL autosignat.

![WordPress logo](https://proferamon.com/tic/imatges/wordpress/wordpress09.png)

# Objectius

- Instal·lar i configurar Apache com a servidor web.
- Instal·lar i configurar MariaDB com a sistema gestor de bases de dades.
- Instal·lar PHP i les extensions necessàries per a WordPress.
- Crear la base de dades i l'usuari específic per a WordPress.
- Descarregar, instal·lar i configurar WordPress.
- Generar un certificat SSL autosignat i activar HTTPS en Apache.

# Requisits previs

- Una màquina amb Ubuntu Server 26.04 LTS instal·lat.
- Accés a un usuari amb privilegis `sudo`.
- Connexió a Internet per descarregar paquets.
- Coneixements bàsics de la línia d'ordres de Linux.

> [!NOTE]
> Aquest document s'ha provat sobre Ubuntu Server 26.04 LTS. Els noms dels paquets i les rutes de configuració poden variar lleugerament en altres versions.

# 1. Actualitza el sistema

Abans d'instal·lar cap paquet, és recomanable actualitzar el dipòsit i els paquets existents.

Actualitza la llista de paquets:

```bash
sudo apt update
```

Actualitza els paquets instal·lats:

```bash
sudo apt upgrade
```

# 2. Instal·la Apache

Apache serà el servidor web encarregat de servir les pàgines de WordPress.

```bash
sudo apt install apache2
```

Un cop instal·lat, comprova que el servei estigui actiu:

```bash
sudo systemctl status apache2
```

Sortida:

```ini
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
     Active: active (running) since Thu 2026-06-18 17:03:09 UTC; 11s ago
 Invocation: 9ace4398278b4dbe94198122be737116
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 9149 (apache2)
     Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
      Tasks: 55 (limit: 1703)
     Memory: 5.7M (peak: 5.9M)
        CPU: 38ms
     CGroup: /system.slice/apache2.service
             ├─9149 /usr/sbin/apache2 -k start -DFOREGROUND
             ├─9165 /usr/sbin/apache2 -k start -DFOREGROUND
             └─9166 /usr/sbin/apache2 -k start -DFOREGROUND
```

Si no està actiu, engega'l i habilita'l per a l'arrencada:

```bash
sudo systemctl enable --now apache2
```

## 2.1 Configura el tallafocs (UFW)

Si el tallafocs `ufw` està actiu, cal permetre el trànsit web:

```bash
sudo ufw allow 'Apache Full'
```

`Apache Full` habilita tant el port 80 (HTTP) com el 443 (HTTPS), que faràs servir més endavant.

Sortida:

```ini
Rules updated
Rules updated (v6)
```

## 2.2. Comprova

Des d'un navegador, accedeix a `http://IP_DEL_SERVIDOR`. Hauries de veure la pàgina per defecte d'Apache.

> [!TIP]
> Per saber la IP del servidor podeu fer servir `ip a` o `hostname -I`.

# 3. Instal·la MariaDB

MariaDB serà el sistema gestor de bases de dades on s'emmagatzemarà tota la informació de WordPress (entrades, usuaris, configuració, etc.).

```bash
sudo apt install mariadb-server
```

Un cop instal·lat, assegura’l:

```bash
sudo mariadb-secure-installation
```

Respon afirmativament a totes les preguntes (establir contrasenya root, eliminar usuaris anònims, desactivar accés remot de root, eliminar la base de dades de test i recarregar privilegis).

# 4. Crea la base de dades per a WordPress

Accedeix a la consola de MariaDB com a `root`:

```bash
sudo mysql -u root -p
```

```ini
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 11.8.6-MariaDB-5 from Ubuntu -- Please help get to 10k stars at https://github.com/MariaDB/Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 
```

Dins de la consola SQL, crea la base de dades, l'usuari i assigna-li els privilegis necessaris:

```sql
CREATE DATABASE wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO usuari@localhost IDENTIFIED BY 'ContrasenyaSegura123!';
FLUSH PRIVILEGES;
QUIT;
```

> [!WARNING]
> Substitueix `ContrasenyaSegura123!` per una contrasenya robusta i no la deixis mai per defecte en un entorn de producció.

# 5. Instal·la PHP i les extensions necessàries

WordPress necessita PHP i diverses extensions per funcionar correctament:

```bash
sudo apt install php libapache2-mod-php php-mysql php-curl php-gd \
  php-mbstring php-xml php-xmlrpc php-zip php-apcu php-bcmath \
  php-bz2 php-ctype php-dom php-fileinfo php-ftp php-gmp php-imagick \
  php-intl php-ldap php-memcached php-posix php-simplexml 
```

## 5.1 Comprova la versió de PHP

```bash
php -v
```

Sortida:

```ini
PHP 8.5.4 (cli) (built: May 25 2026 12:19:37) (NTS)
Copyright (c) The PHP Group
Built by Ubuntu
Zend Engine v4.5.4, Copyright (c) Zend Technologies
    with Zend OPcache v8.5.4, Copyright (c), by Zend Technologies
```

# 6. Descarrega i configura WordPress

## 6.1. Descarrega

Situa't en un directori temporal i descarrega l'última versió de WordPress:

```bash
cd /tmp
wget https://ca.wordpress.org/latest-ca.zip
```

## 6.2. Descomprimeix

```bash
sudo unzip latest-ca.zip -d /var/www/html
```

> [!NOTE]
> Si no tens `unzip` instal·lat: 
> ```bash
> sudo apt install unzip
> ```

## 6.3. Esborra el fitxer d'instal·lació

```bash
rm latest-ca.zip
```

## 6.4. Permisos

Assigna la propietat dels fitxers a l'usuari d'Apache (`www-data`) i ajusta els permisos:

```bash
sudo chown -R www-data:www-data /var/www/html/wordpress/
sudo find /var/www/html/wordpress/ -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress/ -type f -exec chmod 644 {} \;
```

# 7. Genera el certificat autosignat

Genera la clau privada i el certificat (vàlid 365 dies):

```bash
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/ssl/private/wordpress.key \
  -out /etc/ssl/certs/wordpress.crt \
  -subj "/C=ES/ST=Barcelona/L=Mataró/O=IES Thos i Codina/OU=ASIX/CN=wordpress.thos.local" 
```

# 8. Configura Apache (Virtual Host)

## 8.1. Crea la configuració HTTP (redirecció)

Crea un fitxer de configuració de virtual host específic per a WordPress. 

```bash
sudo nano /etc/apache2/sites-available/wordpress.conf
```

Contingut del fitxer:

```nano
<VirtualHost *:80>
    ServerName wordpress.thos.local
    Redirect permanent / https://wordpress.thos.local
    
    ErrorLog ${APACHE_LOG_DIR}/wordpress_error.log
    CustomLog ${APACHE_LOG_DIR}/wordpress_access.log combined
</VirtualHost>
```

## 8.2. Configura el Virtual Host SSL

```bash
sudo nano /etc/apache2/sites-available/wordpress-ssl.conf
```

Contingut:

```nano
<VirtualHost *:443>
    ServerAdmin admin@thos.local
    ServerName wordpress.thos.local    
    DocumentRoot /var/www/html/wordpress

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/wordpress.crt
    SSLCertificateKeyFile /etc/ssl/private/wordpress.key

    <FilesMatch "\.(?:cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/wordpress_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/wordpress_ssl_access.log combined
</VirtualHost>
```

Activa el lloc:

```bash
sudo a2ensite wordpress.conf wordpress-ssl.conf
```

Activa els mòduls:

```bash
sudo a2enmod ssl rewrite headers env dir mime 
```

Reinicia Apache:

```bash
sudo systemctl restart apache2
```

# 9. Assistent d'instal·lació web de WordPress

Modifica el fitxer `/etc/hosts` del client (una màquina amb entorn gràfic instal·lat):

```bash
sudo nano /etc/hosts
```

```nano
IP_DEL_SERVIDOR wordpress.thos.local
```

Amb tot configurat, accedeix al navegador:

```bash
https://wordpress.thos.local
```

> [!WARNING]
> Com que el certificat és autosignat, els navegadors mostraran un avís de seguretat indicant que la connexió no és de confiança. Això és normal en entorns de proves o intranet; per a producció es recomana un certificat emès per una autoritat de certificació (per exemple, mitjançant Let's Encrypt).

![Avís de seguretat](https://proferamon.com/tic/imatges/wordpress/wordpress01.png)

---

![Acceptem el risc](https://proferamon.com/tic/imatges/wordpress/wordpress02.png)

---

![Assistent d'instal·lació](https://proferamon.com/tic/imatges/wordpress/wordpress03.png)

Es mostrarà l'assistent d'instal·lació de WordPress, on caldrà indicar:

- Nom de la base de dades
- Nom d'usuari de la base de dades
- Contrasenya de l'usuari
- Servidor de la base de dades
- Prefix de la taula

![Connexió a la base de dades](https://proferamon.com/tic/imatges/wordpress/wordpress04.png)

---

![Executa la instal·lació](https://proferamon.com/tic/imatges/wordpress/wordpress05.png)

---

![Instal·lació correcta](https://proferamon.com/tic/imatges/wordpress/wordpress06.png)

En aquest punt cal indicar:

- Títol del lloc
- Nom d'usuari administrador
- Contrasenya
- Correu electrònic
- Idioma

![Accés amb l'usuari administrador](https://proferamon.com/tic/imatges/wordpress/wordpress07.png)

Un cop completat l'assistent, WordPress ja estarà operatiu.

![Tauler de control](https://proferamon.com/tic/imatges/wordpress/wordpress08.png)

# 10. Comprovacions finals

- Inicia sessió al tauler d'administració (`/wp-admin`) amb l'usuari creat durant la instal·lació.
- Comprova que els permalinks funcionen correctament des de **Configuració > Enllaços permanents**.

#### Versions d'aquest document

+ HTML - [wordpress.html](https://proferamon.com/tic/wordpress.html)
+ PDF - [wordpress.pdf](https://proferamon.com/tic/docs/wordpress.pdf)
+ ODT - [wordpress.odt](https://proferamon.com/tic/odt/wordpress.odt)
+ MD - [wordpress.md](https://proferamon.com/tic/md/wordpress.md)

[Domini Públic (CC0)](https://creativecommons.org/publicdomain/zero/1.0/deed.ca)
