Server Setup · 8 min read · Jan 27, 2026

Il Server Perfetto - OpenSUSE 13.1 x86_64 (Apache2, MySQL, PHP, Postfix, Dovecot e ISPConfig 3) - Pagina 4

8 Installa Postfix, Dovecot, MySQL

Esegui

zypper install postfix postfix-mysql mysql-community-server libmysqlclient-devel dovecot21 dovecot21-backend-mysql pwgen cron python

Se ricevi il seguente messaggio, seleziona di disinstallare exim:

Problema: sendmail-8.14.5-85.1.2.x86_64 confligge con postfix fornito da postfix-2.9.6-1.2.1.x86_64
Soluzione 1: Le seguenti azioni verranno eseguite:
non installare postfix-2.9.6-1.2.1.x86_64
non installare postfix-mysql-2.9.6-1.2.1.x86_64
Soluzione 2: disinstallazione di sendmail-8.14.5-85.1.2.x86_64

Scegli tra le soluzioni sopra per numero o annulla [1/2/c] (c): <– 2

Crea il seguente symlink:

ln -s /usr/lib64/dovecot/modules /usr/lib/dovecot

A questo punto ho dovuto riavviare perché altrimenti MySQL si rifiutava di avviarsi con l’errore:

Failed to issue method call: Unit mysql.service failed to load: No such file or directory. See system logs and 'systemctl status mysql.service' for details.
reboot

Apri il file di configurazione di MySQL /etc/my.cnf con un editor

vi /etc/my.cnf

e cambia la riga “ sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES “ in:

sql_mode=NO_ENGINE_SUBSTITUTION

Poi apri il file /usr/my.cnf con un editor

vi /usr/my.cnf

e cambia sql mode in

sql_mode=NO_ENGINE_SUBSTITUTION

anche lì.

Avvia MySQL, Postfix e Dovecot e abilita i servizi per essere avviati all’avvio.

systemctl enable mysql.service  
systemctl start mysql.service
systemctl enable postfix.service  
systemctl start postfix.service
systemctl enable dovecot.service  
systemctl start dovecot.service

Ora installo il pacchetto getmail:

zypper install getmail

Per proteggere l’installazione di MySQL, esegui:

mysql_secure_installation

Ora ti verranno poste diverse domande:

server1:~ # mysql_secure_installation

NOTA: ESEGUIRE TUTTE LE PARTI DI QUESTO SCRIPT È RACCOMANDATO PER TUTTI I SERVER MySQL
IN USO IN PRODUZIONE! PER FAVORE LEGGI ATTENTAMENTE OGNI PASSO!

Per accedere a MySQL per proteggerlo, avremo bisogno della
password attuale per l’utente root. Se hai appena
installato MySQL e
non hai ancora impostato la password di root,
la password sarà vuota,
quindi dovresti semplicemente premere invio
qui.

Inserisci la password attuale per root (premi invio per nessuna): <– ENTER
OK, password utilizzata con successo, procedendo…

Impostare la password di root garantisce
che nessuno possa accedere all’utente root di MySQL
senza la corretta autorizzazione.

Impostare la password di root? [Y/n] <– Y
Nuova password: <– yourrootsqlpassword
Reinserisci la nuova password: <– yourrootsqlpassword
Password aggiornata con successo!
Ricaricamento delle tabelle di privilegio.. … Successo!

Per impostazione predefinita,
un’installazione di MySQL ha
un utente anonimo,
che consente a chiunque
di accedere a MySQL
senza dover avere
un’account utente creato
per loro. Questo
è destinato solo
per i test e
per rendere l’installazione
un po’ più fluida.
Dovresti rimuoverli
prima di passare a un
ambiente di produzione.

Rimuovere gli utenti anonimi? [Y/n] <– Y
… Successo!

Normalmente,
root dovrebbe
esere autorizzato
a connettersi
solo da ‘localhost’.
Questo
assicura che
qualcuno non possa
indovinare
la password di root
dalla rete.

Negare l’accesso remoto a root? [Y/n] <– Y
… Successo!

Per impostazione predefinita,
MySQL
viene fornito con
un database chiamato ‘test’
che chiunque può
accedere.
Questo
è anche destinato
solo per i test,
e dovrebbe
esere rimosso
prima di passare a un
ambiente di produzione.

Rimuovere il database di test
e l’accesso ad esso? [Y/n] <– Y

  • Rimozione del database di test… … Successo!
  • Rimozione dei privilegi
    sul database di test… … Successo!

Ricaricare le tabelle di privilegio
assicurerà che
tutte le modifiche
fatte finora
entreranno in vigore
immediatamente.

Ricaricare le tabelle di privilegio ora? [Y/n] <– Y
… Successo!

Pulizia…

Tutto fatto! Se hai
completato tutti
passi sopra,
la tua installazione
di MySQL
dovrebbe ora
esere sicura.

Grazie per aver
utilizzato MySQL!

server1:~ #

Ora la tua configurazione di MySQL dovrebbe essere sicura.

9 Amavisd-new, Spamassassin e Clamav

Installa Amavisd-new, Spamassassin e Clamav antivirus. Esegui

zypper install amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql

Apri /etc/amavisd.conf…

vi /etc/amavisd.conf

… e aggiungi la riga $myhostname con il tuo corretto hostname sotto la riga $mydomain:

| [...] $mydomain = 'example.com'; # un'impostazione predefinita conveniente per altre impostazioni $myhostname = "server1.$mydomain"; [...] |

Poi crea un symlink da /var/run/clamav/clamd a /var/lib/clamav/clamd-socket:

mkdir -p /var/run/clamav  
ln -s /var/lib/clamav/clamd-socket /var/run/clamav/clamd

OpenSUSE 13.1 ha una directory /run per memorizzare i dati di runtime. /run è ora un tmpfs, e /var/run è ora montato bind a /run da tmpfs, e quindi svuotato al riavvio.

Questo significa che dopo un riavvio, la directory /var/run/clamav che abbiamo appena creato non esisterà più, e quindi clamd non si avvierà. Pertanto creiamo il file /etc/tmpfiles.d/clamav.conf ora che creerà questa directory all’avvio del sistema (vedi http://0pointer.de/public/systemd-man/tmpfiles.d.html per ulteriori dettagli):

vi /etc/tmpfiles.d/clamav.conf

| D /var/run/clamav 0755 root root - |

Prima di avviare amavisd e clamd, dobbiamo modificare lo script di inizializzazione /etc/init.d/amavis - non sono riuscito ad avviare, fermare e riavviare amavisd in modo affidabile con lo script di inizializzazione predefinito:

vi /etc/init.d/amavis

Commenta le seguenti righe nella sezione di avvio e arresto:

| [...] start) # ZMI 20100428 controlla il file pid obsoleto #if test -f $AMAVIS_PID ; then # checkproc -p $AMAVIS_PID amavisd # if test $? -ge 1 ; then # # il file pid è obsoleto, rimuovilo # echo -n "(file pid amavisd obsoleto $AMAVIS_PID trovato, rimuovendo. Amavisd è andato in crash?)" # rm -f $AMAVIS_PID # fi #fi echo -n "Avvio dello scanner antivirus (amavisd-new): " $AMAVISD_BIN start #if ! checkproc amavisd; then # rc_failed 7 #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "Avvio di amavis-milter:" # startproc -u vscan $AMAVIS_MILTER_BIN -p $AMAVIS_MILTER_SOCK > /dev/null 2>&1 # rc_status -v #fi ;; stop) echo -n "Arresto dello scanner antivirus (amavisd-new): " #if checkproc amavisd; then # rc_reset $AMAVISD_BIN stop #else # rc_reset #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "Arresto di amavis-milter: " # killproc -TERM $AMAVIS_MILTER_BIN # rc_status -v #fi ;; [...] |

Poiché abbiamo modificato lo script di inizializzazione, dobbiamo eseguire

systemctl --system daemon-reload

ora.

Per avviare clamav dobbiamo scaricare il database e procedere ulteriormente con il comando

freshclam

Nota: Ci vuole molto tempo per scaricare il database, ti si consiglia di non interrompere e non fermare il servizio di aggiornamento freshclam nel frattempo.

Per abilitare i servizi, esegui:

systemctl enable amavis.service  
systemctl enable clamd.service  
systemctl start amavis.service  
systemctl start clamd.service

10 Installa il server web Apache 2 con PHP5, Ruby, Python, WebDAV

Installa Apache2 e suphp. Esegui:

zypper install apache2 apache2-mod_fcgid

Installa PHP5:

zypper install php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl apache2-mod_php5
zypper install http://download.opensuse.org/repositories/server:/php/openSUSE_13.1/x86_64/suphp-0.7.1-5.3.x86_64.rpm

Poi esegui questi comandi per abilitare i moduli Apache (incluso WebDAV):

a2enmod socache_shmcb
a2enmod suexec  
a2enmod rewrite  
a2enmod ssl  
a2enmod actions  
a2enmod suphp  
a2enmod fcgid  
a2enmod dav  
a2enmod dav_fs  
a2enmod dav_lock  
a2enmod logio  
chown root:www /usr/sbin/suexec2  
chmod 4755 /usr/sbin/suexec2
a2enflag SSL

Per aggiungere il supporto Python, esegui:

zypper --gpg-auto-import-keys addrepo --name "Supporto Python (Apache_openSUSE_13.1)" http://download.opensuse.org/repositories/Apache:/Modules/openSUSE_13.1/  apache-Modules
zypper install apache2-mod_python
a2enmod python

Successivamente installiamo phpMyAdmin:

zypper install phpMyAdmin

Per assicurarci di poter accedere a phpMyAdmin da tutti i siti web creati tramite ISPConfig in seguito utilizzando /phpmyadmin (ad esempio, http://www.example.com/phpmyadmin) e /phpMyAdmin (ad esempio, http://www.example.com/phpMyAdmin), apri /etc/apache2/conf.d/phpMyAdmin.conf…

vi /etc/apache2/conf.d/phpMyAdmin.conf

… e aggiungi i seguenti due alias proprio all’inizio:

| Alias /phpMyAdmin /srv/www/htdocs/phpMyAdmin Alias /phpmyadmin /srv/www/htdocs/phpMyAdmin [...] |

Prima di avviare apache dobbiamo seguire il link e apportare modifiche in httpd.conf

vi /etc/apache2/httpd.conf

Commenta queste righe e aggiungi queste righe

#  
#    Options None  
#    AllowOverride None  
#    Order deny,allow  
#   Deny from all  
#  
  
  
Options None  
AllowOverride None  
Require all denied  

Ora avvia il servizio Apache

systemctl enable apache2.service  
systemctl start apache2.service

10.1 PHP-FPM

A partire da ISPConfig 3.0.5, c’è una modalità PHP aggiuntiva che puoi selezionare per l’uso con Apache: PHP-FPM.

Per utilizzare PHP-FPM con Apache, abbiamo bisogno del modulo mod_fastcgi di Apache (per favore non confonderlo con mod_fcgid - sono molto simili, ma non puoi usare PHP-FPM con mod_fcgid). Possiamo installare PHP-FPM e mod_fastcgi come segue:

mod_fastcgi è disponibile da un repository di terze parti che possiamo abilitare come segue:

Successivamente installiamo Fastcgi e PHP-FPM:

zypper install fastcgi php5-fpm

Ora scarica e installa mod_fastcgi:

cd /tmp  
wget http://download.opensuse.org/repositories/home:/munix9/openSUSE_13.1/x86_64/apache2-mod_fastcgi-2.4.7_SNAP_0910052141-3.1.x86_64.rpm  
rpm -i apache2-mod_fastcgi-2.4.7_SNAP_0910052141-3.1.x86_64.rpm  
a2enmod mod_fastcgi

Prima di avviare PHP-FPM, rinomina /etc/php5/fpm/php-fpm.conf.default in /etc/php5/fpm/php-fpm.conf:

mv /etc/php5/fpm/php-fpm.conf.default /etc/php5/fpm/php-fpm.conf

Cambia i permessi della directory di sessione di PHP:

chmod 1733 /var/lib/php5

Poi apri /etc/php5/fpm/php-fpm.conf…

vi /etc/php5/fpm/php-fpm.conf

… e cambia error_log in /var/log/php-fpm.log:

| [...] error_log = /var/log/php-fpm.log [...] |

Non c’è un file php.ini per PHP-FPM sotto OpenSUSE 13.1, quindi copiamo il php.ini CLI:

cp /etc/php5/cli/php.ini /etc/php5/fpm/

Successivamente apri /etc/php5/fpm/php.ini…

vi /etc/php5/fpm/php.ini

… e imposta cgi.fix_pathinfo su 0:

| [...] ; cgi.fix_pathinfo fornisce supporto *reale* per PATH_INFO/PATH_TRANSLATED per CGI. PHP's ; il comportamento precedente era di impostare PATH_TRANSLATED su SCRIPT_FILENAME, e di non comprendere ; cosa sia PATH_INFO. Per ulteriori informazioni su PATH_INFO, vedere le specifiche cgi. Impostare ; questo su 1 farà sì che PHP CGI corregga i suoi percorsi per conformarsi alla specifica. Un'impostazione ; di zero fa sì che PHP si comporti come prima. Il valore predefinito è 1. Dovresti correggere i tuoi script ; per utilizzare SCRIPT_FILENAME piuttosto che PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |

Successivamente crea i collegamenti di avvio del sistema per php-fpm e avvialo:

systemctl enable php-fpm.service   
systemctl start php-fpm.service

PHP-FPM è un processo daemon che esegue un server FastCGI sulla porta 9000, come puoi vedere nell’output di

netstat -tapn
server1:~ # netstat -tapn  
Connessioni Internet attive (server e stabilite)  
Proto Ricev-Q Invi-Q Indirizzo Locale           Indirizzo Esterno         Stato       PID/Nome programma  
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2329/nginx  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1204/sshd  
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      2511/php-fpm.conf)  
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2059/mysqld  
tcp        0      0 192.168.0.100:22        192.168.0.199:1632      ESTABLISHED 1284/0  
tcp        0      0 :::22                    :::*                     LISTEN      1204/sshd  
server1:~ #

Successivamente abilita i seguenti moduli Apache…

a2enmod actions  
a2enmod fastcgi  
a2enmod alias

… e riavvia Apache:

systemctl restart apache2.service
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.