350 lines
17 KiB
HTML
350 lines
17 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de" dir="auto">
|
|
|
|
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
<meta name="robots" content="noindex, nofollow">
|
|
<title>Moodle Server mit Ubuntu 20 LTS und Iomad | Jörg Lohrer</title>
|
|
<meta name="keywords" content="Moodle, Ubuntu, Linux, Iomad, Server, MySql, Datenbank">
|
|
<meta name="description" content="Installation von Iomad zur Moodle-Instanz-Verwaltung">
|
|
<meta name="author" content="Jörg Lohrer">
|
|
<link rel="canonical" href="http://localhost:1313/2022/02/16/moodle-iomad-linux.html/">
|
|
<link crossorigin="anonymous" href="/assets/css/stylesheet.fcb38834b6dee4645dbe7c77d6c5278e12448b758b3f769e48a2d86d35709cb2.css" integrity="sha256-/LOINLbe5GRdvnx31sUnjhJEi3WLP3aeSKLYbTVwnLI=" rel="preload stylesheet" as="style">
|
|
<link rel="icon" href="http://localhost:1313/favicon.ico">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:1313/favicon-16x16.png">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:1313/favicon-32x32.png">
|
|
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
|
|
<link rel="mask-icon" href="http://localhost:1313/safari-pinned-tab.svg">
|
|
<meta name="theme-color" content="#2e2e33">
|
|
<meta name="msapplication-TileColor" content="#2e2e33">
|
|
<link rel="alternate" hreflang="de" href="http://localhost:1313/2022/02/16/moodle-iomad-linux.html/">
|
|
<noscript>
|
|
<style>
|
|
#theme-toggle,
|
|
.top-link {
|
|
display: none;
|
|
}
|
|
|
|
</style>
|
|
<style>
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--theme: rgb(29, 30, 32);
|
|
--entry: rgb(46, 46, 51);
|
|
--primary: rgb(218, 218, 219);
|
|
--secondary: rgb(155, 156, 157);
|
|
--tertiary: rgb(65, 66, 68);
|
|
--content: rgb(196, 196, 197);
|
|
--code-block-bg: rgb(46, 46, 51);
|
|
--code-bg: rgb(55, 56, 62);
|
|
--border: rgb(51, 51, 51);
|
|
}
|
|
|
|
.list {
|
|
background: var(--theme);
|
|
}
|
|
|
|
.list:not(.dark)::-webkit-scrollbar-track {
|
|
background: 0 0;
|
|
}
|
|
|
|
.list:not(.dark)::-webkit-scrollbar-thumb {
|
|
border-color: var(--theme);
|
|
}
|
|
}
|
|
|
|
</style>
|
|
</noscript>
|
|
</head>
|
|
|
|
<body class="" id="top">
|
|
<script>
|
|
if (localStorage.getItem("pref-theme") === "dark") {
|
|
document.body.classList.add('dark');
|
|
} else if (localStorage.getItem("pref-theme") === "light") {
|
|
document.body.classList.remove('dark')
|
|
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
|
document.body.classList.add('dark');
|
|
}
|
|
|
|
</script>
|
|
|
|
<header class="header">
|
|
<nav class="nav">
|
|
<div class="logo">
|
|
<a href="http://localhost:1313/" accesskey="h" title="Jörg Lohrer (Alt + H)">Jörg Lohrer</a>
|
|
<div class="logo-switches">
|
|
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
|
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
|
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
|
stroke-linejoin="round">
|
|
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
|
</svg>
|
|
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
|
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
|
stroke-linejoin="round">
|
|
<circle cx="12" cy="12" r="5"></circle>
|
|
<line x1="12" y1="1" x2="12" y2="3"></line>
|
|
<line x1="12" y1="21" x2="12" y2="23"></line>
|
|
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
|
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
|
<line x1="1" y1="12" x2="3" y2="12"></line>
|
|
<line x1="21" y1="12" x2="23" y2="12"></line>
|
|
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
|
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
|
</svg>
|
|
</button>
|
|
<ul class="lang-switch"><li>|</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<ul id="menu">
|
|
<li>
|
|
<a href="http://localhost:1313/" title="Jörg Lohrer">
|
|
<span>Home</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="http://localhost:1313/archives/" title="Archive">
|
|
<span>Blog</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="http://localhost:1313/impressum/" title="Impressum">
|
|
<span>Impressum</span>
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://reliverse.social/@joerglohrer" title="Mastodon">
|
|
<span><i class="fa fa-heart"></i>Mastodon</span>
|
|
<svg fill="none" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
|
|
stroke-linejoin="round" stroke-width="2.5" viewBox="0 0 24 24" height="12" width="12">
|
|
<path d="M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"></path>
|
|
<path d="M15 3h6v6"></path>
|
|
<path d="M10 14L21 3"></path>
|
|
</svg>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</nav>
|
|
</header>
|
|
<main class="main">
|
|
|
|
<article class="post-single">
|
|
<header class="post-header">
|
|
|
|
<h1 class="post-title entry-hint-parent">
|
|
Moodle Server mit Ubuntu 20 LTS und Iomad
|
|
</h1>
|
|
<div class="post-description">
|
|
Installation von Iomad zur Moodle-Instanz-Verwaltung
|
|
</div>
|
|
<div class="post-meta"><span title='2022-02-16 00:00:00 +0000 UTC'>Februar 16, 2022</span> · Jörg Lohrer
|
|
|
|
</div>
|
|
</header>
|
|
<figure class="entry-cover">
|
|
<img loading="eager" src="http://localhost:1313/2022/02/16/moodle-iomad-linux.html/title-gif.gif" alt="">
|
|
|
|
</figure>
|
|
<div class="post-content"><h1 id="moodle-server-mit-ubuntu-20-lts-und-iomad">Moodle Server mit Ubuntu 20 LTS und Iomad<a hidden class="anchor" aria-hidden="true" href="#moodle-server-mit-ubuntu-20-lts-und-iomad">#</a></h1>
|
|
<h2 id="ubuntu-server-image-herunterladen">Ubuntu Server-Image herunterladen<a hidden class="anchor" aria-hidden="true" href="#ubuntu-server-image-herunterladen">#</a></h2>
|
|
<p><a href="https://releases.ubuntu.com/20.04/">https://releases.ubuntu.com/20.04/</a></p>
|
|
<h2 id="virtualbox-mit-dem-ubuntu-image-einrichten">Virtualbox mit dem Ubuntu Image einrichten<a hidden class="anchor" aria-hidden="true" href="#virtualbox-mit-dem-ubuntu-image-einrichten">#</a></h2>
|
|
<h3 id="netzwerkbrücke-aktivieren">Netzwerkbrücke aktivieren<a hidden class="anchor" aria-hidden="true" href="#netzwerkbrücke-aktivieren">#</a></h3>
|
|
<p><img loading="lazy" src="01-netzwerkbruecke.png" alt="" />
|
|
</p>
|
|
<h3 id="ip-adresse-ermitteln">IP-Adresse ermitteln<a hidden class="anchor" aria-hidden="true" href="#ip-adresse-ermitteln">#</a></h3>
|
|
<p><code>ifconfig </code> -> 192.168.178.132</p>
|
|
<h3 id="auf-dem-mac-oder-pc-die-auflösung-des-hosts-verknüpfen">Auf dem Mac (oder PC) die Auflösung des Hosts verknüpfen<a hidden class="anchor" aria-hidden="true" href="#auf-dem-mac-oder-pc-die-auflösung-des-hosts-verknüpfen">#</a></h3>
|
|
<p>auf dem Mac <code>sudo nano /etc/hosts</code> die IP eintragen und moodle.local zuweisen:
|
|
<img loading="lazy" src="02-hosts-eintragen.png" alt="" />
|
|
</p>
|
|
<h2 id="moodle-server-auf-virtualbox-vorbereiten">Moodle Server auf Virtualbox vorbereiten<a hidden class="anchor" aria-hidden="true" href="#moodle-server-auf-virtualbox-vorbereiten">#</a></h2>
|
|
<p><code>sudo -i</code>wechselt auf root</p>
|
|
<h3 id="ssh-zugriff-ermöglichen">SSH Zugriff ermöglichen<a hidden class="anchor" aria-hidden="true" href="#ssh-zugriff-ermöglichen">#</a></h3>
|
|
<p><a href="https://linuxconfig.org/allow-ssh-root-login-on-ubuntu-20-04-focal-fossa-linux">Allow SSH root login on Ubuntu 20.04 Focal Fossa Linux</a></p>
|
|
<h3 id="shellbefehle-zur-installation">Shellbefehle zur Installation:<a hidden class="anchor" aria-hidden="true" href="#shellbefehle-zur-installation">#</a></h3>
|
|
<pre tabindex="0"><code class="language-shell=" data-lang="shell=">sudo apt update && apt upgrade -y
|
|
|
|
apt install mariadb-server
|
|
sudo apt install apache2 libapache2-mod-fcgid
|
|
sudo apt install php php-cli php-fpm php-json php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-intl php-xmlrpc php-soap
|
|
a2enconf php7.4-fpm
|
|
|
|
sudo a2enmod actions fcgid alias proxy_fcgi setenvif
|
|
|
|
a2dismod php7.4
|
|
a2dismod mpm_prefork
|
|
a2dismod mpm_worker
|
|
|
|
a2enmod mpm_event
|
|
|
|
systemctl restart php7.4-fpm apache2
|
|
</code></pre><h3 id="anlegen-etcapache2sites-availablemoodleconf">anlegen: /etc/apache2/sites-available/moodle.conf<a hidden class="anchor" aria-hidden="true" href="#anlegen-etcapache2sites-availablemoodleconf">#</a></h3>
|
|
<pre tabindex="0"><code class="language-shell=" data-lang="shell=">############################
|
|
<VirtualHost *:80>
|
|
ServerName moodle.local
|
|
|
|
ServerAdmin webmaster@localhost
|
|
DocumentRoot /var/www/moodle
|
|
|
|
<FilesMatch \.php$>
|
|
SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/"
|
|
</FilesMatch>
|
|
|
|
ErrorLog ${APACHE_LOG_DIR}/error.log
|
|
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
|
|
|
</VirtualHost>
|
|
####################################################################
|
|
</code></pre><h3 id="weitere-shellbefehle-zur-installation">Weitere Shellbefehle zur Installation:<a hidden class="anchor" aria-hidden="true" href="#weitere-shellbefehle-zur-installation">#</a></h3>
|
|
<pre tabindex="0"><code class="language-shell=" data-lang="shell=">a2ensite moodle.conf
|
|
systemctl reload apache2
|
|
|
|
mkdir /var/www/moodle
|
|
echo '<?php phpinfo(); ?>' > /var/www/moodle/info.php
|
|
</code></pre><h3 id="host-eintrag-hinzufügen-192168178xxx-moodlelocal">host eintrag hinzufügen: “192.168.178.xxx moodle.local”<a hidden class="anchor" aria-hidden="true" href="#host-eintrag-hinzufügen-192168178xxx-moodlelocal">#</a></h3>
|
|
<p>192.168.178.xxx moodle.local
|
|
192.168.178.xxx <a href="https://www.moodle.local">www.moodle.local</a></p>
|
|
<h3 id="im-browser-öffnen-httpmoodlelocalinfophp">im Browser öffnen: <a href="http://moodle.local/info.php">http://moodle.local/info.php</a><a hidden class="anchor" aria-hidden="true" href="#im-browser-öffnen-httpmoodlelocalinfophp">#</a></h3>
|
|
<h3 id="maschine-speichern-und-klonen">maschine speichern und klonen<a hidden class="anchor" aria-hidden="true" href="#maschine-speichern-und-klonen">#</a></h3>
|
|
<h2 id="anschließend-iomad-moodle-installieren">Anschließend IOMAD moodle installieren:<a hidden class="anchor" aria-hidden="true" href="#anschließend-iomad-moodle-installieren">#</a></h2>
|
|
<p><a href="https://www.iomad.org/wp-content/uploads/2021/03/Iomad-Installation-Guide.pdf">https://www.iomad.org/wp-content/uploads/2021/03/Iomad-Installation-Guide.pdf</a></p>
|
|
<h3 id="datenbank-für-moodle-erzeugen-via-ssh">Datenbank für moodle erzeugen via SSH:<a hidden class="anchor" aria-hidden="true" href="#datenbank-für-moodle-erzeugen-via-ssh">#</a></h3>
|
|
<pre tabindex="0"><code class="language-shell=" data-lang="shell=">
|
|
mysql
|
|
|
|
CREATE DATABASE moodledb;
|
|
CREATE USER 'moodleowner'@'localhost' IDENTIFIED BY '$mdb2passwd';
|
|
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, DROP, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON moodledb.* TO 'moodleowner'@'localhost';
|
|
GRANT FILE ON *.* TO 'moodleowner'@'localhost';
|
|
|
|
quit
|
|
</code></pre><h3 id="installation-iomad">Installation iomad<a hidden class="anchor" aria-hidden="true" href="#installation-iomad">#</a></h3>
|
|
<pre tabindex="0"><code class="language-shell=" data-lang="shell=">cd /var/www/moodle
|
|
git clone https://github.com/iomad/iomad.git
|
|
cd iomad
|
|
git checkout -b myiomad origin/IOMAD_310_STABLE
|
|
mkdir /var/www/moodledata && chmod 777 /var/www/moodledata
|
|
</code></pre><p><strong>ändern!!!</strong>: <code>/etc/apache2/sites-available/moodle.conf -> DocumentRoot /var/www/moodle/iomad</code></p>
|
|
<p><code>systemctl restart php7.4-fpm apache2</code></p>
|
|
<h3 id="httpmoodlelocal-aufrufen-und-configphp-datei-mit-hilfe-des-assistenten-generieren-lassen"><a href="http://moodle.local">http://moodle.local</a> aufrufen und config.php Datei mit Hilfe des Assistenten generieren lassen<a hidden class="anchor" aria-hidden="true" href="#httpmoodlelocal-aufrufen-und-configphp-datei-mit-hilfe-des-assistenten-generieren-lassen">#</a></h3>
|
|
<p></p>
|
|
<p><strong>ändern!!!</strong>: <code>/moodle</code> entfernen</p>
|
|
<h3 id="configphp">config.php<a hidden class="anchor" aria-hidden="true" href="#configphp">#</a></h3>
|
|
<pre tabindex="0"><code class="language-shell=" data-lang="shell="><?php // Moodle configuration file
|
|
|
|
unset($CFG);
|
|
global $CFG;
|
|
$CFG = new stdClass();
|
|
|
|
$CFG->dbtype = 'mariadb';
|
|
$CFG->dblibrary = 'native';
|
|
$CFG->dbhost = 'localhost';
|
|
$CFG->dbname = 'moodledb';
|
|
$CFG->dbuser = 'moodleowner';
|
|
$CFG->dbpass = '$mdb2passwd';
|
|
$CFG->prefix = 'mdl_';
|
|
$CFG->dboptions = array (
|
|
'dbpersist' => 0,
|
|
'dbport' => '',
|
|
'dbsocket' => '',
|
|
'dbcollation' => 'utf8mb4_general_ci',
|
|
);
|
|
|
|
$CFG->wwwroot = 'http://moodle.local';
|
|
$CFG->dataroot = '/var/www/moodledata';
|
|
$CFG->admin = 'admin';
|
|
|
|
$CFG->directorypermissions = 0777;
|
|
|
|
require_once(__DIR__ . '/lib/setup.php');
|
|
|
|
// There is no php closing tag in this file,
|
|
// it is intentional because it prevents trailing whitespace problems!
|
|
</code></pre>
|
|
|
|
</div>
|
|
|
|
<footer class="post-footer">
|
|
<ul class="post-tags">
|
|
</ul>
|
|
</footer>
|
|
</article>
|
|
</main>
|
|
|
|
<footer class="footer">
|
|
<span>© 2025 <a href="http://localhost:1313/">Jörg Lohrer</a></span>
|
|
<span>
|
|
Powered by
|
|
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
|
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
|
<a rel="me" href="https://reliverse.social/@joerglohrer">Mastodon</a>
|
|
</span>
|
|
</footer>
|
|
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
|
<path d="M12 6H0l6-6z" />
|
|
</svg>
|
|
</a>
|
|
|
|
<script>
|
|
let menu = document.getElementById('menu')
|
|
if (menu) {
|
|
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
|
menu.onscroll = function () {
|
|
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
|
}
|
|
}
|
|
|
|
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
|
anchor.addEventListener("click", function (e) {
|
|
e.preventDefault();
|
|
var id = this.getAttribute("href").substr(1);
|
|
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
|
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
|
behavior: "smooth"
|
|
});
|
|
} else {
|
|
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
|
}
|
|
if (id === "top") {
|
|
history.replaceState(null, null, " ");
|
|
} else {
|
|
history.pushState(null, null, `#${id}`);
|
|
}
|
|
});
|
|
});
|
|
|
|
</script>
|
|
<script>
|
|
var mybutton = document.getElementById("top-link");
|
|
window.onscroll = function () {
|
|
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
|
mybutton.style.visibility = "visible";
|
|
mybutton.style.opacity = "1";
|
|
} else {
|
|
mybutton.style.visibility = "hidden";
|
|
mybutton.style.opacity = "0";
|
|
}
|
|
};
|
|
|
|
</script>
|
|
<script>
|
|
document.getElementById("theme-toggle").addEventListener("click", () => {
|
|
if (document.body.className.includes("dark")) {
|
|
document.body.classList.remove('dark');
|
|
localStorage.setItem("pref-theme", 'light');
|
|
} else {
|
|
document.body.classList.add('dark');
|
|
localStorage.setItem("pref-theme", 'dark');
|
|
}
|
|
})
|
|
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|