Added alternative php. Part 12

devel
Alexey Berezhok 2 months ago
parent 93ccae3f18
commit 06fa9cb9c2

@ -1,110 +1,102 @@
<h1 align="center">Hestia Control Panel</h1>
<h1 align="center">Hestia Control Panel (RPM Edition)</h1>
<h2 align="center">Lightweight and powerful control panel for the modern web</h2>
<p align="center"><strong>Original project:</strong> | <a href="https://github.com/hestiacp/hestiacp/blob/release/CHANGELOG.md">View Changelog</a> |
<a href="https://www.hestiacp.com/">HestiaCP.com</a> |
<a href="https://docs.hestiacp.com/">Documentation</a> |
<a href="https://forum.hestiacp.com/">Forum</a>
<br/><br/></p>
<h2 align="center">Легкая и мощная панель управления для современного сервера. Организуй собственный сервер в два счета.</h2>
<p align="center"><strong>Ссылки на оригинальный проект для Ubuntu и Debian:</strong> | <a href="https://www.hestiacp.com/">HestiaCP.com</a> |
</p>
<p align="center">
<strong>RPM support project:</strong> |
<strong>Информация по RPM Edition сборке:</strong> |
<a href="https://hestiadocs.brepo.ru/">Documentation for version with RPM support</a>
</p>
## **Welcome!**
Hestia Control Panel (RPM Edition) поддерживается и дорабатывается отдельной командой связанной с RPM Based операционными системаи, с момента форка от оригинального, данный проект включил изменения, которые не позволяют просто подтягивать доработки из оригинального проекта (и не все доработки Ubuntu и Debian нужны в RPM Based системах). Поэтому все изменения из оригинальной Hestia CP не подтягиваются автоматически, поэтому о найденных ошибках в текущей реализации необходимо репортить в текущий проект.
Ниже общее описание панели.
Hestia Control Panel is designed to provide administrators an easy to use web and command line interface, enabling them to quickly deploy and manage web domains, mail accounts, DNS zones, and databases from one central dashboard without the hassle of manually deploying and configuring individual components or services.
## **Добро пожаловать!**
## Features and Services
Панель управления Hestia предназначена для предоставления администраторам простого в использовании веб-интерфейса и интерфейса командной строки, что позволяет им быстро развертывать веб-домены, почтовые аккаунты, зоны DNS и базы данных и управлять ими с единой центральной панели без необходимости вручную развертывать и настраивать отдельные компоненты или сервисы.
- Apache2 and NGINX with PHP-FPM
- Multiple PHP versions (5.6 - 8.2, 8.0 as default)
- DNS Server (Bind) with clustering capabilities
- POP/IMAP/SMTP mail services with Anti-Virus, Anti-Spam, and Webmail (ClamAV, SpamAssassin, Sieve, Roundcube)
- MariaDB/MySQL and/or PostgreSQL databases
- Let's Encrypt SSL support with wildcard certificates
- Firewall with brute-force attack detection and IP lists (iptables, fail2ban, and ipset).
## Функции и сервисы
## Supported platforms and operating systems
- Apache2 и NGINX с PHP-FPM
- Несколько версий PHP (7.4 — 8.2, 8.0 по умолчанию, как из Remi репозитория, так и дополнительная самостоятельная сборка PHP пакетов)
- DNS-сервер (Bind)
- почтовые сервисы POP/IMAP/SMTP с защитой от вирусов, спама и веб-почтой (ClamAV, SpamAssassin, Sieve, Roundcube)
- базы данных MariaDB/MySQL и/или PostgreSQL
- поддержка SSL Let's Encrypt
- брандмауэр с защитой от атак методом перебора и списками IP (iptables, fail2ban и ipset).
## Поддерживаемые ОС
- **MSVSphere:** 9
- **AlmaLinux:** 9
- **RockyLinux:** 9
Currently stayed support of Debian and Ubuntu, but new functional will be available only for RPM based systems. For full supportin of Debian and Ubuntu use original [HestiaCP](https://github.com/hestiacp/hestiacp)
**NOTES:**
**ПРИМЕЧАНИЯ:**
- Hestia Control Panel does not support 32 bit operating systems!
- Hestia Control Panel in combination with OpenVZ 7 or lower might have issues with DNS and/or firewall. If you use a Virtual Private Server we strongly advice you to use something based on KVM or LXC!
- Панель управления Hestia не поддерживает 32-разрядные операционные системы!
- Панель управления Hestia в сочетании с OpenVZ 7 или более ранними версиями может иметь проблемы с DNS и/или брандмауэром. Если вы используете виртуальный частный сервер, мы настоятельно рекомендуем использовать что-то на основе KVM или LXC!
## Installing Hestia Control Panel
## Установка панели управления Hestia
- **NOTE:** You must install Hestia Control Panel on top of a fresh operating system installation to ensure proper functionality.
- **ПРИМЕЧАНИЕ:** для обеспечения правильной работы необходимо установить панель управления Hestia поверх новой операционной системы.
While we have taken every effort to make the installation process and the control panel interface as friendly as possible (even for new users), it is assumed that you will have some prior knowledge and understanding in the basics how to set up a Linux server before continuing.
Несмотря на то, что мы приложили все усилия, чтобы сделать процесс установки и интерфейс панели управления максимально удобными (даже для новых пользователей), предполагается, что вы уже обладаете некоторыми базовыми знаниями и пониманием того, как настроить сервер Linux, прежде чем продолжить.
### Step 1: Log in
### Шаг 1. Войдите в систему
To start the installation, you will need to be logged in as **root** or a user with super-user privileges. You can perform the installation either directly from the command line console or remotely via SSH:
Чтобы начать установку, вам нужно войти в систему как **root** или пользователь с правами суперпользователя. Вы можете выполнить установку непосредственно из командной строки или удалённо через SSH:
```bash
ssh root@your.server
```
### Step 2: Download
### Шаг 2. Загрузка
Download the installation script for the latest release:
Загрузите установочный скрипт для последней версии:
```bash
wget https://dev.brepo.ru/bayrepo/hestiacp/raw/branch/master/install/hst-install.sh
```
If the download fails due to an SSL validation error, please be sure you've installed the ca-certificate package on your system - you can do this with the following command:
```bash
yum update
```
### Step 3: Run
### Шаг 3: Запустите
To begin the installation process, simply run the script and follow the on-screen prompts:
Чтобы начать процесс установки, просто запустите скрипт и следуйте инструкциям на экране:
```bash
bash hst-install.sh
```
You will receive a welcome email at the address specified during installation (if applicable) and on-screen instructions after the installation is completed to log in and access your server.
После завершения установки вы получите приветственное электронное письмо на адрес, указанный во время установки (если применимо), и инструкции на экране для входа в систему и доступа к вашему серверу.
### Custom installation
### Пользовательская установка
You may specify a number of various flags during installation to only install the features in which you need. To view a list of available options, run:
Во время установки вы можете указать несколько различных флагов, чтобы установить только те функции, которые вам нужны. Чтобы просмотреть список доступных опций, выполните:
```bash
bash hst-install.sh -h
```
## How to upgrade an existing installation
## Как обновить существующую установку
Automatic Updates are enabled by default on new installations of Hestia Control Panel and can be managed from **Server Settings > Updates**. To manually check for and install available updates, use the system package manager:
Автоматические обновления включены по умолчанию в новых установках Hestia Control Panel, и ими можно управлять из **Server Settings > Updates**. Чтобы вручную проверить наличие доступных обновлений и установить их, воспользуйтесь системным менеджером пакетов:
```bash
dnf update
```
## Issues & Support Requests
## Проблемы и запросы в службу поддержки
- If you encounter a general problem while using Hestia Control Panel for RPM based system use [issue report](https://github.com/bayrepo/hestiacp/issues)
- Если вы столкнулись с общей проблемой при использовании Hestia Control Panel для системы на основе RPM, воспользуйтесь [отчётом о проблеме](https://github.com/bayrepo/hestiacp-rpm/issues)
For original HestiaCP for Debian and Ubuntu use [original version](https://github.com/hestiacp/hestiacp):
Для оригинальной HestiaCP для Debian и Ubuntu используйте [оригинальную версию](https://github.com/hestiacp/hestiacp):
## Copyright
## Авторские права
See original copyright of [HestiaCP](https://github.com/hestiacp/hestiacp)
Ознакомьтесь с оригинальными авторскими правами [HestiaCP](https://github.com/hestiacp/hestiacp)
## License
## Лицензия
Hestia Control Panel is licensed under [GPL v3](https://github.com/hestiacp/hestiacp/blob/release/LICENSE) license, and is based on the [VestaCP](https://vestacp.com/) project.<br>
Панель управления Hestia распространяется по лицензии [GPL v3](https://github.com/hestiacp/hestiacp/blob/release/LICENSE) и основана на проекте [VestaCP](https://vestacp.com/).<br>

@ -24,7 +24,7 @@ export default defineConfig({
socialLinks: [
{ icon: 'github', link: 'https://dev.brepo.ru/bayrepo/hestiacp' },
{ icon: 'github', link: 'https://github.com/bayrepo/hestiacp' },
{ icon: 'github', link: 'https://github.com/bayrepo/hestiacp-rpm' },
{ icon: 'github', link: 'https://github.com/hestiacp/hestiacp' },
],

@ -61,6 +61,91 @@ class EmptyWorker < Kernel::ModuleCoreWorker
php_modules
end
def get_php_module_description(module_name)
case module_name
when "bcmath"
"Модуль математических операций с числами произвольной точности"
when "curl"
"Поддержка curl функций из библиотеки libcurl"
when "dba"
"Эти функции — основа для доступа к базам данных наподобие Berkeley DB"
when "dom"
"Модуль DOM разрешает работать в PHP с XML- и HTML-документами через DOM API"
when "gd"
"Функции работы с изображениями"
when "imap"
"Эти функции позволяют работать с протоколом IMAP, а также NNTP, POP3 и локальными методами доступа к почтовому ящику."
when "intl"
"Модуль интернационализации"
when "ioncube"
"Модуль котрый производит деобфускацию кода, написанного на языке php и закодированного утилитами из набора ioncube"
when "ioncube_loader_lin_7.4"
"Модуль котрый производит деобфускацию кода, написанного на языке php и закодированного утилитами из набора ioncube"
when "json"
"Поддержка json в PHP"
when "ldap"
"Поддержка работы с LDAP в PHP"
when "mbstring"
"Поддержка работы с многобайтовыми строками"
when "memcache"
"Модуль Memcache предоставляет удобный процедурный и объектно-ориентированный интерфейс к memcached, высокоэффективному кеширующему демону, который был специально разработан для снижения нагрузки на базу данных в динамических веб приложениях"
when "mysqli"
"Модуль mysqli позволяет вам получить доступ к функциональности, которую предоставляет MySQL версии 4.1 и выше"
when "mysqlnd"
"Встроенный драйвер MySQL"
when "odbc"
"В дополнение к обычной поддержке ODBC, функции Unified ODBC в PHP позволяют получить доступ к нескольким базам данных, которые позаимствовали семантику ODBC API для реализации своего собственного API."
when "opcache"
"Модуль OPcache сохраняет предкомпилированный байт-код скриптов в разделяемой памяти. Кеширование операционного PHP-кода повышает производительность и помогает избегать загрузки и анализа скриптов при каждом запросе."
when "pdo"
"Модуль PDO определяет легковесный и непротиворечивый интерфейс доступа к базам данных в PHP."
when "pdo_dblib"
"PDO_DBLIB: драйвер модуля PDO для СУБД Microsoft SQL Server и Sybase"
when "pdo_mysql"
"PDO_MYSQL: драйвер модуля PDO для СУБД MySQL"
when "pdo_odbc"
"PDO_ODBC: драйвер модуля PDO для СУБД ODBC и DB2"
when "pdo_pgsql"
"PDO_PGSQL: драйвер модуля PDO для СУБД PostgreSQL"
when "pdo_sqlite"
"PDO_SQLITE: драйвер модуля PDO для СУБД SQLite"
when "pgsql"
"Модуль поддержки взаимодействия PHP с PostgreSQL"
when "phar"
"Модуль phar предоставляет возможность поместить целое PHP-приложение в один-единственный файл c именем phar (PHP Archive) для простого распространения и установки"
when "posix"
"Этот модуль содержит интерфейс к функциям, определённым в стандарте IEEE 1003.1 (POSIX.1), которые не доступны с помощью других средств."
when "pspell"
"Функции позволяют проверять правописание слова и предлагают варианты исправления."
when "snmp"
"Модуль SNMP предоставляет простой и удобный набор инструментов для управления удалёнными устройствами через Simple Network Management Protocol (простой протокол управления сетями)"
when "soap"
"Модуль SOAP может использоваться для написания как серверной, так и клиентской части. Он реализует спецификации » SOAP 1.1, » SOAP 1.2 и » WSDL 1.1."
when "sodium"
"Sodium — современная, простая в работе программная библиотека для шифрования и дешифрования данных, выполнения операций с подписями, хеширования паролей и других криптографических целей"
when "sysvmsg"
"Модуль поддержки сообщений System V"
when "sysvsem"
"Поддержка семафоров"
when "sysvshm"
"Поддержка разделяемой памяти"
when "tidy"
"Модуль коррекции разметки tidy"
when "xmlreader"
"Модуль XMLReader — синтаксический анализатор XML-документов"
when "xmlrpc"
"Функции модуля помогают писать клиентский или серверный код по правилам стандарта XML-RPC"
when "xmlwriter"
"Модуль XMLWriter оборачивает API-интерфейс парсера xmlWriter, который входит в состав модуля libxml."
when "xsl"
"Модуль XSL реализует XSL-стандарт путём XSLT-преобразований, которые выполняет через библиотеку libxslt"
when "zip"
"Модуль позволяет легко читать и записывать как в сами сжатые ZIP-архивы, так и в файлы внутри них"
else
"нет описания"
end
end
def disable_module(php_ver, module_name)
php_mods = get_list_of_installed_php_modules(php_ver)
return if php_mods[module_name].nil?
@ -77,11 +162,11 @@ class EmptyWorker < Kernel::ModuleCoreWorker
if php_mods[module_name] == "disabled"
case module_name
when "opcache"
File.symlink("/opt/brepo/php#{php_ver}/etc/mod-installed/#{module_name}.ini", "/opt/brepo/php#{php_ver}/etc/php.d/10-#{php_mods[module_name]}.ini")
File.symlink("/opt/brepo/php#{php_ver}/etc/mod-installed/#{module_name}.ini", "/opt/brepo/php#{php_ver}/etc/php.d/10-#{module_name}.ini")
when "mysqli", "pdo_mysql", "xmlreader", "zip"
File.symlink("/opt/brepo/php#{php_ver}/etc/mod-installed/#{module_name}.ini", "/opt/brepo/php#{php_ver}/etc/php.d/30-#{php_mods[module_name]}.ini")
File.symlink("/opt/brepo/php#{php_ver}/etc/mod-installed/#{module_name}.ini", "/opt/brepo/php#{php_ver}/etc/php.d/30-#{module_name}.ini")
else
File.symlink("/opt/brepo/php#{php_ver}/etc/mod-installed/#{module_name}.ini", "/opt/brepo/php#{php_ver}/etc/php.d/20-#{php_mods[module_name]}.ini")
File.symlink("/opt/brepo/php#{php_ver}/etc/mod-installed/#{module_name}.ini", "/opt/brepo/php#{php_ver}/etc/php.d/20-#{module_name}.ini")
end
end
end
@ -110,10 +195,11 @@ class EmptyWorker < Kernel::ModuleCoreWorker
tmp_hash["PHPVER"] = vers
tmp_hash["MODNAME"] = kk
tmp_hash["STATE"] = modules_list[kk]
tmp_hash["DESCR"] = get_php_module_description(kk)
result << tmp_hash
end
format = (args[2].nil? ? "shell" : args[2].strip)
hestia_print_array_of_hashes(result, format, "PHPVER,MODNAME,STATE")
hestia_print_array_of_hashes(result, format, "PHPVER,MODNAME,STATE,DESCR")
ACTION_OK
end
when "php_enable"

@ -2195,7 +2195,7 @@ we hope that you enjoy using it as much as we do!
Documentation: https://hestiadocs.brepo.ru/
Forum: https://forum.hestiacp.com/
GitHub: https://github.com/bayrepo/hestiacp or development storage https://dev.brepo.ru/bayrepo/hestiacp
GitHub: https://github.com/bayrepo/hestiacp-rpm or development storage https://dev.brepo.ru/bayrepo/hestiacp
Note: Automatic updates are enabled by default. If you would like to disable them,
please log in and navigate to Server > Updates to turn them off.

@ -22,9 +22,6 @@ unset($output);
$error_message = "";
if ((!empty($_GET["ver"])) && ($_GET["ver"] != "")) {
if (!empty($_GET["save"])){
}
$php_vers = $_GET["ver"];
$ver_quoted = quoteshellarg($_GET["ver"]);
exec(HESTIA_CMD . "v-ext-modules-run php_brepo_modules php_modules " . $ver_quoted . " json", $output, $return_var);
@ -34,8 +31,47 @@ if ((!empty($_GET["ver"])) && ($_GET["ver"] != "")) {
} else {
$error_message = $output;
}
unset($output);
if (!empty($_POST["save"]) && $error_message == ""){
$new_modules = $_POST["v_php_module_name"];
$chg = false;
foreach ($new_modules as $key => $value){
if (!preg_match("/(\d\d)-.+/i", $value)){
$mod_name = quoteshellarg($value);
$chg = true;
exec(HESTIA_CMD . "v-ext-modules-run php_brepo_modules php_enable " . $ver_quoted . " " . $mod_name, $output, $return_var);
unset($output);
}
}
foreach ($phps_modules as $key => $value){
if ($value["STATE"]!="disabled"){
$fnd = false;
foreach ($new_modules as $ikey => $ivalue){
if ($ivalue==$value["STATE"]){
$fnd = true;
break;
}
}
if (!$fnd){
$chg = true;
$mod_name = quoteshellarg($phps_modules[$key]["MODNAME"]);
exec(HESTIA_CMD . "v-ext-modules-run php_brepo_modules php_disable " . $ver_quoted . " " . $mod_name, $output, $return_var);
unset($output);
}
}
}
exec(HESTIA_CMD . "v-ext-modules-run php_brepo_modules php_modules " . $ver_quoted . " json", $output, $return_var);
$phps_modules = [];
if ($return_var == 0) {
$phps_modules = json_decode(implode("", $output), true);
} else {
$error_message = $output;
}
unset($output);
if ($chg){
exec(HESTIA_CMD . "v-restart-web-backend", $output, $return_var);
}
}
// Render page
render_page($user, $TAB, "extmodules/extmodules_php_brepo_modules_list");

@ -28,26 +28,26 @@ if (!empty($error_message)) {
<div class="units-table js-units-container">
<div class="units-table-header">
<div class="units-table-cell" style="width: 60%;"><?= _("PHP version") ?></div>
<div class="units-table-cell u-text-center"><?= _("Modules") ?></div>
<div class="units-table-cell u-text-center"><?= _("PHP version") ?></div>
<div class="units-table-cell u-text-center"><?= _("Action") ?></div>
</div>
<?php
foreach ($phps as $key => $value) {
?>
<div class="units-table-ro js-unit">
<div class="units-table-cell u-text-center" style="width: 60%;">
<span class="u-hide-desktop"><?= _("PHP version") ?>:</span>
<?php echo "PHP ".$phps[$key]["PHPVER"]; ?>
</div>
<div class="units-table-cell u-text-center-desktop">
<span class="u-hide-desktop"><?= _("Modules") ?>:</span>
<a href="/extm/php_brepo_modules/edit/?ver=<?= urlencode($phps[$key]['PHPVER']) ?>" title="<?= $phps[$key]['PHPVER'] ?>">
<?= _("Change PHP modules list") ?>
</a>
</div>
<div class="units-table-row js-unit">
<div class="units-table-cell u-text-center">
<span class="u-hide-desktop"><?= _("PHP version") ?>:</span>
<?php echo "PHP ".$phps[$key]["PHPVER"]; ?>
</div>
<div class="units-table-cell u-text-center-desktop">
<span class="u-hide-desktop"><?= _("Action") ?>:</span>
<?= _("Change modules list") ?>
<a href="/extm/php_brepo_modules/edit/?ver=<?= urlencode($phps[$key]['PHPVER']) ?>" title="<?= _("Change modules list for PHP") ?><?= $phps[$key]['PHPVER'] ?>">
<i class="fa-solid fa-gear icon-purple"></i>
</a>
</div>
</div>
<?php } ?>
</div>

@ -2,7 +2,7 @@
<div class="toolbar">
<div class="toolbar-inner">
<div class="toolbar-buttons">
<a class="button button-secondary button-back js-button-back" href="/list/server/">
<a class="button button-secondary button-back js-button-back" href="/extm/php_brepo_modules/edit/">
<i class="fas fa-arrow-left icon-blue"></i><?= _("Back") ?>
</a>
</div>
@ -29,19 +29,22 @@ if (!empty($error_message)) {
?>
<h1 class="u-text-center u-hide-desktop u-mt20 u-pr30 u-mb20 u-pl30"><?= _("Available modules list for version PHP") ?> <?= $php_vers ?></h1>
<h1 class="u-text-center u-mt20 u-pr30 u-mb20 u-pl30"><?= _("Available modules list for version PHP") ?> <?= $php_vers ?></h1>
<form id="main-form" name="v_ruby_path" method="post">
<input type="hidden" name="save" value="save">
<div class="units-table js-units-container">
<div class="units-table-header">
<div class="units-table-cell u-text-center"><?= _("PHP module name") ?></div>
<div class="units-table-cell u-text-center"><?= _("Description") ?></div>
</div>
<?php
foreach ($phps_modules as $key => $value) {
?>
<div class="units-table-ro js-unit">
<div class="units-table-row js-unit">
<div class="units-table-cell js-unit">
<span class="u-hide-desktop"><?= _("PHP module name") ?>:</span>
<div class="form-check">
<input
class="form-check-input"
@ -53,7 +56,7 @@ if (!empty($error_message)) {
if ($phps_modules[$key]["STATE"] != "disabled") {
echo " value=\"" . $phps_modules[$key]["STATE"] . "\"";
} else {
echo " value=\"\"";
echo " value=\"" . $phps_modules[$key]["MODNAME"] ."\"";
}
?>
>
@ -61,7 +64,12 @@ if (!empty($error_message)) {
<?= $phps_modules[$key]["MODNAME"] ?>
</label>
</div>
</div>
</div>
<div class="units-table-cell">
<span class="u-hide-desktop"><?= _("Description") ?>:</span>
<?= $phps_modules[$key]["DESCR"] ?>
</div>
</div>
<?php } ?>
</div>
</form>

Loading…
Cancel
Save