Ubuntu
Instal·lació d'un servidor Apache en Ubuntu
sudo apt update -y
sudo apt install -y apache2
sudo systemctl start apache2
sudo systemctl enable apache2
echo "<h1>Benvingut a la meua web d'Apache en Ubuntu en una EC2</h1>" | sudo tee /var/www/html/index.html
Instal·lació de PHP sobre Apache en Ubuntu
sudo apt update -y
sudo apt install -y php libapache2-mod-php php-mysql php-mysqli php-cli php-curl php-zip php-xml php-gd php-mbstring php-intl php-mongodb composerx
sudo systemctl restart apache2
Una vegada instal·lat, podem crear un fitxer de prova info.php simplement per vore si el servidor processa correctament les instruccions php i accedir desde el navegador http://IPSERVIDOR/info.php
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
Instal·lació i configuració de MySQL sobre Ubuntu
sudo apt update -y
sudo apt install -y mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl status mysql
#Creació d'usuari per permetres conexions remotes (no solo desde localhost)
# Entrar a MySQL com a root (en Ubuntu pot ser sense password)
sudo mysql
# Crear usuari que es puga connectar des de la xarxa privada corresponent (exemple: subnet 10.0.0.0/16)
CREATE USER 'appuser'@'10.0.%' IDENTIFIED BY 'ContrasenyaSegura123';
# Donar-li privilegis sobre una base de dades concreta
CREATE DATABASE appdb;
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'10.0.%';
# Actualitzar
FLUSH PRIVILEGES;
EXIT;
#Configurar MySQL per admetre connexions remotes
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
#Canviar bind-address per la direcció IP des d'on ens connectarem (o tots)
bind-address = 0.0.0.0
#Reiniciar
sudo systemctl restart mysql
No cal olvidar que cal permetre explicitament les connexions al port de MySQL, el 3306.
Connexió a a BBDD MySQL des de client Ubuntu
Desde la màquina client (des d'on volem connectar a la base de dades):
sudo apt install -y mysql-client
mysql -h <IP_privada_mysql> -u appuser -p
Si entra correctament, està funcionant 👍🏼
Conectar per PHP a una BBDD MySQL
A la instància del servidor web+php, crearem un fitxer php, per exemple dbtest.php:
sudo nano /var/www/html/dbtest.php
Contingut del fitxer dbtest.php:
<?php
$servername = "IP_PRIVADA_MYSQL"; // o hostname dins de la VPC
$username = "appuser"; // Usuari que has creat
$password = "ContrasenyaSegura123"; // Contrasenya que has triat
$dbname = "appdb"; // Base de dades creada
// Crear connexió
$conn = new mysqli($servername, $username, $password, $dbname);
// Comprovar connexió
if ($conn->connect_error) {
die("Connexió fallida: " . $conn->connect_error);
}
echo "<h2>Connexió a MySQL correcta! 🎉</h2>";
// Opcional: crear una taula i inserir dades si no existeix
$sql = "CREATE TABLE IF NOT EXISTS proves (
id INT AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(50) NOT NULL
)";
$conn->query($sql);
// Inserir un registre de prova
$conn->query("INSERT INTO proves (nom) VALUES ('Hola des de PHP')");
// Llegir dades
$result = $conn->query("SELECT id, nom FROM proves");
echo "<h3>Dades llegides de la taula 'proves':</h3>";
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - Nom: " . $row["nom"]. "<br>";
}
} else {
echo "Taula buida.";
}
$conn->close();
?>
Guardem el fitxer i ens assegurem que té els permisos adequats:
sudo chown www-data:www-data /var/www/html/dbtest.php
sudo chmod 644 /var/www/html/dbtest.php
sudo systemctl restart apache2
I des del navegador accedim http://IP_PÚBLICA_DE_LA_WEB/dbtest.php
Instal·lació d'un servidor Nginx en Ubuntu
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
Instal·lació de PHP sobre servidor Nginx en Ubuntu (preparat per a MongoDB)
sudo apt install -y php php-mysql php-mysqli php-cli php-curl php-zip php-xml php-gd php-mbstring php-intl php-mongodb composer
sudo nano /etc/nginx/sites-available/default #cal entrar a modificar la config
Ho sustituim pel següent contingut (atenció a la versió del php):
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # comprova la versió
}
location ~ /\.ht {
deny all;
}
}
Per comprovar que nginx funciona amb php:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
sudo systemctl restart nginx
- Accedim a http://IP_PÚBLICA_DE_LA_WEB/info.php
- Si tot està correcte, veurem la pàgina d'informació de PHP.
Instal·lació i configuració de MongoDB sobre Ubuntu
sudo apt update -y
sudo apt install -y mongodb-org
En el cas que no trobe el paquet, caldria afegir el repositori i tornar a llançar les instruccions anteriors:
sudo apt-get install gnupg curl
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
--dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
Iniciem el servei:
sudo systemctl enable mongod
sudo systemctl start mongod
sudo systemctl status mongod --no-pager
Cal modificar l'adreça des de la qual escolta:
Compte!
A diferència de MySQL, ací indiquem la IP privada del servidor de base de dades i no la dels servidors des de la qual ens anem a connectar.
sudo nano /etc/mongod.conf
# Buscar la línia bindIp i posar, per exemple:
# bindIp: 127.0.0.1,10.0.2.10
# (on 10.0.2.10 es la IP privada del servidor de base de dades)
Reiniciem:
sudo systemctl restart mongod
sudo systemctl status mongod --no-pager
Obrim la BBDD i creem un document d'exemple i provem:
mongosh
use exempleDB
db.usuaris.insertMany([
{ nom: "Maria", cognom: "López", edat: 28, ciutat: "València" },
{ nom: "Joan", cognom: "Pérez", edat: 34, ciutat: "Castelló" }
])
db.usuaris.find().pretty()
exit
No cal olvidar que cal permetre explicitament les connexions al port de MongoDB, el 27017.
Conectar per PHP a una BBDD MongoDB
Primer cal anar al directori de la web i instal·lar una dependència (farà que el codi siga més net):
cd /var/www/html #Si és nginx pot ser /usr/share/nginx/html
sudo composer require mongodb/mongodb
Ja podem crear el nostre fitxer i plenar-lo:
sudo nano testmongo.php
<?php
require 'vendor/autoload.php';
// IP privada del teu servidor MongoDB
$mongoHost = "10.0.2.10";
//User y password necessaris si els hem configurat al servidor
//$mongoUser = "webuser";
//$mongoPass = "ContrasenyaSegura123";
$mongoDB = "exempleDB";
try {
// Si no tens autenticació, comenta la línia següent i descomenta la de dalt.
$client = new MongoDB\Client("mongodb://$mongoHost:27017");
$collection = $client->$mongoDB->usuaris;
$documents = $collection->find();
echo "<h2>Connexió amb MongoDB correcta!</h2>";
echo "<ul>";
foreach ($documents as $doc) {
echo "<li>" . $doc['nom'] . " — " . $doc['edat'] . " anys, " . $doc['ciutat'] . "</li>";
}
echo "</ul>";
} catch (Exception $e) {
echo "<h2>Error de connexió:</h2> " . $e->getMessage();
}
?>
Per comprovar que ha funcionat correctament, accedirem des del navegador accedim http://IP_PÚBLICA_DE_LA_WEB/testmongo.php