mirror of
https://github.com/vitodeploy/vito.git
synced 2025-04-19 18:01:37 +00:00
Mysql 8.4 support and Stream log output (#407)
This commit is contained in:
parent
924920e6e8
commit
dfdd50beb7
@ -14,6 +14,8 @@ final class Database
|
|||||||
|
|
||||||
const MYSQL80 = 'mysql80';
|
const MYSQL80 = 'mysql80';
|
||||||
|
|
||||||
|
const MYSQL84 = 'mysql84';
|
||||||
|
|
||||||
const MARIADB103 = 'mariadb103';
|
const MARIADB103 = 'mariadb103';
|
||||||
|
|
||||||
const MARIADB104 = 'mariadb104';
|
const MARIADB104 = 'mariadb104';
|
||||||
|
@ -93,7 +93,11 @@ public function connect(bool $sftp = false): void
|
|||||||
*/
|
*/
|
||||||
public function exec(string $command, string $log = '', ?int $siteId = null, ?bool $stream = false, ?callable $streamCallback = null): string
|
public function exec(string $command, string $log = '', ?int $siteId = null, ?bool $stream = false, ?callable $streamCallback = null): string
|
||||||
{
|
{
|
||||||
if (! $this->log && $log) {
|
if (! $log) {
|
||||||
|
$log = 'run-command';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $this->log) {
|
||||||
$this->log = ServerLog::make($this->server, $log);
|
$this->log = ServerLog::make($this->server, $log);
|
||||||
if ($siteId) {
|
if ($siteId) {
|
||||||
$this->log->forSite($siteId);
|
$this->log->forSite($siteId);
|
||||||
@ -117,16 +121,18 @@ public function exec(string $command, string $log = '', ?int $siteId = null, ?bo
|
|||||||
$this->connection->setTimeout(0);
|
$this->connection->setTimeout(0);
|
||||||
if ($stream) {
|
if ($stream) {
|
||||||
$this->connection->exec($command, function ($output) use ($streamCallback) {
|
$this->connection->exec($command, function ($output) use ($streamCallback) {
|
||||||
$this->log?->write($output);
|
$this->log->write($output);
|
||||||
|
|
||||||
return $streamCallback($output);
|
return $streamCallback($output);
|
||||||
});
|
});
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
} else {
|
} else {
|
||||||
$output = $this->connection->exec($command);
|
$output = '';
|
||||||
|
$this->connection->exec($command, function ($out) use (&$output) {
|
||||||
$this->log?->write($output);
|
$this->log->write($out);
|
||||||
|
$output .= $out;
|
||||||
|
});
|
||||||
|
|
||||||
if ($this->connection->getExitStatus() !== 0 || Str::contains($output, 'VITO_SSH_ERROR')) {
|
if ($this->connection->getExitStatus() !== 0 || Str::contains($output, 'VITO_SSH_ERROR')) {
|
||||||
throw new SSHCommandError(
|
throw new SSHCommandError(
|
||||||
|
27
app/SSH/Services/Database/scripts/mysql/install-8.4.sh
Executable file
27
app/SSH/Services/Database/scripts/mysql/install-8.4.sh
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
sudo DEBIAN_FRONTEND=noninteractive apt-get update
|
||||||
|
|
||||||
|
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release
|
||||||
|
|
||||||
|
DEBIAN_FRONTEND=noninteractive wget https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb
|
||||||
|
|
||||||
|
sudo DEBIAN_FRONTEND=noninteractive dpkg -i mysql-apt-config_0.8.32-1_all.deb
|
||||||
|
|
||||||
|
sudo DEBIAN_FRONTEND=noninteractive apt-get update
|
||||||
|
|
||||||
|
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server
|
||||||
|
|
||||||
|
sudo systemctl unmask mysql.service
|
||||||
|
|
||||||
|
sudo systemctl enable mysql
|
||||||
|
|
||||||
|
sudo systemctl start mysql
|
||||||
|
|
||||||
|
if ! sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;"; then
|
||||||
|
echo 'VITO_SSH_ERROR' && exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! sudo mysql -e "FLUSH PRIVILEGES"; then
|
||||||
|
echo 'VITO_SSH_ERROR' && exit 1
|
||||||
|
fi
|
@ -57,6 +57,7 @@
|
|||||||
\App\Enums\Database::NONE,
|
\App\Enums\Database::NONE,
|
||||||
\App\Enums\Database::MYSQL57,
|
\App\Enums\Database::MYSQL57,
|
||||||
\App\Enums\Database::MYSQL80,
|
\App\Enums\Database::MYSQL80,
|
||||||
|
\App\Enums\Database::MYSQL84,
|
||||||
\App\Enums\Database::MARIADB103,
|
\App\Enums\Database::MARIADB103,
|
||||||
\App\Enums\Database::MARIADB104,
|
\App\Enums\Database::MARIADB104,
|
||||||
\App\Enums\Database::MARIADB106,
|
\App\Enums\Database::MARIADB106,
|
||||||
@ -72,6 +73,7 @@
|
|||||||
\App\Enums\Database::NONE => 'none',
|
\App\Enums\Database::NONE => 'none',
|
||||||
\App\Enums\Database::MYSQL57 => 'mysql',
|
\App\Enums\Database::MYSQL57 => 'mysql',
|
||||||
\App\Enums\Database::MYSQL80 => 'mysql',
|
\App\Enums\Database::MYSQL80 => 'mysql',
|
||||||
|
\App\Enums\Database::MYSQL84 => 'mysql',
|
||||||
\App\Enums\Database::MARIADB103 => 'mariadb',
|
\App\Enums\Database::MARIADB103 => 'mariadb',
|
||||||
\App\Enums\Database::MARIADB104 => 'mariadb',
|
\App\Enums\Database::MARIADB104 => 'mariadb',
|
||||||
\App\Enums\Database::MARIADB106 => 'mariadb',
|
\App\Enums\Database::MARIADB106 => 'mariadb',
|
||||||
@ -87,6 +89,7 @@
|
|||||||
\App\Enums\Database::NONE => '',
|
\App\Enums\Database::NONE => '',
|
||||||
\App\Enums\Database::MYSQL57 => '5.7',
|
\App\Enums\Database::MYSQL57 => '5.7',
|
||||||
\App\Enums\Database::MYSQL80 => '8.0',
|
\App\Enums\Database::MYSQL80 => '8.0',
|
||||||
|
\App\Enums\Database::MYSQL84 => '8.4',
|
||||||
\App\Enums\Database::MARIADB103 => '10.3',
|
\App\Enums\Database::MARIADB103 => '10.3',
|
||||||
\App\Enums\Database::MARIADB104 => '10.4',
|
\App\Enums\Database::MARIADB104 => '10.4',
|
||||||
\App\Enums\Database::MARIADB106 => '10.6',
|
\App\Enums\Database::MARIADB106 => '10.6',
|
||||||
@ -201,6 +204,7 @@
|
|||||||
'mysql' => [
|
'mysql' => [
|
||||||
'5.7',
|
'5.7',
|
||||||
'8.0',
|
'8.0',
|
||||||
|
'8.4',
|
||||||
],
|
],
|
||||||
'mariadb' => [
|
'mariadb' => [
|
||||||
'10.3',
|
'10.3',
|
||||||
@ -273,14 +277,17 @@
|
|||||||
\App\Enums\OperatingSystem::UBUNTU20 => [
|
\App\Enums\OperatingSystem::UBUNTU20 => [
|
||||||
'5.7' => 'mysql',
|
'5.7' => 'mysql',
|
||||||
'8.0' => 'mysql',
|
'8.0' => 'mysql',
|
||||||
|
'8.4' => 'mysql',
|
||||||
],
|
],
|
||||||
\App\Enums\OperatingSystem::UBUNTU22 => [
|
\App\Enums\OperatingSystem::UBUNTU22 => [
|
||||||
'5.7' => 'mysql',
|
'5.7' => 'mysql',
|
||||||
'8.0' => 'mysql',
|
'8.0' => 'mysql',
|
||||||
|
'8.4' => 'mysql',
|
||||||
],
|
],
|
||||||
\App\Enums\OperatingSystem::UBUNTU24 => [
|
\App\Enums\OperatingSystem::UBUNTU24 => [
|
||||||
'5.7' => 'mysql',
|
'5.7' => 'mysql',
|
||||||
'8.0' => 'mysql',
|
'8.0' => 'mysql',
|
||||||
|
'8.4' => 'mysql',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'mariadb' => [
|
'mariadb' => [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user