Linux


blog.udartsev.ru

GOLANG - go.sum (fix)

Delete conflict package sums:

sed '/^github.com\/hyperledger\/fabric v1.4.4/d' ./go.sum > temp.txt && mv temp.txt go.sum

DOCKER - Powerfull comands


[CONTAINERS] ПОИСК КОНТЕЙНЕРОВ:

docker ps -a $(docker ps -a -f "since=b2f3a7899d6d" -q) 
  • since= все контейнеры ПОСЛЕ
  • before= все контейнеры ДО
  • -q вернуть только ID контейнеров

[CONTAINERS] УДАЛИТЬ ВСЕ КОНТЕЙНЕРЫ:

docker rm -f $(docker ps -a -q)

[CONTAINERS] УДАЛИТЬ КОНТЕЙНЕР С ПРЕФИКСОМ В ИМЕНИ = cli:

docker rm -f $(docker ps -a -f "name=cli" -q)

[CONTAINERS] ЗАЙТИ В КОНТЕЙНЕР С ПРЕФИКСОМ В ИМЕНИ = cli:

docker exec -ti $(docker ps -a -f "name=cli" -q) bash
peer chaincode list --installed
peer channel list

[IMAGES] УДАЛИТЬ ВСЕ IMAGES:

docker image rm -f $(docker images -a -q)

[IMAGES]УДАЛИТЬ IMAGES (поиск):

docker image rm $(docker image ls -f "since=b2f3a7899d6d" -q) 

[VOLUMES] УДАЛИТЬ ВСЕ UNUSED VOLUMES:

docker volume prune

[VOLUMES]УДАЛИТЬ ВСЕ VOLUMES:

docker volume rm $(docker volume ls -q)

[GLOBAL] ОЧИСТА ОТ НЕИСПОЛЬЗУЕМЫХ КОНТЕЙНЕРОВ, IMAGES и VOLUMES:

docker system prune

[NETWORKS] СПИСОК ВСЕХ NETWORKS:

docker network ls

[CONTAINERS] ИНФОРМАЦИЯ О КОНТЕЙНЕРЕ:

docker inspect -f 25942aa05b32

[CONTAINERS] ПОЛУЧИТЬ IP КОНТЕЙНЕРА:

docker inspect -f '{{range.NetworkSettings.Networks}}{{.Aliases}} | {{.IPAddress}}{{end}}' 25942aa05b32

[CONTAINERS] ПОИСК КОТЕЙНЕРА ПО IP

docker inspect -f '{{range.NetworkSettings.Networks}}{{.Aliases}} {{.IPAddress}}{{end}}' $(docker ps -q) | grep 172.20.0.20

[IMAGES] ФИЛЬТР IMAGES:

docker images --filter "<option>=<value>"
docker image ls --filter "<option>=<value>"

docker image ls --filter "reference=hyperledger/fabric-peer:crypto-pro"

“–filter” options:

  • reference : that can be used in order to isolate images having a certain name or tag;

  • before : to filter images created “before” a specific point in time;

  • since: to filter images since a specific point in time (usually another image creation);

  • label: if you used the LABEL instruction to create metadata for your image you can filter them later with this key;

  • dangling: in order to isolate images that are not used anymore.


PYTHON - Remove commented lines from .py code files

1. Create clear.sh file with:

#!/bin/sh
FILES=$(find . -name "*.py" -not -path "./env/*")
for FILE in $FILES
    do
        sed '/""".*"""/d;s/#.*$//;s/^\n$/\n/' $FILE > temp.txt && mv temp.txt $FILE
        echo "Processed file: $FILE"
    done
exit 0

2. Copy in in /your_project_root_foder/ and run:

    sh clear.sh

Ubuntu Linux - 3+more monitors Artifacts fix

Ubuntu Monitor Artifacts FIX

1. Change GRUB config file:

    gedit /etc/default/grub

Changed this line:

GRUB_CMDLINE_LINUX=""

to this:

GRUB_CMDLINE_LINUX="amd_iommu=on iommu=pt"

then:

sudo update-grub && sudo reboot

2. Update kernel iniframs:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
cd linux-firmware/
sudo cp -va amdgpu/ /lib/firmware/
sudo update-initramfs -u
reboot

SSH key to server

SSH => server

Create a key:

ssh-keygen -t rsa

Copy it to the server:

ssh-copy-id -i ./mainserver.pub archive@5.45.79.2

OR

ssh archive@5.45.79.2 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

cat ./mainserver.pub | ssh archive@5.45.79.2 'cat >> .ssh/authorized_keys'

OR

ssh -i /root/.ssh/mainserver.pub archive@5.45.79.2

PostgreSQL - Run server on startup (Linux)

1) Check your chmod file available:

sudo chmod +x /etc/rc.local

2) Edit rc.local file:

sudo gedit /etc/rc.local

3) Add:

# PostgreSQL
mkdir /var/run/postgresql
mkdir /var/run/postgresql/12-main.pg_stat_tmp
touch /var/run/postgresql/12-main.pg_stat_tmp/global.tmp
chown -R postgres:postgres /var/run/postgresql
su postgres -c '/usr/lib/postgresql/12/bin/pg_ctl start -D /etc/postgresql/12/main'

# OR CHANGE YOUR DB VERSION AND DATABASE FILES FOLDER
# su postgres -c '/usr/lib/postgresql/9.5/bin/pg_ctl start -D /etc/postgresql/9.5/main'

4) Enable rc.local instructions (it is turned off by default):

sudo systemctl enable rc-local.service

5) Start your rc.local scripts right now:

sudo systemctl start  rc-local.service

MySQL - Восстанавливаем системные таблицы

Бывает, что после физического переноса MySQL базыданных - движоп перестаёт обновляться. Это вызвано ошибками в InnoDB файлах системы. Поэтому, в попытке обновления мы можем увидеть предупреждения о несуществующих таблица (даже если они физически присутствуют в папке и отображаются в SQL-менеджере):

enter image description here

Для того, что бы нам исправить эти ошибки - нам нужно удалить старые таблицы и создать новые.

1) Подключаемся кMySQL движку через консоль:

mysql -u admin -p -h localhost

2) Выбираем системную БД:

use mysql;

3) Удаляем таблицу через SQL-менеджер (нужно для регистрации удаления в системных файлах движка) или через консоль:

DROP TABLE <название таблицы>;

4) В папке с системными файлами /var/lib/mysql удаляем остатки от <название таблицы> с разрешениями <название таблицы>.ibd и .frm. Например:

sudo rm /var/lib/mysql/servers.ibd
sudo rm /var/lib/mysql/servers.frm

5) Создаём новые таблицы через консоль mysql. Ниже приведены SQL запросы для восстановления таблиц.

mysql.servers

CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL,
`Host` char(64) NOT NULL,
`Db` char(64) NOT NULL,
`Username` char(64) NOT NULL,
`Password` char(64) NOT NULL,
`Port` int(4) DEFAULT NULL,
`Socket` char(64) DEFAULT NULL,
`Wrapper` char(64) NOT NULL,
`Owner` char(64) NOT NULL,
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8     
COMMENT='MySQL Foreign Servers table';

mysql.innodb_index_stats

CREATE TABLE `innodb_index_stats` (
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(64) COLLATE utf8_bin NOT NULL,
`index_name` varchar(64) COLLATE utf8_bin NOT NULL,
`last_update` timestamp NOT NULL DEFAULT 
CURRENT_TIMESTAMP ON UPDATE 
CURRENT_TIMESTAMP,
`stat_name` varchar(64) COLLATE utf8_bin NOT NULL,
`stat_value` bigint(20) unsigned NOT NULL,
`sample_size` bigint(20) unsigned DEFAULT NULL,
`stat_description` varchar(1024) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 
COLLATE=utf8_bin STATS_PERSISTENT=0;

mysql.innodb_table_stats

CREATE TABLE `innodb_table_stats` (
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(64) COLLATE utf8_bin NOT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`n_rows` bigint(20) unsigned NOT NULL,
`clustered_index_size` bigint(20) unsigned NOT NULL,
`sum_of_other_index_sizes` bigint(20) unsigned NOT NULL,
PRIMARY KEY (`database_name`,`table_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;

mysql.slave_master_info

CREATE TABLE `slave_master_info` (
`Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file.',
`Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log currently being read from the master.',
`Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last read event.',
`Host` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'The host name of the master.',
`User_name` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The user name used to connect to the master.',
`User_password` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The password used to connect to the master.',
`Port` int(10) unsigned NOT NULL COMMENT 'The network port used to connect to the master.',
`Connect_retry` int(10) unsigned NOT NULL COMMENT 'The period (in seconds) that the slave will wait before trying to reconnect to the master.',
`Enabled_ssl` tinyint(1) NOT NULL COMMENT 'Indicates whether the server supports SSL connections.',
`Ssl_ca` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The file used for the Certificate Authority (CA) certificate.',
`Ssl_capath` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The path to the Certificate Authority (CA) certificates.',
`Ssl_cert` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the SSL certificate file.',
`Ssl_cipher` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the cipher in use for the SSL connection.',
`Ssl_key` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the SSL key file.',
`Ssl_verify_server_cert` tinyint(1) NOT NULL COMMENT 'Whether to verify the server certificate.',
`Heartbeat` float NOT NULL,
`Bind` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'Displays which interface is employed when connecting to the MySQL server',
`Ignored_server_ids` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The number of server IDs to be ignored, followed by the actual server IDs',
`Uuid` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The master server uuid.',
`Retry_count` bigint(20) unsigned NOT NULL COMMENT 'Number of reconnect attempts, to the master, before giving up.',
`Ssl_crl` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The file used for the Certificate Revocation List (CRL)',
`Ssl_crlpath` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The path used for Certificate Revocation List (CRL) files',
`Enabled_auto_position` tinyint(1) NOT NULL COMMENT 'Indicates whether GTIDs will be used to retrieve events from the master.',
PRIMARY KEY (`Host`,`Port`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Master Information';

mysql.slave_relay_log_info

CREATE TABLE `slave_relay_log_info` (
`Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.',
`Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.',
`Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.',
`Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.',
`Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.',
`Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.',
`Number_of_workers` int(10) unsigned NOT NULL,
`Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.',
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information';

mysql.slave_worker_info

CREATE TABLE `slave_worker_info` (
`Id` int(10) unsigned NOT NULL,
`Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Relay_log_pos` bigint(20) unsigned NOT NULL,
`Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Master_log_pos` bigint(20) unsigned NOT NULL,
`Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL,
`Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL,
`Checkpoint_seqno` int(10) unsigned NOT NULL,
`Checkpoint_group_size` int(10) unsigned NOT NULL,
`Checkpoint_group_bitmap` blob NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information';

mysql.help_topic

CREATE TABLE `help_topic` (
`help_topic_id` int(10) unsigned NOT NULL,
`name` char(64) CHARACTER SET utf8 COLLATE utf8_bin UNIQUE NULL,
`help_category_id` smallint(5) unsigned NULL,
`description` text CHARACTER SET utf8 COLLATE utf8_bin NULL,
`example` text CHARACTER SET utf8 COLLATE utf8_bin NULL,
`url` char(128) CHARACTER SET utf8 COLLATE utf8_bin NULL,
PRIMARY KEY (`help_topic_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Installation HELP command table';

mysql.help_keyword

CREATE TABLE `help_keyword` (
`help_keyword_id` int(10) unsigned NOT NULL,
`name` char(64) CHARACTER SET utf8 COLLATE utf8_bin UNIQUE NULL,
PRIMARY KEY (`help_keyword_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Installation HELP command table';

mysql.help_relation

CREATE TABLE `help_relation` (
`help_topic_id` int(10) unsigned NOT NULL,
`help_keyword_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`help_topic_id`, `help_keyword_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Installation HELP command table';

mysql.help_category

CREATE TABLE `help_category` (
`help_category_id` smallint(5) unsigned NOT NULL,
`name` char(64) CHARACTER SET utf8 COLLATE utf8_bin UNIQUE NULL,
`parent_category_id` smallint(5) unsigned NULL,
`url` char(128) CHARACTER SET utf8 COLLATE utf8_bin NULL,
PRIMARY KEY (`help_category_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Installation HELP command table';

mysql.time_zone_name

CREATE TABLE `time_zone_name` (
`Name` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Time_zone_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`Name`, `Time_zone_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';

mysql.time_zone

CREATE TABLE `time_zone` (
`Time_zone_id` int(10) unsigned NOT NULL,
`Use_leap_seconds`enum('Y','N') CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 'N',
PRIMARY KEY (`Time_zone_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';

mysql.time_zone_leap_second

CREATE TABLE `time_zone_leap_second` (
`Transition_time` bigint(20) unsigned NOT NULL,
`Correction` int(11) unsigned NOT NULL,
PRIMARY KEY (`Transition_time`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';

mysql.time_zone_transition

CREATE TABLE `time_zone_transition` (
`Time_zone_id` int(10) unsigned NOT NULL,
`Transition_time` bigint(20) unsigned NOT NULL,
`Transition_type_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`Time_zone_id`, `Transition_time`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';

mysql.time_zone_transition_type

CREATE TABLE `time_zone_transition_type` (
`Time_zone_id` int(10) unsigned NOT NULL,
`Transition_type_id` int(10) unsigned NOT NULL,
`Offset` int(11) DEFAULT '0' NOT NULL,
`Is_DST` tinyint(3) unsigned DEFAULT '0' NOT NULL,
`Abbreviation` char(8) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`Time_zone_id`, `Transition_type_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';

mysql.gtid_executed

CREATE TABLE gtid_executed (
`source_uuid` CHAR(36) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`interval_start` BIGINT(20) NOT NULL,
`interval_end` BIGINT(20) NOT NULL,
PRIMARY KEY (`source_uuid`, `interval_start`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='GTIDs stores here';

scripts/mysql_system_tables.sql:

mysql.server_cost

CREATE TABLE IF NOT EXISTS server_cost (
  cost_name   VARCHAR(64) NOT NULL,
  cost_value  FLOAT DEFAULT NULL,
  last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  comment     VARCHAR(1024) DEFAULT NULL,
  default_value FLOAT GENERATED ALWAYS AS
    (CASE cost_name
       WHEN 'disk_temptable_create_cost' THEN 20.0
       WHEN 'disk_temptable_row_cost' THEN 0.5
       WHEN 'key_compare_cost' THEN 0.05
       WHEN 'memory_temptable_create_cost' THEN 1.0
       WHEN 'memory_temptable_row_cost' THEN 0.1
       WHEN 'row_evaluate_cost' THEN 0.1
       ELSE NULL
     END) VIRTUAL,
  PRIMARY KEY (cost_name)
) ENGINE=InnoDB CHARACTER SET=utf8 COLLATE=utf8_general_ci STATS_PERSISTENT=0;

mysql.engine_cost

CREATE TABLE IF NOT EXISTS engine_cost (
  engine_name VARCHAR(64) NOT NULL,
  device_type INTEGER NOT NULL,
  cost_name   VARCHAR(64) NOT NULL,
  cost_value  FLOAT DEFAULT NULL,
  last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  comment     VARCHAR(1024) DEFAULT NULL,
  default_value FLOAT GENERATED ALWAYS AS
    (CASE cost_name
       WHEN 'io_block_read_cost' THEN 1.0
       WHEN 'memory_block_read_cost' THEN 0.25
       ELSE NULL
     END) VIRTUAL,
  PRIMARY KEY (cost_name, engine_name, device_type)
) ENGINE=InnoDB CHARACTER SET=utf8 COLLATE=utf8_general_ci STATS_PERSISTENT=0;

6) Перезагружаем MySQL:

sudo /etc/init.d/mysql start

PS: Подробнее о таблицах можно узнать на сайте MySQL и MariaDB: https://mariadb.com/kb/en/library/the-mysql-database-tables/


MySQL - Backup and restoring database

Backup database

time mysqldump -u root -p database > /var/backups/restore_backup.sql

Backup config and data

mv /var/lib/mysql /tmp/backups/mysql-lib.bak
cp /etc/mysql/my.cnf /tmp/backups/my.cnf.bak

Purge library

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

Reinstall

sudo apt-get update
sudo apt-get install mysql-server

Restore config

cp /tmp/backups/my.cnf.bak /etc/mysql/my.cnf
sudo service mysql restart

Create database

mysql -u root -p
mysql> CREATE DATABASE database;

Restore backup

time mysql -u root -p database < /var/backups/restore_backup.sql

EXIFTOOL - Getting data from RAW (CR2) File to JPG (Ubuntu/Linux)

If you want to get data (in JPG) from your RAW file in Ubuntu/Linux, do next:

1) Install exiftool in your Linux system:

sudo apt install exiftool

2) not necessary step: view your RAW file data:

exiftool -s2 -all -b -X -fXMP:XMP foto.cr2

3) not necessary step: near the bottom, it will shows:

Composite:PreviewImage='(Binary data 1706501 bytes, use -b option to extract)'
Composite:ThumbnailImage='(Binary data 17031 bytes, use -b option to extract)'

enter image description here

4) Use the "-b" option to extract either or both:

exiftool -Composite:PreviewImage -b foto.cr2 >preview.jpg
exiftool -Composite:ThumbnailImage -b foto.cr2 >thumb.jpg

5) To extract data from all files in the folder, do next:

for i in *.CR2; do exiftool -Composite:PreviewImage -b $i > $i.jpg; done

6) Done. We did execute all JPG data from RAW files: enter image description here


PHP - 7.2.1 Compiling

1) sudo ./buildconf --force

2)sudo ./configure --prefix=/etc/php72 --enable-bcmath --with-pcre-dir=/soft/php72/php-7.2.1/ext/pcre --with-gettext=/usr/lib/gettext --with-pgsql=/usr/lib/postgresql/9.5 --with-pear=/soft/php72/php-7.2.1/pear --with-tsrm-pthreads --enable-maintainer-zts --with-openssl --enable-pthreads=shared --enable-cli --enable-mbstring --enable-intl --enable-zip --enable-mysqlnd --enable-sockets --with-gd --with-mysqli --with-pdo-mysql --with-openssl --enable-dba=shared --enable-opcache --enable-calendar --enable-exif --enable-pcntl

3) sudo make sudo make test sudo make install

//////////////////////////////////// sudo -i

apt-get update

apt-get install -y git bison autoconf build-essential pkg-config gitcore libltdl-dev libbz2-dev libxml2-dev libxslt1-dev libssl-dev libicu-dev libpspell-dev libenchant-dev libmcrypt-dev libpng-dev libjpeg8-dev libfreetype6-dev libmysqlclient-dev libreadline-dev libcurl4-openssl-dev

mkdir /etc/php7

mkdir /etc/php7/cli

cd /usr/local/src

git clone https://github.com/php/php-src.git --depth=1

cd php-src/ext

git clone https://github.com/krakjoe/pthreads -b master pthreads

cd ..

./buildconf --force

php_configure_args="--prefix=/etc/php7 --with-config-file-path=/etc/php7/cli --with-config-file-scan-dir=/etc/php7/cli/conf.d --with-bz2 --with-zlib --enable-zip --with-openssl --with-curl --enable-ftp --with-mysqli --enable-sockets --enable-pcntl --with-pspell --with-enchant --with-gettext --with-gd --enable-exif --with-jpeg-dir --with-png-dir --with-freetype-dir --with-xsl --enable-bcmath --enable-mbstring --enable-calendar --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-maintainer-zts --enable-debug --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --enable-cli --enable-pthreads=shared --with-tsrm-pthreads"

./configure $php_configure_args

make && make install

cd /usr/local/src/php-src/ext/intl*

chmod a+x /etc/php7/bin/php-config

chmod a+x /etc/php7/bin/phpize

/etc/php7/bin/phpize

./configure --enable-intl --with-icu-dir=/usr --prefix='/etc/php7' --with-libdir='/lib/x86_64-linux-gnu' --with-php-config='/etc/php7/bin/php-config'

make && make install

cp /usr/local/src/php-src/php.ini-production /etc/php7/cli/php.ini

ln --symbolic /etc/php7/bin/php /usr/bin/php

ln --symbolic /etc/php7/sbin/php-fpm /usr/sbin/php7-fpm

echo 'zend_extension=opcache.so' >> /etc/php7/cli/php.ini

echo 'extension=pthreads.so' >> /etc/php7/cli/php-cli.ini

echo "extension=intl.so" >> /etc/php7/cli/php.ini