Tarea OVH. Aplicaciones PHP
Instalación/migración de aplicaciones web PHP
Realizar la migración de la aplicación drupal que tienes instalada en el entorno de desarrollo a nuestro entorno de producción, para ello ten en cuenta lo siguiente:
- La aplicación se tendrá que migrar a un nuevo virtualhost al que se accederá con el nombre portal.iesgnXX.es.
server {
listen 80;
listen [::]:80;
root /var/www/portal;
index index.php index.html;
server_name portal.iesgn11.es;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}
}
-
Vamos a nombrar el servicio de base de datos que tenemos en producción. Como es un servicio interno no la vamos a nombrar en la zona DNS, la vamos a nombrar usando resolución estática. El nombre del servicio de base de datos se debe llamar: bd.iesgnXX.es.
127.0.1.1 bd.iesgn11.es
-
Por lo tanto los recursos que deberás crear en la base de datos serán (respeta los nombres):
Dirección de la base de datos: bd.iesgnXX.es Base de datos: bddrupal Usuario: userdrupal Password: pass_drupal
Creación de la base de datos:
debian@valhalla:~$ sudo mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 60
Server version: 10.3.25-MariaDB-0+deb10u1 Debian 10
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)]> CREATE DATABASE fran_drupal;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> CREATE USER fran_drupal@localhost IDENTIFIED BY '1234';
Query OK, 0 rows affected (0.000 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON fran_drupal.* to fran_drupal@localhost;
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> quit
Bye
Pasamos por scp nuestra bdd:
vagrant@drupalm:~/migraciondrupal$ scp frandb.sql debian@51.178.19.140:/home/debian/
The authenticity of host '51.178.19.140 (51.178.19.140)' can't be established.
ECDSA key fingerprint is SHA256:jD9z/tBIbJ7yPS7sE7cyOTNfHLaVP1SWnqjWa1FyK24.
Are you sure you want to continue connecting (yes/no)? ye
Please type 'yes' or 'no': yes
Warning: Permanently added '51.178.19.140' (ECDSA) to the list of known hosts.
debian@51.178.19.140's password:
frandb.sql 100% 6938KB 1.6MB/s 00:04
En /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 127.0.1.1
Migramos la bdd:
debian@valhalla:~$ mysql -u fran_drupal -p fran_drupal < frandb.sql
Enter password:
- Realiza la migración de la aplicación.
Lo primero que hacemos para que no se nos olvide es modificar el propietario.
debian@valhalla:~$ sudo chown -R www-data: /var/www/portal/
Pasamos por scp la carpeta que teniamos en nuestro servidor vagrant.
root@drupalm:/home/vagrant# sudo scp -r /var/www/drupal-9.1.2/ debian@51.178.19.140:/home/debian/
Modificamos el archivo /var/www/portal/drupal-9.1.2/sites/default/default.settings.php :
$databases['default']['default'] = array (
'database' => 'fran_drupal',
'username' => 'fran_drupal',
'password' => '1234',
'prefix' => '',
'host' => '127.0.1.1',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);
Reiniciamos el servicio de nginx y comprobamos.
sudo /usr/sbin/nginx -s reload
- Asegurate que las URL limpias de drupal siguen funcionando en nginx.
Las URLS no funcionaban, para ello deberemos añadir las siguientes lineas:
location / {
try_files $uri @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
Ahora si podemos acceder y utilizar drupal correctamente.
- La aplicación debe estar disponible en la URL: portal.iesgnXX.es (Sin ningún directorio).
Instalación / migración de la aplicación Nextcloud
- Instala la aplicación web Nextcloud en tu entorno de desarrollo.
Nos instalamos nextcloud.
vagrant@drupalm:~$ wget https://download.nextcloud.com/server/releases/nextcloud-19.0.3.tar.bz2
Creamos el directorio y le damos permisos.
vagrant@drupalm:/var/www$ sudo chown -R www-data: /var/www/nextcloud/
Movemos la carpeta al directorio que usaremos para la web en apache2.
vagrant@drupalm:/var/www$ sudo mv nextcloud /var/www/
Instalación de los paquetes requeridos.
vagrant@drupalm~$ sudo apt-get install -y php-bcmath php-curl php-gd php-gmp php-imagick php-intl php-mbstring php-xml php-zip php-mysql php-pgsql
Creamos el archivo de configuración de nextcloud en apache2 y lo copiaremos a sites-enabled con la función a2ensite.
vagrant@drupalm:/var/www$ cat /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/nextcloud
ServerName www.madu-nextcloud.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/nextcloud>
AllowOverride all
php_value memory_limit "512M"
</Directory>
</VirtualHost>
vagrant@drupalm:/etc/apache2/sites-available$ sudo mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 50
Server version: 10.3.27-MariaDB-0+deb10u1 Debian 10
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)]> create user 'fran@localhost' identified by 'fran';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> create database nextcloud charset utf8mb4 collate utf8mb4_unicode_ci;
Query OK, 1 row affected (0.045 sec)
MariaDB [(none)]> grant all privileges on nextcloud.* to fran@localhost identified by 'fran';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> exit
Bye
Para poder utilizar nextcloud correctamente tuve que descargar adicionalmente un fichero de configuración:
vagrant@drupalm:/var/www/nextcloud$ sudo wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
y comenzar su instalación en www.madu-nextcloud.com/setup-nextcloud.php una vez realizada la instalación completa podremos utilizar nextcloud en nuestro servidor.
- Realiza la migración al servidor en producción, para que la aplicación sea accesible en la URL: www.iesgnXX.es/cloud
Copiaremos la carpeta de nuestro vagrant y la comprimiremos para pasarla al servidor de OVH.
vagrant@drupalm:~$ scp nextcloud.tar.gz debian@51.178.19.140:/home/debian/
debian@51.178.19.140's password:
nextcloud.tar.gz 100% 606MB 2.9MB/s 03:29
Migramos la BBDD.
vagrant@drupalm:~$ sudo mysqldump -u fran -p nextcloud > nextcloud.sql
Creamos una base de datos nueva a la que volcaremos los datos.
debian@valhalla:~$ sudo mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 142
Server version: 10.3.27-MariaDB-0+deb10u1 Debian 10
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)]> create database nextcloud11;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> grant all privileges on nextcloud11.* to fran@localhost identified by 'fran';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> create user 'fran@localhost' identified by 'fran';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> exit
Bye
debian@valhalla:~$ sudo mysql -u fran -p nextcloud11 < nextcloud.sql
Enter password:
Modificamos el fichero de configuración de Nginx para el nuevo servicio:
server {
listen 80;
listen [::]:80;
root /var/www/iesgn11;
index index.html index.htm index.nginx-debian.html;
server_name www.iesgn11.es;
location / {
return 301 /principal/index.html;
try_files $uri $uri/ =404;
location /principal {
autoindex on;
}
}
location /nextcloud {
error_page 403 = /nextloud/core/templates/403.php;
error_page 404 = /nextcloud/core/templates/404.php;
rewrite ^/nextcloud/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/nextcloud/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/nextcloud/webdav(.*)$ /remote.php/webdav$1 redirect;
rewrite ^(/nextcloud/core/doc[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ \.php(?:$|/) {
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
include snippets/fastcgi-php.conf;
}
}
Accederemos a nextcloud y comenzaremos su instalación y nos dara un error, para que que funcione modifiquemos el archivo en /iesgn11/nextcloud/config/config.php
<?php
$CONFIG = array (
'instanceid' => 'oc7xw3tt2a14',
'passwordsalt' => '8Adw7vZ8RThbq0GWfu5vj116JTN9UZ',
'secret' => 'nUg5WRccpEck7KO5su6eH/0nD/ZcC2zyKB/m4stTKRjrIRKS',
'trusted_domains' =>
array (
0 => 'www.iesgn11.es',
),
'datadirectory' => '/var/www/iesgn11/nextcloud/data',
'dbtype' => 'mysql',
'version' => '19.0.3.1',
'overwrite.cli.url' => 'http://www.iesgn11.es/nextcloud',
'dbname' => 'nextcloud11',
'dbhost' => '127.0.1.1',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'fran',
'dbpassword' => 'fran',
'installed' => true,
'theme' => '',
'loglevel' => 0,
'maintenance' => false,
);
En este archivo modificaremos las lineas:
-
'maintenance' => true, ➜ 'maintenance' => false,
Para que la pagina deje de estar en mantenimeinto.
-
'dbhost' => 'localhost', ➜ 'dbhost' => '127.0.1.1',
Nombre del servidor host
Con estos pasos ya estaria instalado y en funcionamiento nuestro servidor con NextCloud.
- Instala en un ordenador el cliente de nextcloud y realiza la configuración adecuada para acceder a "tu nube".
La instalación es sencilla y rapida, en windows nos bajaremos la aplicación desde su pagina web. La configuración es siguiente, siguiente, etc... Nos deberemos de parar en el servidor que queramos usar en nuestro caso http://www.iesgn11.es/nextcloud
Escrito por Fran Madueño Estudiante de administración de sistemas operativos
(Dos Hermanas, Sevilla).