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 pythonSe 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/dovecotA 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.rebootApri il file di configurazione di MySQL /etc/my.cnf con un editor
vi /etc/my.cnfe cambia la riga “ sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES “ in:
sql_mode=NO_ENGINE_SUBSTITUTIONPoi apri il file /usr/my.cnf con un editor
vi /usr/my.cnfe cambia sql mode in
sql_mode=NO_ENGINE_SUBSTITUTIONanche lì.
Avvia MySQL, Postfix e Dovecot e abilita i servizi per essere avviati all’avvio.
systemctl enable mysql.service
systemctl start mysql.servicesystemctl enable postfix.service
systemctl start postfix.servicesystemctl enable dovecot.service
systemctl start dovecot.serviceOra installo il pacchetto getmail:
zypper install getmailPer proteggere l’installazione di MySQL, esegui:
mysql_secure_installationOra 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-mysqlApri /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/clamdOpenSUSE 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/amavisCommenta 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-reloadora.
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.service10 Installa il server web Apache 2 con PHP5, Ruby, Python, WebDAV
Installa Apache2 e suphp. Esegui:
zypper install apache2 apache2-mod_fcgidInstalla 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_php5zypper install http://download.opensuse.org/repositories/server:/php/openSUSE_13.1/x86_64/suphp-0.7.1-5.3.x86_64.rpmPoi esegui questi comandi per abilitare i moduli Apache (incluso WebDAV):
a2enmod socache_shmcba2enmod 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/suexec2a2enflag SSLPer 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-Moduleszypper install apache2-mod_pythona2enmod pythonSuccessivamente installiamo phpMyAdmin:
zypper install phpMyAdminPer 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.service10.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-fpmOra 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_fastcgiPrima 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.confCambia i permessi della directory di sessione di PHP:
chmod 1733 /var/lib/php5Poi 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.servicePHP-FPM è un processo daemon che esegue un server FastCGI sulla porta 9000, come puoi vedere nell’output di
netstat -tapnserver1:~ # 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.serviceRicevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.