Server Setup · 10 min read · Sep 13, 2025
Il Server Perfetto - OpenSUSE 12.3 x86_64 (nginx, Dovecot, ISPConfig 3) - Pagina 4
10 Installa Nginx, PHP5 (PHP-FPM) e Fcgiwrap
Nginx è disponibile come pacchetto per OpenSUSE che possiamo installare come segue:
zypper install nginxSe Apache2 è già installato sul sistema, fermalo ora…
systemctl stop apache2.service… e rimuovi i collegamenti di avvio del sistema di Apache:
systemctl disable apache2.servicePoi creiamo i collegamenti di avvio del sistema per nginx e avviamolo:
systemctl enable nginx.service
systemctl start nginx.service(Se sia Apache2 che nginx sono installati, l’installatore di ISPConfig 3 ti chiederà quale vuoi usare - rispondi nginx in questo caso. Se solo uno di questi due è installato, ISPConfig farà la configurazione necessaria automaticamente.)
Se vuoi usare indirizzi IPv6 con i tuoi vhosts nginx, ti preghiamo di fare quanto segue prima di creare vhosts IPv6 in ISPConfig:
Apri /etc/sysctl.conf…
vi /etc/sysctl.conf… e aggiungi la riga net.ipv6.bindv6only = 1:
| [...] net.ipv6.bindv6only = 1 |
Esegui…
sysctl -p… dopo per far sì che la modifica abbia effetto.
Possiamo far funzionare PHP5 in nginx tramite PHP-FPM (PHP-FPM (FastCGI Process Manager) è un’implementazione alternativa di PHP FastCGI con alcune funzionalità aggiuntive utili per siti di qualsiasi dimensione, specialmente per siti più trafficati) che installiamo come segue:
zypper install php5-fpmPrima 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 12.3, 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. Il comportamento precedente di PHP era impostare PATH_TRANSLATED su SCRIPT_FILENAME e non comprendere cosa fosse 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 usare 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 riavvialo:
systemctl enable php-fpm.service
systemctl restart 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 Recv-Q Send-Q Indirizzo Locale Indirizzo Remoto Stato PID/Nome Programma
tcp 0 0 127.0.0.1:3310 0.0.0.0:* LISTEN 10357/clamd
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 9869/dovecot
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10521/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1275/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 9816/master
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 10695/php-fpm.conf)
tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN 10337/amavisd (mast
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 9694/mysqld
tcp 0 0 192.168.0.100:22 192.168.0.199:4630 ESTABLISHED 1332/0
tcp 0 0 :::22 :::* LISTEN 1275/sshd
tcp 0 0 ::1:25 :::* LISTEN 9816/master
server1:~ #Per ottenere il supporto MySQL in PHP, possiamo installare il pacchetto php5-mysql. È una buona idea installare anche alcuni altri moduli PHP5 poiché potresti averne bisogno per le tue applicazioni:
zypper install php5-mysql 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-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-pear php5-sysvmsg php5-sysvshmOra riavvia PHP-FPM:
systemctl restart php-fpm.servicePer ottenere il supporto CGI in nginx, installiamo Fcgiwrap.
Fcgiwrap è un wrapper CGI che dovrebbe funzionare anche per script CGI complessi e può essere utilizzato per ambienti di hosting condiviso poiché consente a ciascun vhost di utilizzare la propria directory cgi-bin.
Poiché non esiste un pacchetto fcgiwrap per OpenSUSE, dobbiamo compilarlo noi stessi. Prima installiamo alcune dipendenze:
zypper install git patch automake glibc-devel gcc flex compat-readline4 db-devel wget gcc-c++ make vim libtool FastCGI-develCrea i seguenti symlink:
ln -s /usr/include/fastcgi/fastcgi.h /usr/local/include/
ln -s /usr/include/fastcgi/fcgi_config.h /usr/local/include/
ln -s /usr/include/fastcgi/fcgi_stdio.h /usr/local/include/
ln -s /usr/include/fastcgi/fcgiapp.h /usr/local/include/
ln -s /usr/include/fastcgi/fcgimisc.h /usr/local/include/
ln -s /usr/include/fastcgi/fcgio.h /usr/local/include/
ln -s /usr/include/fastcgi/fcgios.h /usr/local/include/Ora possiamo costruire fcgiwrap come segue:
cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make installQuesto installa fcgiwrap in /usr/local/sbin/fcgiwrap.
Successivamente installiamo il pacchetto spawn-fcgi che ci consente di eseguire fcgiwrap come un daemon:
zypper install spawn-fcgiPossiamo ora avviare fcgiwrap come segue:
spawn-fcgi -u wwwrun -g www -s /var/run/fcgiwrap.socket -S -M 0770 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/local/sbin/fcgiwrapOra dovresti trovare il socket fcgiwrap in /var/run/fcgiwrap.socket, di proprietà dell’utente wwwrun e del gruppo www. Dobbiamo ora aggiungere l’utente nginx al gruppo www:
usermod -a -G www nginxRicarica nginx successivamente:
systemctl reload nginx.serviceSe non vuoi avviare fcgiwrap manualmente ogni volta che avvii il sistema, apri /etc/init.d/boot.local…
vi /etc/init.d/boot.local… e aggiungi il comando spawn-fcgi alla fine del file - questo avvierà automaticamente fcgiwrap alla fine del processo di avvio:
| [...] /usr/bin/spawn-fcgi -u wwwrun -g www -s /var/run/fcgiwrap.socket -S -M 0770 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/local/sbin/fcgiwrap |
Questo è tutto! Ora quando crei un vhost nginx, ISPConfig si occuperà della corretta configurazione del vhost.
10.1 Installa phpMyAdmin
Successivamente installiamo phpMyAdmin:
zypper install phpMyAdminPoiché questo installa Apache come dipendenza, rimuovi i collegamenti di avvio del sistema di Apache:
systemctl disable apache2.servicephpMyAdmin si trova ora nella directory /srv/www/htdocs/phpMyAdmin, ma lo vogliamo nella directory /usr/share/phpmyadmin/, quindi creiamo un symlink:
ln -s /srv/www/htdocs/phpMyAdmin /usr/share/phpmyadminDopo aver installato ISPConfig 3, puoi accedere a phpMyAdmin come segue:
Il vhost delle app ISPConfig sulla porta 8081 per nginx viene fornito con una configurazione di phpMyAdmin, quindi puoi usare http://server1.example.com:8081/phpmyadmin o http://server1.example.com:8081/phpMyAdmin per accedere a phpMyAdmin.
Se vuoi usare un alias /phpmyadmin o /phpMyAdmin che puoi usare dai tuoi siti web, questo è un po’ più complicato rispetto ad Apache perché nginx non ha alias globali (cioè, alias che possono essere definiti per tutti i vhosts). Pertanto, devi definire questi alias per ogni vhost da cui vuoi accedere a phpMyAdmin.
Per fare ciò, incolla quanto segue nel campo Direttive nginx nella scheda Opzioni del sito web in ISPConfig:
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
Se usi http s invece di http per il tuo vhost, dovresti aggiungere la riga fastcgi_param HTTPS on; alla tua configurazione di phpMyAdmin in questo modo:
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS on; # <-- aggiungi questa riga fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
Se utilizzi sia http che https per il tuo vhost, devi aggiungere la seguente sezione alla sezione http {} in /etc/nginx/nginx.conf (prima di qualsiasi riga di inclusione) che determina se il visitatore utilizza http o https e imposta la variabile $fastcgi_https (che utilizzeremo nella nostra configurazione di phpMyAdmin) di conseguenza:
vi /etc/nginx/nginx.conf| [...] http { [...] ## Rileva quando viene utilizzato HTTPS map $scheme $fastcgi_https { default off; https on; } [...] } [...] |
Non dimenticare di ricaricare nginx successivamente:
systemctl reload nginx.servicePoi vai di nuovo al campo Direttive nginx, e invece di fastcgi_param HTTPS on; aggiungi la riga fastcgi_param HTTPS $fastcgi_https; in modo da poter usare phpMyAdmin per entrambe le richieste http e https:
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS $fastcgi_https; # <-- aggiungi questa riga fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
11 Installa PureFTPd
Installa il demone FTP pure-ftpd. Esegui:
zypper install pure-ftpdsystemctl enable pure-ftpd.service
systemctl start pure-ftpd.serviceOra configuriamo PureFTPd per consentire sessioni FTP e TLS. FTP è un protocollo molto insicuro perché tutte le password e tutti i dati vengono trasferiti in chiaro. Utilizzando TLS, l’intera comunicazione può essere crittografata, rendendo così FTP molto più sicuro.
OpenSSL è necessario per TLS; per installare OpenSSL, eseguiamo semplicemente:
zypper install opensslApri /etc/pure-ftpd/pure-ftpd.conf…
vi /etc/pure-ftpd/pure-ftpd.confSe vuoi consentire sessioni FTP e TLS, imposta TLS su 1:
| [...] # Questa opzione può accettare tre valori : # 0 : disabilita il livello di crittografia SSL/TLS (predefinito). # 1 : accetta sia sessioni tradizionali che crittografate. # 2 : rifiuta connessioni che non utilizzano meccanismi di sicurezza SSL/TLS, # comprese le sessioni anonime. # Non decommentare questo alla leggera. Assicurati che : # 1) Il tuo server sia stato compilato con supporto SSL/TLS (--with-tls), # 2) Un certificato valido sia in atto, # 3) Solo client compatibili accederanno. TLS 1 [...] |
Se vuoi accettare solo sessioni TLS (no FTP), imposta TLS su 2:
| [...] # Questa opzione può accettare tre valori : # 0 : disabilita il livello di crittografia SSL/TLS (predefinito). # 1 : accetta sia sessioni tradizionali che crittografate. # 2 : rifiuta connessioni che non utilizzano meccanismi di sicurezza SSL/TLS, # comprese le sessioni anonime. # Non decommentare questo alla leggera. Assicurati che : # 1) Il tuo server sia stato compilato con supporto SSL/TLS (--with-tls), # 2) Un certificato valido sia in atto, # 3) Solo client compatibili accederanno. TLS 2 [...] |
Per non consentire affatto TLS (solo FTP), imposta TLS su 0:
| [...] # Questa opzione può accettare tre valori : # 0 : disabilita il livello di crittografia SSL/TLS (predefinito). # 1 : accetta sia sessioni tradizionali che crittografate. # 2 : rifiuta connessioni che non utilizzano meccanismi di sicurezza SSL/TLS, # comprese le sessioni anonime. # Non decommentare questo alla leggera. Assicurati che : # 1) Il tuo server sia stato compilato con supporto SSL/TLS (--with-tls), # 2) Un certificato valido sia in atto, # 3) Solo client compatibili accederanno. TLS 0 [...] |
Per utilizzare TLS, dobbiamo creare un certificato SSL. Lo creo in /etc/ssl/private/, quindi creo prima quella directory:
mkdir -p /etc/ssl/private/Dopo, possiamo generare il certificato SSL come segue:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pemNome del Paese (codice di 2 lettere) [AU]: <– Inserisci il Nome del tuo Paese (es. “DE”).
Nome dello Stato o della Provincia (nome completo) [Some-State]: <– Inserisci il Nome del tuo Stato o della Provincia.
Nome della Località (es. città) []: <– Inserisci la tua Città.
Nome dell’Organizzazione (es. azienda) [Internet Widgits Pty Ltd]: <– Inserisci il Nome della tua Organizzazione (es. il nome della tua azienda).
Nome dell’Unità Organizzativa (es. sezione) []: <– Inserisci il Nome della tua Unità Organizzativa (es. “Dipartimento IT”).
Nome Comune (es. IL TUO nome) []: <– Inserisci il Nome di Dominio Completo del sistema (es. “server1.example.com”).
Indirizzo Email []: <– Inserisci il tuo Indirizzo Email.
Cambia i permessi del certificato SSL:
chmod 600 /etc/ssl/private/pure-ftpd.pemInfine riavvia PureFTPd:
systemctl restart pure-ftpd.serviceQuesto è tutto. Ora puoi provare a connetterti utilizzando il tuo client FTP; tuttavia, dovresti configurare il tuo client FTP per utilizzare TLS - vedi il capitolo successivo su come farlo con FileZilla.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.