Todas las entradas de: ernest

Instalar Nginx, PHP-7.0 y MariaDB en Windows

Debido a que tenemos un proyecto entre manos, ayer me decidi a realizar una instalacion de NGINX, PHP-7.0 y MariaDB en Windows, de esta forma, puedo testear en Windows dicha instalacion, aunque no me gusta nada, hay a quien si le gusta y este interesado en estos tipos de instalaciones.

Pues bien vamos a empezar.

Nos drigimos a NGINX ahi descargamos NGINX para windows, esta en formato zip, lo descomprimimos en la C:\ ,la carpeta la podemos llamar nginx o yo la he llamado por su verison C:\nginx-1.10.2

Hasta aqui facil no, seguimos con PHP 7

Nos dirigimos a la pagina de descarga de php-7.0 para windows

http://windows.php.net/download#php-7.0

Yo he elejido la Non Thread Safe, ya que se ejecutara como binario CGI

VC14 x64 Non Thread Safe

Una vez descargado le descomprimimos en la C:\ o com en mi caso en C:\nginx-1.10.2\php

Vamos a configurar NGINX para ejecutar PHP

Dentro de la carpeta conf en el directorio de NGINX, tenemos el fichero nginx.conf, sobre la linea 65 tenemos que descomentar las siguientes lineas y modificar con nuestra eleccion de directorios etc

location ~ \.php$ {
root           html;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
include        fastcgi_params;
}

por la linea 45 anadimos index.php, quedandonos asi

index  index.html index.htm index.php;

Yo he seguido este hilo https://www.nginx.com/resources/wiki/start/topics/examples/phpfastcgionwindows/ y he creado estos scripts

start_nginx.bat

@echo off
echo Starting PHP FastCGI...
set PATH=c:\nginx-1.10.2\php;%PATH%
cd c:\nginx-1.10.2\
start nginx
c:\nginx-1.10.2\php\RunHiddenConsole.exe c:\nginx-1.10.2\php\php-cgi.exe -b 127.0.0.1:9000 -c c:\nginx-1.10.2\php\php.ini
exit

stop_nginx.bat

@echo off
taskkill /f /im nginx.exe
taskkill /f /im php-cgi.exe
exit

Con esto ya tenemos NGINX funionando con php-7.0, ahora vamos por MariaDB

Nos dirigimos  la web de descarga https://downloads.mariadb.org/mariadb/10.1.18/

Ahi seleccionamos mariadb-10.1.18-winx64.msi

Una vez descargado el ejecutable clic clic clic, atotclic.

Para configurar mysqli descomentamos o modificamos las siguientes lineas en C:\nginx-1.10.2\php\php.ini

extension_dir = C:/nginx-1.10.2/php/ext

extension=php_mysqli.dll

extension=php_pdo_mysql.dll

Si habiamos ejecutado el script start_nginx.bat ejecutamos estop o hacemos un reload a nginx

accedemos al directorio de NGINX y

nginx.exe -s reload

Para comprobar php info.php

<?php
phpinfo();
?>

Para comprobar MariaDB

mysql_test.php

<?php
// Conexión a la base de datos
$base = mysqli_connect("127.0.0.1", "root", "password", "mysql");
if ($base) {
echo 'Conexión realizada.<br />';
echo 'Información del servidor:'.mysqli_GET_host_info($base).
'<br />';
$sql = "select host, user FROM user";
// Preparación de la consulta
$resultado = mysqli_prepare($base, $sql);
// Ejecución de la consulta.
$ok = mysqli_stmt_execute($resultado);
if ($ok == FALSE) {
echo "Error en la ejecución de la consulta.<br />";
}
else {
// Asociación de variables de resultado.
$ok = mysqli_stmt_bind_result($resultado,$host,$user);
// Lectura de valores.
echo "Host y usuario tabla user<br />";
while (mysqli_stmt_fetch($resultado)) {
echo $host.", ".$user."<br />";
}
mysqli_stmt_close($resultado);
}
if (mysqli_close($base)) {
echo 'Desconexión realizada.<br />';
}
else {
echo 'Error en la desconexión.';
}
}
else {
printf('Error %d : %s.<br/ >',mysqli_connect_errno(),
mysqli_connect_error());
}
?>

Esto es todo, un servidor web funcionando en menos de una hora.

btrfs

$ btrfs filesystem defrag -v -r dir/

Recursively defragment files under dir/, print files as they are processed. The file names will be printed in batches, similarly the amount of data triggered by defragmentation will be proportional to last N printed files. The system dirty memory throttling will slow down the defragmentation but there can still be a lot of IO load and the system may stall for a moment.

$ btrfs filesystem defrag -v -r -f dir/

Recursively defragment files under dir/, be verbose and wait until all blocks are flushed before processing next file. You can note slower progress of the output and lower IO load (proportional to currently defragmented file).

$ btrfs filesystem defrag -v -r -f -clzo dir/

Recursively defragment files under dir/, be verbose, wait until all blocks are flushed and force file compression.

$ btrfs filesystem defrag -v -r -t 64M dir/

Recursively defragment files under dir/, be verbose and try to merge extents to be about 64MiB. As stated above, the success rate depends on actual free space fragmentation and the final result is not guaranteed to meet the target even if run repeatedly.

$ btrfs filesystem resize -1G /path

$ btrfs filesystem resize 1:-1G /path

Shrink size of the filesystem’s device id 1 by 1GiB. The first syntax expects a device with id 1 to exist, otherwise fails. The second is equivalent and more explicit. For a single-device filesystem it’s typically not necessary to specify the devid though.

$ btrfs filesystem resize max /path

$ btrfs filesystem resize 1:max /path

Let’s assume that devid 1 exists, the filesystem does not occupy the whole block device, eg. it has been enlarged and we wan the grow the filesystem. Simply using max as size we will achieve that.

root@test:/home/test/VMs# gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 3907029168 sectors, 1.8 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 7DFD9799-AE91-4827-AC15-E6E15863A453
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 3907029134
Partitions will be aligned on 2048-sector boundaries
Total free space is 31459294 sectors (15.0 GiB)

Number Start (sector) End (sector) Size Code Name
1 2048 411647 200.0 MiB EF02 Linux filesystem
2 411648 12994559 6.0 GiB 8200 Swap
3 12994560 65423359 25.0 GiB 8300 System
4 65423360 2162575359 1000.0 GiB 8300 Linux filesystem
5 2319861760 3907029134 756.8 GiB 8300 Linux filesystem
8 2194032640 2319861759 60.0 GiB 8300 Linux filesystem

root@test:/home/test/VMs# df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
/dev/sda3 25G 19G 4,7G 81% /
udev 10M 0 10M 0% /dev
tmpfs 3,2G 9,2M 3,2G 1% /run
tmpfs 7,9G 460K 7,9G 1% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 7,9G 0 7,9G 0% /sys/fs/cgroup
/dev/sda8 60G 58G 2,4G 97% /xfs
/dev/sda4 200G 185G 14G 93% /home
tmpfs 1,6G 4,0K 1,6G 1% /run/user/118
tmpfs 1,6G 12K 1,6G 1% /run/user/1000

root@test:/home/test/VMs# btrfs filesystem df /home/
Data, single: total=188.01GiB, used=185.94GiB
System, DUP: total=8.00MiB, used=48.00KiB
System, single: total=4.00MiB, used=0.00B
Metadata, DUP: total=1.50GiB, used=680.66MiB
Metadata, single: total=8.00MiB, used=0.00B
GlobalReserve, single: total=240.00MiB, used=0.00B

root@test:/home/test/VMs# btrfs filesystem show /dev/sda4
Label: none uuid: 3ac934be-2651-48d2-8850-3d3bbc8a98e0
Total devices 1 FS bytes used 186.60GiB
devid 1 size 200.00GiB used 191.04GiB path /dev/sda4
Btrfs v3.17

root@test:/home/test/VMs# btrfs filesystem resize +50G /home
Resize ‘/home’ of ‘+50G’

root@test:/home/test/VMs# btrfs filesystem df /home/
Data, single: total=188.01GiB, used=185.94GiB
System, DUP: total=8.00MiB, used=48.00KiB
System, single: total=4.00MiB, used=0.00B
Metadata, DUP: total=1.50GiB, used=680.89MiB
Metadata, single: total=8.00MiB, used=0.00B
GlobalReserve, single: total=240.00MiB, used=0.00B

root@test:/home/test/VMs# df -h
S.ficheros Tamaño Usados Disp Uso% Montado en
/dev/sda3 25G 19G 4,7G 81% /
udev 10M 0 10M 0% /dev
tmpfs 3,2G 9,2M 3,2G 1% /run
tmpfs 7,9G 460K 7,9G 1% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 7,9G 0 7,9G 0% /sys/fs/cgroup
/dev/sda8 60G 58G 2,4G 97% /xfs
/dev/sda4 250G 188G 62G 76% /home
tmpfs 1,6G 4,0K 1,6G 1% /run/user/118
tmpfs 1,6G 12K 1,6G 1% /run/user/1000

root@test:/home/test/VMs# btrfs filesystem show /dev/sda4
Label: none uuid: 3ac934be-2651-48d2-8850-3d3bbc8a98e0
Total devices 1 FS bytes used 179.06GiB
devid 1 size 250.00GiB used 191.04GiB path /dev/sda4

Btrfs v3.17

Reparar imagen qcow2 corrupta, ampliar y reducir

Hoy he estado modificando tamaños de imágenes qcow2 y he dejado un imagen corrupta, pues bien hay solución.

Al querer abrir la imagen me daba este error indicando que esta corrupta.

qemu-img: Could not open 'test-i386.qcow2': qcow2: Image is corrupt; cannot be opened read/write

Para solucionarlo primero analizaremos la situación

file test-i386.qcow2
test-i386.qcow2: QEMU QCOW Image (v3), 12884901888 bytes
qemu-img info test-i386.qcow2
 image: test-i386.qcow2
 file format: qcow2
 virtual size: 12G (12884901888 bytes)
 disk size: 11G
 cluster_size: 65536
 Format specific information:
     compat: 1.1
     lazy refcounts: true

Hacemos un check

qemu-img check test-i386.qcow2
No errors were found on the image.
179022/196608 = 91.06% allocated, 3.54% fragmented, 0.00% compressed clusters

Si viésemos que no funciona, en mi caso no funcionaba ejecutamos el siguiente comando.

qemu-img check -r all test-i386.qcow2
No errors were found on the image.
179022/196608 = 91.06% allocated, 3.54% fragmented, 0.00% compressed clusters
Image end offset: 11734548480

Ahora  continuo haciendo lo que quería hacer reducir pero antes ampliare la imagen (4 veces).

qemu-img resize test-i386.qcow2 +2G
Image resized.
qemu-img resize test-i386.qcow2 +2G
Image resized.
qemu-img resize test-i386.qcow2 +2G
Image resized.
qemu-img resize test-i386.qcow2 +2G
Image resized.
qemu-img info test-i386.qcow2
image: test-i386.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 11G
cluster_size: 65536
Format specific information:
 compat: 1.1
 lazy refcounts: true

Ahora pasamos de qcow2 a raw para luego poder reducir

qemu-img convert -O raw test-i386.qcow2 VM1.raw

Una vez pasado a raw

-rw-r--r-- 1 root root 11734548992 jun 25 10:23 test-i386.qcow2
-rw-r--r-- 1 root root 21474836480 jun 25 10:27 VM1.raw

Reduzco

qemu-img resize VM1.raw -8G
Image resized.

así queda pues

-rw-r--r-- 1 root root 11734548992 jun 25 10:23 test-i386.qcow2
-rw-r--r-- 1 root root 12884901888 jun 25 10:51 VM1.raw 

Lo volvemos a convertir a qcow2

 qemu-img convert -c -O qcow2 VM1.raw test-i386.qcow2

Se a reducido mucho el tamaño de la imagen

-rw-r--r-- 1 root root 5369626624 jun 25 10:59 test-i386.qcow2
-rw-r--r-- 1 root root 12884901888 jun 25 10:51 VM1.raw

Comprobamos que todo sea correcto

qemu-img info test-i386.qcow2
image: test-i386.qcow2
file format: qcow2
virtual size: 12G (12884901888 bytes)
disk size: 5.0G
cluster_size: 65536
Format specific information:
 compat: 1.1
 lazy refcounts: false

Por si quedan dudas la imagen se va incrementando tal i como podéis observar

-rw-r--r-- 1 libvirt-qemu libvirt-qemu 5394399232 jun 25 11:23 test-i386.qcow2
-rw-r--r-- 1 root root 12884901888 jun 25 10:51 VM1.raw

Captura de pantalla de 2016-06-25 11:17:03

 

chroot

Cuando no podemos o queremos acceder a un sistema por diversas causas o queremos simplemente hacer pruebas con un sistema operativo GNU-Linux sin instalar, podemos hacer un chroot para así realizar las modificaciones que creamos oportunas o simplemente testear el sistema seguiremos estos pasos.

Montamos la partición, en este caso utilizamos una partición pero podíamos haber montado una iso, tener  todos los ficheros en una carpeta, y simplemente es lo que hacemos lo montamos en una carpeta para poder ver los ficheros y así acceder a ellos.

mount /dev/sda1 /mnt

Una vez montado tenemos que montar los recursos del sistema para que una vez cambiemos la raíz podamos acceder a ellos.

mount --bind /dev /mnt/dev

Hemos montado dev, ahora montamos proc

mount --bind /proc /mnt/proc

Y nos queda sys

mount --bind /sys /mnt/sys

Bien con esto ya podemos cambiar la raíz

chroot /mnt

y realizar las tareas necesarias.