Ejecutar php sin servidor web

Hoy continuo realizando un proyecto, he tenido la necesidad de ver vía navegador parte de código antiguo que esta en php, pues bien, normalmente suelo ejecutar :

python -m SimpleHTTPServer 80

Serving HTTP on 0.0.0.0 port 80 ...
192.168.1.90 - - [08/Sep/2016 08:40:21] "GET / HTTP/1.1" 200 -
192.168.1.90 - - [08/Sep/2016 08:40:51] "GET /test HTTP/1.1" 200 -

Esto va muy bien si lo que necesitas ver es html o descargar algún fichero, normalmente lo utilizo para descargar algún pdf o música al móvil, entre otras.

El problema que surgía hoy es que tenia un antiguo proyecto en php, puedo arrancar alguna maquina virtual, subir el proyecto y listo, pero, por que no lo puedo visualizar desde mi equipo tal y como esta, la solución esta en php.

En mi caso como ejecutable php tengo el siguiente binario :

/usr/bin/php5

Este lo utilizo por consola para ejecutar algunos scripts en php.

Ahora bien, ¿como hago para poder poner en escucha el equipo en el puerto 80 y poder interpretar en código php?
Se hace de la siguiente forma:

Accedemos como superuser al directorio donde tenemos nuestro código php y ejecutamos:

php5 -S 127.0.0.1:80 -t .
php5 [options] -S <addr>:<port> [-t docroot]

Fuente: http://www.enmimaquinafunciona.com/pregunta/12982/como-ejecutar-php-con-simplehttpserver

Fuente: http://www.enmimaquinafunciona.com/pregunta/12982/como-ejecutar-php-con-simplehttpserver

Fuente: http://www.enmimaquinafunciona.com/pregunta/12982/como-ejecutar-php-con-simplehttpserver

Si os fijáis hay un punto al final, este indica el directorio actual, también podríamos indicar el directorio a publicar :

php5 -S 127.0.0.1:80 -t /home/test/project_php

De esta forma se pone a la escucha.

PHP 5.6.17-3 Development Server started at Thu Sep 8 08:26:26 2016
Listening on http://127.0.0.1:80
Document root is /home/test/project_php
Press Ctrl-C to quit.

Si accedemos vía navegador, veremos como se ejecuta correctamente:

captura-de-pantalla-de-2016-09-08-082931

También podemos observar a que fichero hemos accedido, con su código de estado:

PHP 5.6.17-3 Development Server started at Thu Sep  8 08:26:26 2016
Listening on http://127.0.0.1:80
Document root is /home/test/project_php
Press Ctrl-C to quit.
[Thu Sep  8 08:27:45 2016] 127.0.0.1:60148 [200]: /info.php

 

 

php5 -S 192.168.1.90:80 -t /home/test/project_php

PHP 5.6.17-3 Development Server started at Thu Sep  8 08:36:21 2016
Listening on http://192.168.1.35:80
Document root is /home/test/project_php
Press Ctrl-C to quit.
[Thu Sep  8 08:36:25 2016] 192.168.1.33:60045 [200]: /info.php
[Thu Sep  8 08:36:26 2016] 192.168.1.33:60046 [404]: /favicon.ico - No such file or directory
[Thu Sep  8 08:36:26 2016] 192.168.1.33:60047 [404]: /favicon.ico - No such file or directory

Bien de una forma u otra podemos interpretar el código php para visualizarlo en el navegador, también recordemos como lo hemos hecho con python.

Mysql consultas

SELECT table_name AS "Tables", round(((data_length + index_length) / 1024 / 1024), 2) "Size in MB" FROM information_schema.TABLES ORDER BY (data_length + index_length) DESC;

SELECT TABLE_SCHEMA AS 'Database', TABLE_NAME AS 'Table', CONCAT(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 / 1024),2)," Mb") AS Size FROM INFORMATION_SCHEMA.TABLES;

SELECT TABLE_SCHEMA AS 'Database', TABLE_NAME AS 'Table', CONCAT(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 / 1024),2)," MB") AS Size FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA like '%YOUR_DB_NAME%' ;

SELECT CONCAT(sum(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 / 1024),2))," MB") AS Size FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA like '%YOUR_DB_NAME%' ;

 

SELECT table_schema "databases", sum( data_length + index_length ) / 1024 / 1024 "data length", sum( data_free )/ 1024 / 1024  "data free" FROM info
rmation_schema.TABLES GROUP BY table_schema ;

 

SELECT unix_timestamp()-31*86400 "unix time";

 

SELECT count(*) TABLES, concat(round(sum(table_rows)/1000000,2),'K') rows, concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA, concat(round(sum(index_length)/(1024*1024*1024),2),'G') index, concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size, round(sum(index_length)/sum(data_length),2) indexfrac FROM information_schema.TABLES;

 

SELECT count(*) TABLES,table_schema,concat(round(sum(table_rows)/1000000,2),'M') rows, concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA, concat(round(sum(index_length)/(1024*1024*1024),2),'G') index, concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size, round(sum(index_length)/sum(data_length),2) indexfrac FROM information_schema.TABLES GROUP BY table_schema ORDER BY sum(data_length+index_length) DESC LIMIT 10;

 

SELECT engine, count(*) TABLES, concat(round(sum(table_rows)/1000000,2),'M') rows, concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA, concat(round(sum(index_length)/(1024*1024*1024),2),'G') index, concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size, round(sum(index_length)/sum(data_length),2) indexfrac FROM information_schema.TABLES GROUP BY engine ORDER BY sum(data_length+index_length) DESC LIMIT 10;

Reset password user Mysql

Hi all,

Working on a project Today I found I needed the password of user admin mysql database in windows, as well to perform the reset of the database execute the following command :

mysqld.exe -u admin --skip-grant-tables

Then:

mysql.exe

select user from mysql.user;

update mysql.user set password = password('new password') where user = 'admin';

flush privileges;

\q

And this is all

C:\Parallels\Plesk\Databases\MySQL51\bin>mysql -u admin -p
Enter password: *********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.73-community MySQL Community Server (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.02 sec)

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