Четверг, 15.08.2024 21:09

Пишем скрипт для автоматической установки репозитория и deb-пакета на сервер.  Собираем PHP 8.3 из исходного кода в Debian 12 Bookworm часть 4.

Пишем скрипт для автоматической установки репозитория и deb-пакета на сервер. Собираем PHP 8.3 из исходного кода в Debian 12 Bookworm часть 4.

В прошлой статье мы создали локальный репозиторий для PHP 8.3.10. Хоть репозиторий и упрощает нам жизнь и обновление серверов, мы можем пойти еще дальше – написать скрипт для автоматической установки GPG-ключей, настройки репозитория и установки самого PHP 8.3.10. Чем сегодня мы и займемся.

Пишем скрипт для автоматической установки репозитория и deb-пакета на сервер

Перейдем на сервер сборки.

Создадим файл 

sudo mcedit /var/www/html/php.x

С содержимым:

#!/bin/sh
apt -y install curl
curl -fsSL http://192.168.1.36/repo/phprepo.gpg -o /etc/apt/keyrings/phprepo.gpg
echo 'deb [signed-by=/etc/apt/keyrings/phprepo.gpg] http://192.168.1.36/repo/ /' | sudo tee /etc/apt/sources.list.d/localrepo.list
apt update
apt install -y php-8.3.10

Чтобы облегчить себе и другим системным администраторам жизнь, создадим HTML-страничку с простой инструкцией по установке.

Создадим файл 

sudo mcedit /var/www/html/php.html

С содержимым:

<html>
<head>
<title>Установка репозитория PHP</title>
<meta charSet="utf-8"/>
</head>
<body>
<p>В консоли запустить:</p>
<code>
<p>su</p>
<p>apt-get -y install curl sudo</p>
<p>curl -fsSL  http://192.168.1.36/php.x | sudo -E bash -</p>
</code>
</body>
</html>

Чтобы было еще проще добавим алиас в настройки nginx:

sudo mcedit /etc/nginx/sites-available/default

Добавим в конец блока:

server {

Строки:

location /php {
       rewrite ^/(.*)\.html$ /$1 permanent;
       #remove the trailing /
       rewrite ^/(.*)/$ /$1 permanent;
       try_files $uri ${uri}/index.html ${uri}.html =404;
}

Проверим конфигурацию:

sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапустим:

sudo systemctl restart nginx

Откроем:

http://192.168.1.36/php

Получим:

В консоли запустить:
su
apt-get -y install curl sudo
curl -fsSL http://192.168.1.36/php.x | sudo -E bash -

Откатим контрольную точку тестовой машины на момент после сразу установки и запустим:

su
apt-get -y install curl sudo
curl -fsSL http://192.168.1.36/php.x | sudo -E bash -

Если вы получаете такие ошибки:

Err:1 http://192.168.1.36/repo  php-8.3.10 8.3.10
 File has unexpected size (51255002 != 51254504). Mirror sync in progress? [IP: 192.168.1.36 80]
 Hashes of expected file:
  - SHA256:af38f2a8fd0e9cc8884a9f18093b3c956d217e51546511ac55e8564d849f4cec
  - SHA1:586441ee40abeb851ee3bd7042db8707b9bae98e [weak]
  - MD5Sum:d613b8b848f420f5a504e4b859e549cb [weak]
  - Filesize:51254504 [weak]

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

Просто запустите на сервере сборки команду:

sudo /opt/build/make-repo.sh

И попробуйте еще раз!

Если все прошло успешно мы получим:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
curl is already the newest version (7.88.1-10+deb12u6).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
deb [signed-by=/etc/apt/keyrings/phprepo.gpg] http://192.168.1.36/repo/ /
Get:1 http://192.168.1.36/repo  InRelease [2,007 B]
Get:2 http://192.168.1.36/repo  Packages [442 B]
Get:3 http://security.debian.org/debian-security bookworm-security InRelease [48.0 kB]
Hit:4 http://deb.debian.org/debian bookworm InRelease
Get:5 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
Get:6 http://security.debian.org/debian-security bookworm-security/main Sources [105 kB]
Get:7 http://security.debian.org/debian-security bookworm-security/main amd64 Packages [170 kB]
Get:8 http://security.debian.org/debian-security bookworm-security/main Translation-en [103 kB]
Fetched 484 kB in 3s (193 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
 libjpeg62-turbo libonig5 libpq5 libzip4 sqlite3
Suggested packages:
 sqlite3-doc
The following NEW packages will be installed:
 libjpeg62-turbo libonig5 libpq5 libzip4 php-8.3.10 sqlite3
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 52.2 MB of archives.
After this operation, 2,942 kB of additional disk space will be used.
Get:1 http://192.168.1.36/repo  php-8.3.10 8.3.10 [51.3 MB]
Get:2 http://security.debian.org/debian-security bookworm-security/main amd64 libpq5 amd64 15.8-0+deb12u1 [188 kB]
Get:3 http://deb.debian.org/debian bookworm/main amd64 libjpeg62-turbo amd64 1:2.1.5-2 [166 kB]
Get:4 http://deb.debian.org/debian bookworm/main amd64 libonig5 amd64 6.9.8-1 [188 kB]
Get:5 http://deb.debian.org/debian bookworm/main amd64 libzip4 amd64 1.7.3-1+b1 [55.5 kB]
Get:6 http://deb.debian.org/debian bookworm/main amd64 sqlite3 amd64 3.40.1-2 [353 kB]
Fetched 52.2 MB in 2s (21.1 MB/s)
Selecting previously unselected package libjpeg62-turbo:amd64.
(Reading database ... 33136 files and directories currently installed.)
Preparing to unpack .../0-libjpeg62-turbo_1%3a2.1.5-2_amd64.deb ...
Unpacking libjpeg62-turbo:amd64 (1:2.1.5-2) ...
Selecting previously unselected package libonig5:amd64.
Preparing to unpack .../1-libonig5_6.9.8-1_amd64.deb ...
Unpacking libonig5:amd64 (6.9.8-1) ...
Selecting previously unselected package libpq5:amd64.
Preparing to unpack .../2-libpq5_15.8-0+deb12u1_amd64.deb ...
Unpacking libpq5:amd64 (15.8-0+deb12u1) ...
Selecting previously unselected package libzip4:amd64.
Preparing to unpack .../3-libzip4_1.7.3-1+b1_amd64.deb ...
Unpacking libzip4:amd64 (1.7.3-1+b1) ...
Selecting previously unselected package sqlite3.
Preparing to unpack .../4-sqlite3_3.40.1-2_amd64.deb ...
Unpacking sqlite3 (3.40.1-2) ...
Selecting previously unselected package php-8.3.10.
Preparing to unpack .../5-php-8.3.10_8.3.10_amd64.deb ...
Unpacking php-8.3.10 (8.3.10) ...
Setting up libzip4:amd64 (1.7.3-1+b1) ...
Setting up libpq5:amd64 (15.8-0+deb12u1) ...
Setting up libjpeg62-turbo:amd64 (1:2.1.5-2) ...
Setting up libonig5:amd64 (6.9.8-1) ...
Setting up sqlite3 (3.40.1-2) ...
Setting up php-8.3.10 (8.3.10) ...
Created symlink /etc/systemd/system/multi-user.target.wants/php-8.3.10-fpm.service → /lib/systemd/system/php-8.3.10-fpm.service.
Processing triggers for man-db (2.11.2-2) ...
Processing triggers for libc-bin (2.36-9+deb12u7) ...

Проверим:

systemctl status php-8.3.10-fpm
● php-8.3.10-fpm.service - The PHP 8.3.10 FastCGI Process Manager
    Loaded: loaded (/lib/systemd/system/php-8.3.10-fpm.service; enabled; preset: enabled)
    Active: active (running) since Wed 2024-08-14 19:14:26 EDT; 1min 1s ago
  Main PID: 1104 (php-fpm)
     Tasks: 3 (limit: 1020)
    Memory: 17.3M
       CPU: 26ms
    CGroup: /system.slice/php-8.3.10-fpm.service
            ├─1104 "php-fpm: master process (/opt/php-8.3.10/etc/php-fpm.conf)"
            ├─1108 "php-fpm: pool www"
            └─1109 "php-fpm: pool www"
Aug 14 19:14:26 debian-test systemd[1]: Started php-8.3.10-fpm.service - The PHP 8.3.10 FastCGI Process Manager.
php -v
PHP 8.3.10 (cli) (built: Aug  8 2024 22:32:36) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.10, Copyright (c) Zend Technologies

PHP 8.3.10 успешно установлен и работает

Заключение

Сегодня мы написали скрипт для автоматической установки созданного в предыдущей статье репозитория и пакета с PHP 8.3.10 на новый сервер:

В папке веб-сервера с нашим репозиторием создали скрипт автоматической установки;

Создали простую web-страницу с инструкцией по установке;

Создали алиас на веб-сервере, для упрощения доступа к странице;

Протестировали установку пакета и репозитория на тестовом сервере.

Категория Debian
Теги Debian PHP php83 Nginx

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Просмотров: 79