Get Social

Сборка PHP 7.4 с помощью phpbrew на сервере Ubuntu/Debian (Vesta CP)

Возникла задача поставить PHP 7.4 на сервер Ubuntu (также можно и на Debian). Ставить буду через phpbrew с учётом того, что используется Vesta CP для управления сервером.

Предварительная подготовка phpbrew на сервере Ubuntu/Debian под управлением Vesta CP

1. Перейдём в папку /root

cd /root

2. Подготовим phpbrew для компиляции. Ставить будем в альтернативную папку: /usr/local/php

phpbrew init --root=/usr/local/php
  
export PHPBREW_ROOT=/usr/local/php

[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc

phpbrew update

3. При первой попытке собрать PHP 7.4 у меня выдало ошибку.

ошибка сборки Phpbrew на Vesta (Debian/Ubuntu) – “No package oniguruma found” (pkg-config)

Как побороть?

Сначала находим и ставим нужный пакет, который требуется для удовлетворения зависимости:

# apt search oniguruma
Sorting... Done
Full Text Search... Done
libjruby-joni-java/oldstable,oldstable 2.1.11-2 all
 Java port of Oniguruma regexp library

libonig-dev/oldstable,oldstable,now 6.1.3-2 amd64 [installed]
 regular expressions library — development files

libonig4/oldstable,oldstable,now 6.1.3-2 amd64 [installed,automatic]
 regular expressions library

libonig4-dbg/oldstable,oldstable 6.1.3-2 amd64
 regular expressions library — debugging symbols

lua-rex-onig/oldstable,oldstable 2.7.2-4 amd64
 Onig regular expressions library for the Lua language

Ставится командой:

apt install libonig-dev

Затем редактируем команду сборки, учитывая, что пишут на GitHub:

Вот готовая команда для сборки:

phpbrew install 7.4 +default +openssl=shared -- --with-openssl-dir=/usr/include/openssl --with-mysql-sock=/var/run/mysqld/mysqld.sock --with-mysql=mysqlnd --with-mysqli=mysqlnd --enable-pdo --with-pdo-mysql=mysqlnd --enable-exif --with-jpeg=/usr --with-freetype=/usr --with-mcrypt=/usr --with-mhash --with-xsl=/usr --enable-zip --enable-cgi --with-curl --enable-gd --enable-pcntl --enable-mbregex --enable-gd-native-ttf --with-libdir=lib64 --enable-dba=shared --enable-intl --with-readline=/usr --enable-simplexml --enable-soap --enable-zip --with-mhash=yes --enable-shmop --enable-sockets --enable-wddx --enable-calendar --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-bcmath --with-bz2 --enable-ctype --with-cdb --with-iconv --enable-exif --enable-ftp --with-gettext --with-pic

В конце создадим символическую ссылку, чтобы потом настроить конфигурацию в Vesta CP:

ln -s /usr/local/php/php/php-7.4.8 /usr/local/php/php74

Ускоряем Dell Inspiron 3521 с помощью китайского SSD faspeed

Нашёл эту запись в блоге в черновиках и решил выложить.

Вся конфигурация проработала несколько лет успешно и уже продал тот ноутбук и купил новый…

Решил сделать апгрейд своего ноутбука.

Что имеем вначале:

  1. 4 GB DDR3L SDRAM 1600 MHz
  2. пустой разъём DDR3L
  3. 500 GB HDD
  4. привод DVD±RW (±R DL)

Что должно получиться в итоге:

  1. 4 GB DDR3L SDRAM 1600 MHz
  2. 4 GB DDR3L SDRAM 1600 MHz – нашёл и зазазал на eBay
    (итого 8 GB)
  3. 30 GB faspeed SSD (модель H5-30G) – заказал на Aliexpress
    (вместо HDD, для системы Debian 9 “Stretch”)
  4. 500 GB HDD – просто переставил сюда в переходник 5
    (вместо DVD)
  5. переходник SATA-USB – также заказал на eBay
    (получаем внешний привод DVD±RW)

 

Как настроить Let’s Encrypt на админке VestaCP (8083 порт) с учётом CA

Предполагается, что у вас есть валидный домен (так называемый FQDN), который можно использовать для входа в админку. В моем случае, OVH предоставил бесплатно домен вида ns123456.ip-x-y-z.eu, а значит его можно использовать для входа в админку: https://ns123456.ip-x-y-z.eu:8083/

Пошаговая настройка Let’s Encrypt на админке VestaCP (8083 порт).

1 шаг – создать домен и найти файлы let’s encrypt.

Сначала в админке создайте ваш домен, если он ещё не создан. Можно использовать пользователя по умолчанию – admin, или любого другого. Включите использование ssl и let’s encrypt – вы получите примерно то же, что на скриншоте:

Let’s encrypt генерирует файлы SSL сертификатов  и хранит их в /home/[USERNAME]/conf/web (/home/admin/conf/web – в моём случае)

Вот список файлов :

ssl.ns123456.ip-x-y-z.eu.crt
ssl.ns123456.ip-x-y-z.eu.ca
ssl.ns123456.ip-x-y-z.eu.key
ssl.ns123456.ip-x-y-z.eu.pem

2 шаг – найти, где VestaCP хранит свои файлы SSL.

Искать не надо, мы просто знаем, что они лежат здесь

/usr/local/vesta/ssl

и выглядят они так:

certificate.crt
certificate.key

Вы можете бережно переименовать старые файлы сертификатов от VestaCP (хотя что мешает просто их убрать?).

mv /usr/local/vesta/ssl/certificate.crt /usr/local/vesta/ssl/certificate_old.crt
mv /usr/local/vesta/ssl/certificate.key /usr/local/vesta/ssl/certificate_old.key

Эти 2 файла задаются в форме https://ns123456.ip-x-y-z.eu:8083/edit/server/ -> Vesta SSL

3 шаг – заставить службу Vesta-Nginx использовать SSL от домена

Теперь вы наверное подумали – мы просто создадим символические ссылки и всё будет хорошо… Но…

Но вы заметили проблемку? В первом случае мы имеем 4 файла, и хотя на .pem можно не обращать внимания – в форме у нас есть 3 поля: для CRT, KEY и CA, а во втором – только 2: для CRT и KEY.

Let’s Encrypt имеет файл CA, который отражается в поле: SSL Certificate Authority / Intermediate

Как это можно учесть в админке VestaCP на порту 8083?

Я для себя нашёл такое решение:

Создадим 1 символическую ссылку для KEY

ln -s /home/admin/conf/web/ssl.ns123456.ip-x-y-z.eu.key /usr/local/vesta/ssl/certificate.key

а во втором случае – нужно выполнить такую команду:

sudo cat /home/admin/conf/web/ssl.ns123456.ip-x-y-z.eu.{crt,ca} > /usr/local/vesta/ssl/certificate.crt

{crt,ca} – это регулярное выражение на bash – оно позволит не прописывать 2 раза пути к файлу. Очень важно, чтобы была именно такая последовательность – сначала crt, потом ca. Если сделать наоборот – в итоге служба vesta работать не будет.

4 шаг – вручную перезапустить Vesta CP и проверить, что всё работает в браузере

Перезапускаем службу:

service vesta restart

Откройте в браузере ваш домен с портом 8083 и теперь SSL должен быть “защищён”.

5 шаг – добавить в cron задачу обновления certificate.crt

Нам нужно добавить в планировщик cron такую задачу:

30 5 * * * sudo cat /home/admin/conf/web/ssl.ns123456.ip-x-y-z.eu.{crt,ca} > /usr/local/vesta/ssl/certificate.crt && sudo service vesta restart

(посмотрите, в какое время работает системная задача обновления let’s encrypt и увидите примерно такое:

15 5 * * * sudo /usr/local/vesta/bin/v-update-letsencrypt-ssl

логично, если наша задача будет выполняться чуть позже)

Готово!

Страницы:1234567...14