{"id":921,"date":"2019-10-02T23:31:59","date_gmt":"2019-10-02T21:31:59","guid":{"rendered":"https:\/\/gabrielezappi.net\/?p=921"},"modified":"2019-10-19T16:09:29","modified_gmt":"2019-10-19T14:09:29","slug":"installare-rhel-centos-8-grafico-compelto-con-l-a-m-p-su-virtualbox-2","status":"publish","type":"post","link":"https:\/\/gabrielezappi.net\/en\/installare-rhel-centos-8-grafico-compelto-con-l-a-m-p-su-virtualbox-2\/","title":{"rendered":"installare RHEL \/ centos 8 GRAFICO, COMPELTO con l.a.m.p. su virtualbox"},"content":{"rendered":"\n<p>Articolo scritto il 10 ottobre 2019, <br>ultima revisione di aggiornamento: 19 ottobre 2019<\/p>\n\n\n\n<p style=\"font-size:18px\">Screenshot delle VM installate per realizzare questo articolo.<\/p>\n\n\n\n<p><br><em>RedHat Enterprise Linux 8<\/em>:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/RH8-1024x576.jpg\" alt=\"\" class=\"wp-image-908\" srcset=\"https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/RH8-1024x576.jpg 1024w, https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/RH8-300x169.jpg 300w, https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/RH8-768x432.jpg 768w, https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/RH8.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><em>CentOS 8<\/em>:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/CentOS8-1024x576.jpeg\" alt=\"\" class=\"wp-image-911\" srcset=\"https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/CentOS8-1024x576.jpeg 1024w, https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/CentOS8-300x169.jpeg 300w, https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/CentOS8-768x432.jpeg 768w, https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/CentOS8.jpeg 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Parto dal presupposto che abbiate gi\u00e0 completato l&#8217;installazione RedHat Enterprise Linux 8 o CentOS 8 su una VM Virtualbox correttamente configurata. <br>I parametri della Virtual Machine che ho utilizzato io per le mie prove sono i seguenti:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"818\" src=\"https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/Parametri_VM_Vbox-1024x818.jpeg\" alt=\"\" class=\"wp-image-909\" srcset=\"https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/Parametri_VM_Vbox-1024x818.jpeg 1024w, https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/Parametri_VM_Vbox-300x240.jpeg 300w, https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/Parametri_VM_Vbox-768x614.jpeg 768w, https:\/\/gabrielezappi.net\/wp-content\/uploads\/2019\/10\/Parametri_VM_Vbox.jpeg 1234w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Si pu\u00f2 anche fare una VM di dimensioni inferiori, ma senza esagerare!! (Ad esempio, pu\u00f2 bastare anche una VM con un solo processore, ma la RAM non abbassatela al di sotto degli 1.5Gb specie se dovete abilitare diversi servizi, oltre all&#8217;interfaccia grafica). Quando il programma di installazione &#8220;Anaconda&#8221; mi ha chiesto che tipo di uso ne volevo fare (anche per determinare quale gruppo di pacchetti di base installare) ho scelto &#8220;Server con Gui&#8221;.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Preparazione installazione Virtualbox guest addition.<\/h2>\n\n\n\n<p>Aprire il terminale ed eseguire l&#8217;installazione di questi pacchetti:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">dnf install kernel-devel-$(uname -r) kernel-headers perl gcc make elfutils-libelf-devel<\/pre>\n\n\n\n<p>Per la compilazione delle guest addition, montare il cd virtuale e lanciare il comando .\/VBoxLinuxAdditions.run ..<\/p>\n\n\n\n<p>Al momento della scrittura del presente articolo, con Virtualbox 6.0.10, accade questo: <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[root@centos8streamvm \/run\/media\/gabo\/VBox_GAs_6.0.10]# .\/VBoxLinuxAdditions.run\n Verifying archive integrity\u2026 All good.\n Uncompressing VirtualBox 6.0.10 Guest Additions for Linux\u2026\u2026..\n VirtualBox Guest Additions installer\n Copying additional installer modules \u2026\n Installing additional modules \u2026\n VirtualBox Guest Additions: Starting.\n VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel\n modules.  This may take a while.\n VirtualBox Guest Additions: To build modules for other installed kernels, run\n VirtualBox Guest Additions:   \/sbin\/rcvboxadd quicksetup \n VirtualBox Guest Additions: or\n VirtualBox Guest Additions:   \/sbin\/rcvboxadd quicksetup all\n VirtualBox Guest Additions: Building the modules for kernel\n 4.18.0-144.el8.x86_64.\n VirtualBox Guest Additions: Look at \/var\/log\/vboxadd-setup.log to find out what\n went wrong\n ValueError: File context for \/opt\/VBoxGuestAdditions-6.0.10\/other\/mount.vboxsf already defined\n modprobe vboxguest failed\n The log file \/var\/log\/vboxadd-setup.log may contain further information.<\/pre>\n\n\n\n<p style=\"background-color:#fff681\" class=\"has-background borderonesolid\"><strong>EDIT del 19\/10\/2019<\/strong>: <br>Pare che con la <span style=\"text-decoration: underline;\">versione 6.0.14<\/span> di Virtualbox siano stati risolti i problemi di compilazione delle <em>guest additions<\/em> su Linux RedHat 8, e CentOS 8 Stream, per cui se avete installato questa versione di Virtualbox, baster\u00e0 inserire &#8220;l&#8217;immagine del CD delle Guest Additions&#8221; dal men\u00f9 della macchina virtuale e lasciare semplicemente procedere la compilazione, che dovrebbe andare avanti senza intoppi. In questo caso, dunque, potete saltare la presente sezione, ed andare subito alle &#8220;<a href=\"#instphpmyadmin\">istruzioni per l&#8217;installazione di phpMyAdmin<\/a>&#8220;<\/p>\n\n\n\n<p>Se si fa un cat del log, si ha<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">....\n\/tmp\/vbox.0\/r0drv\/linux\/memuserkernel-r0drv-linux.c: In function \u2018VBoxGuest_RTR0MemUserIsValidAddr\u2019:\n \/tmp\/vbox.0\/r0drv\/linux\/memuserkernel-r0drv-linux.c:72:55: <strong>error: macro \"access_ok\" passed 3 arguments, but takes just 2<\/strong>\n      bool fRc = access_ok(VERIFY_READ, (void *)R3Ptr, 1);\n                                                        ^\n \/tmp\/vbox.0\/r0drv\/linux\/memuserkernel-r0drv-linux.c:72:16: error: \u2018access_ok\u2019 undeclared (first use in this function)\n      bool fRc = access_ok(VERIFY_READ, (void *)R3Ptr, 1);\n                 ^<del>~<\/del>~~~\n \/tmp\/vbox.0\/r0drv\/linux\/memuserkernel-r0drv-linux.c:72:16: note: each undeclared identifier is reported only once for each function it appears in\n...<\/pre>\n\n\n\n<p>Se l&#8217;errore \u00e8 &#8220;macro &#8220;access_ok&#8221; passed 3 arguments, but takes just 2&#8243; &#8230; \u00e8 perch\u00e9 nel Kernel Linux 5.0, Linus ha deciso di rimuovere il parametro &#8216;type&#8217; dalla funzione access_ok. Voi direte &#8220;Ma ho la 4.18.0, mica la 5.0&#8221;. D&#8217;accordo, ma come di consueto RedHat \u00e8 famosa per apportare backports di versioni future ad una versione di kernel con release inferiore. Per ovviare a questo inconveniente, dobbiamo fare quanto segue:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>for i in $(grep -Rl \"KERNEL_VERSION(5,\" | grep -v vfsmod.c); do sed -i \"s\/KERNEL_VERSION(5, 0, 0)\/KERNEL_VERSION(4, 18, 0)\/g\" $i; done<\/code><\/pre>\n\n\n\n<p>Quindi ricompilare le vboxadd con il seguente comando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/sbin\/rcvboxadd quicksetup all<\/pre>\n\n\n\n<p>avrete ancora degli errori, riportati nel log, ma quanto meno il modulo del kernel \u00e8 stato compilato ed inserito nella libreria dei moduli del kernel, ed \u00e8 attivabile tramite il comando:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">modprobe vboxguest<\/pre>\n\n\n\n<p>e vedrete immediatamente la videata grafica della macchina virtuale che assume le dimensioni della risoluzione fisica della finestra in cui gira, ed il mouse \u00e8 interattivo tra l&#8217;ambiente guest e quello host (ci\u00f2 significa che l&#8217;estensione guest addition, almeno per ci\u00f2 che riguarda lo condivisione della memoria grafica con l&#8217;host, sta funzionando correttamente).<br>Se poi qualcuno fosse a conoscenza di una patch migliore,  naturalmente, faccia sapere nei commenti.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<div id=\"instphpmyadmin\"><h2>Istruzioni Installazione phpMyAdmin<\/h2><\/div>\n\n\n\n<p>In questa parte riprendo i suggerimenti presi da <a href=\"https:\/\/computingforgeeks.com\/install-and-configure-phpmyadmin-on-rhel-8\/\">questa<\/a> fonte, ma semplificandola in passi pi\u00f9 sintetici e veloci, e riassumendoli in un unico script che dovrebbe portare a compimento la maggior parte delle operazioni.<\/p>\n\n\n\n<p>Io in genere quando installo server di test (macchine virtuali o fisiche che siano), non abilito n\u00e9 SElinux, ne il firewall, e quando installo server Linux in produzione, valuto di caso in caso (Se il server \u00e8 gi\u00e0 dietro un firewall o dietro DMZ, se \u00e8 un server con accesso utenti a sistema oppure no, ecc.. ), e cerco di attivare meno servizi possibili pur mantenedo un buon grado di sicurezza: c&#8217;\u00e8 gi\u00e0 Systemd che stressa abbastanza con restrizioni di vario genere \ud83d\ude00<\/p>\n\n\n\n<p>Tuttavia, per completezza d&#8217;informazione, in queste istruzioni definisco anche gli step che sono necessari per rendere phpmyadmin, installato con questo metodo, funzionante anche avendo firewall e SElinux attivi.<\/p>\n\n\n\n<p>Ecco il mio script (vi consiglio di fare un copia+in un file, chiamandolo ad esempio &#8220;inst_phpmyadmin_rh8.sh&#8221; e poi dargli i permessi di eseguibilit\u00e0 con un &#8220;chmod +x  inst_phpmyadmin_rh8.sh&#8221;)  :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#!\/bin\/bash\nfunction generate_blowfish()\n{\n   BLOWFISH=\n   ncars=\"$1\"\n   for car in <code>seq 1 $ncars<\/code>\n   do\n     rnd=$((RANDOM % 62))\n     if [ $rnd -lt 10 ]; then\n         asc=$((48+$rnd))\n     elif [ $rnd -gt 35 ]; then\n         asc=$((97+$rnd-36))\n     else\n         asc=$((65+$rnd-10))\n     fi\n     bfchar=$(printf \"\\\\$(printf %o $asc)\")\n     BLOWFISH=\"${BLOWFISH}${bfchar}\"\n   done\n}\n[ \"$UID\" -ne 0 ] &amp;&amp; { echo \"script must be run as root user\"; exit; }\n\nBLOWFISH=\ngenerate_blowfish 36\ndnf -y install httpd mariadb-server \\\n      php php-gd php-mysqlnd php-mbstring php-json\necho\necho \"Waiting 2 secs\u2026\"\nsleep 2\n\ncd\nmkdir -p Downloads\ncd Downloads\nexport VER=\"4.9.0.1\"\ncurl -o phpMyAdmin-${VER}-all-languages.tar.gz https:\/\/files.phpmyadmin.net\/phpMyAdmin\/${VER}\/phpMyAdmin-${VER}-all-languages.tar.gz \ntar xvf phpMyAdmin-${VER}-all-languages.tar.gz\nrm -f phpMyAdmin-${VER}-all-languages.tar.gz \nmv phpMyAdmin-${VER}-all-languages \/usr\/share\/phpmyadmin\nmkdir -p \/var\/lib\/phpmyadmin\/tmp\nchown -R apache:apache \/var\/lib\/phpmyadmin\nmkdir \/etc\/phpmyadmin\/\ncp \/usr\/share\/phpmyadmin\/config.sample.inc.php  \/usr\/share\/phpmyadmin\/config.inc.php\necho\necho \"Waiting 2 secs\u2026\"\nsleep 2\n# Ora metto il mio random blowfish dentro al file config e la variabile TempDir ..\n# Prima cancello le eventuali linee con [TempDir] \nsed -i \"\/^.<em>\\$cfg\\['TempDir'\\].<\/em>*$\/d\" \/usr\/share\/phpmyadmin\/config.inc.php\n# Poi sostituisco il bowfish secret col mio..\n sed -i \"s\/\\$cfg\\['blowfish_secret'\\].*$\/\\$cfg['blowfish_secret'] = '${BLOWFISH}';\\n\\$cfg['TempDir'] = '\\\/var\\\/lib\\\/phpmyadmin\\\/tmp';\/\" \/usr\/share\/phpmyadmin\/config.inc.php\n# Ora creo il file di configurazione di phpmyadmin per Apache HTTP Server\ncat &lt;&lt; EOM &gt; \/etc\/httpd\/conf.d\/phpmyadmin.conf\n# Apache configuration for phpMyAdmin\nAlias \/phpMyAdmin \/usr\/share\/phpmyadmin\/\nAlias \/phpmyadmin \/usr\/share\/phpmyadmin\/\n\n&lt;Directory \/usr\/share\/phpmyadmin\/&gt;\n AddDefaultCharset UTF-8\n &lt;IfModule mod_authz_core.c&gt;\n   # Apache 2.4      \n   Require all granted\n   # Puoi restringere l'accesso a IP specifici aggiungendo una linea come la seguente\n   #  Require ip 127.0.0.1 192.168.0.0\/24 \n &lt;\/IfModule&gt;\n &lt;IfModule !mod_authz_core.c&gt;\n   # Apache 2.2      \n   Order Deny,Allow      \n   Deny from All      \n   Allow from 127.0.0.1      \n   Allow from ::1\n &lt;\/IfModule&gt;\n&lt;\/Directory&gt;\nEOM \n\necho \"Controllo della configurazione di Apache\"\napachectl configtest\necho\necho \"Waiting 2 secs\u2026\"\nsleep 2\necho\nsystemctl restart httpd\nsystemctl restart mariadb\necho \"Abilito il sistema LAMP al boot\"\nsystemctl enable httpd\nsystemctl enable mariadb\necho \n# Impostazioni per SELinux e Firewalld\nsemanage fcontext -a -t httpd_sys_content_t \"\/usr\/share\/phpmyadmin(\/.*)?\"\nrestorecon -Rv \/usr\/share\/phpmyadmin\n# (firewalld) Impostazioni per firewall\nfirewall-cmd --add-service={http,https} --permanent\nfirewall-cmd --reload\necho END\necho \n <\/pre>\n\n\n\n<p>Riassumendo, i principali step svolti da questo script sono:<\/p>\n\n\n\n<p>1 &#8211;  Installazione dei pacchetti base necessari per far funzionare un sistema con PHP, MySQL e l&#8217;applicazione phpMyAdmin<\/p>\n\n\n\n<p>2 &#8211; Download, tramite comando <strong>curl <\/strong>di phpMyAdmin ad una versione aggiornata. Al momento della scrittura del presente documento, ho scaricato la 4.9.0.1. \u00c8 possibile, in presenza di nuove release, farne scaricare una nuova (modificando la variabile VER dello script alla versione desiderata), ma \u00e8 sempre bene valutare la compatibilit\u00e0 tra la versione installata, e la release dei vari applicativi dell&#8217;ecosistema coinvolti (versione di php, di mariadb\/mysql e di apache).<\/p>\n\n\n\n<p>3 &#8211; installazione del pacchetto scaricato e spostamento nelle directory compatibilmente alla struttura del sistema, e creazione delle relative directory temporanee ad uso dell&#8217;applicazione.<\/p>\n\n\n\n<p>4 &#8211; modifica della configurazione di apache httpd atta ad ospitare e a fare girare correttamente phpmyadmin da parte del web server.<\/p>\n\n\n\n<p>5 &#8211; abilitazione in fase di avvio di sistema di tutti i servizi necessari perch\u00e9 phpMyAdmin sia subito fruibile.<\/p>\n\n\n\n<p>6 &#8211; Impostazioni per SELinux per autorizzare phpMyAdmin ad essere  raggiungibile e correttamente eseguito dal web server.<\/p>\n\n\n\n<p>7 &#8211; Impostazioni per il firewall (firewalld) per aprire la\/le porta\/e di rete del web server per permetterne la raggiungibilit\u00e0 dall&#8217;esterno.<\/p>\n\n\n\n<p>Al termine dello script, ricordarsi di Impostare una password di root a mysql (utente dba), in modo che possiate entrare in phpmyadmin con l&#8217;utente root e una password (di default, phpMyAdmin non permette di accedere senza password). <br>Per fare questo occorre fare la prima volta la procedura per la messa in sicurezza di mysql, e quindi eseguire:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">  <strong>mysql_secure_installation <\/strong><\/pre>\n\n\n\n<p>A questo punto ci verr\u00e0 chiesta la password iniziale dell&#8217;utente root (la prima volta sar\u00e0 vuota), poi chieder\u00e0 se impostare una password di root. Rispondere si, e ripetere la password due volte (questa sar\u00e0 la password da utilizzare all&#8217;accesso di phpMyAdmin con utente &#8216;root&#8217;). Poi chiede se lasciare gli utenti anonimi, permettere l&#8217;accesso di root anche da remoto e se lasciare il database di test.  Queste risposte sono a discrezione dell&#8217;utente.<\/p>\n\n\n\n<p>Una volta fatta tutta la procedura, sar\u00e0 possibile accedere al proprio browser:<br>Aprire url: <em><strong>http:\/\/[ServerIP|Hostname]\/phpmyadmin<\/strong><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Articolo scritto il 10 ottobre 2019, ultima revisione di aggiornamento: 19 ottobre 2019 Screenshot delle VM installate per realizzare questo articolo. RedHat Enterprise Linux 8: CentOS 8: Parto dal presupposto che abbiate gi\u00e0 completato l&#8217;installazione RedHat Enterprise Linux 8 o CentOS 8 su una VM Virtualbox correttamente configurata. I parametri della Virtual Machine che ho &hellip; <a href=\"https:\/\/gabrielezappi.net\/en\/installare-rhel-centos-8-grafico-compelto-con-l-a-m-p-su-virtualbox-2\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">installare RHEL \/ centos 8 GRAFICO, COMPELTO con l.a.m.p. su virtualbox<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-921","post","type-post","status-publish","format-standard","hentry","category-senza-categoria"],"_links":{"self":[{"href":"https:\/\/gabrielezappi.net\/en\/wp-json\/wp\/v2\/posts\/921","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gabrielezappi.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gabrielezappi.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gabrielezappi.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gabrielezappi.net\/en\/wp-json\/wp\/v2\/comments?post=921"}],"version-history":[{"count":12,"href":"https:\/\/gabrielezappi.net\/en\/wp-json\/wp\/v2\/posts\/921\/revisions"}],"predecessor-version":[{"id":942,"href":"https:\/\/gabrielezappi.net\/en\/wp-json\/wp\/v2\/posts\/921\/revisions\/942"}],"wp:attachment":[{"href":"https:\/\/gabrielezappi.net\/en\/wp-json\/wp\/v2\/media?parent=921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gabrielezappi.net\/en\/wp-json\/wp\/v2\/categories?post=921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gabrielezappi.net\/en\/wp-json\/wp\/v2\/tags?post=921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}