
Poradnik przedstawia instalację i podstawową konfigurację działającego serwera www i e-mail.
Zainstalowane zostaną pakiety: Nginx, php5-fpm, MySQL, Apache2, Dovecot, Postfix, Roundcube, Amavis, ClamAV, Spamassassin i parę innych ;).
Instalowane i testowane na Ubuntu 11.10 (Oneiric) oraz Debian 6 (Squeeze)
Do dzieła!
Wszystko co robimy pod konsolą robimy z poziomu Administratora (root’a)!
1. Aktualizacja systemu i ewentualny reboot
1.1. Ubuntu
aptitude update
aptitude upgrade
reboot
1.2. Debian
– dodajemy repozytoria z PHP (więcej info)
Edytujemy plik /etc/apt/sources.list i dodajemy:
deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all
Następnie pobieramy klucze GPG
wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add –
No i aktualizujemy jak w Ubuntu :).
2. Pobranie i instalacja niezbędnych narzędzi (jeśli ich nie ma)
aptitude install bzip2 nano
nano – można zastąpić swoim ulubionym edytorem tekstu (np. vi, vim, etc.)
3. Pobieramy paczkę iRedMail i ją rozpakowujemy
W czasie pisania tego HowTo najnowsza wersja to 0.7.4
cd /root
wget http://iredmail.googlecode.com/files/iRedMail-0.7.4.tar.bz2
tar jxvf iRedMail-0.7.4.tar.bz2
4. Instalujemy iRedMail
cd iRedMail-0.7.4/
bash iRedMail.sh
4.1. Potwierdzamy
4.2. Ustawiamy katalog przechowywania wiadomości e-mail
4.3. Wybieramy, za „czyim” pośrednictwem będziemy trzymać ustawienia, użytkowników, hasła skrzynek pocztowych, administratorów, itp.
Ja wybrałem MySQL.
W poprzednim poradniku zastosowałem openLDAP.
4.4. Ustawiamy hasło administratora MySQL.
Ważne żeby dobrze wpisać za pierwszym razem bo skrypt nie przewiduje potwierdzenia!
4.5. Ustawiamy swoją „pierwszą wirtualną domenę”.
Powinna to być „normalna” domena, i nie może być to nazwa hosta!
4.6. Ustawiamy hasło dla administratora poczty -> postmaster@domena.pl
4.7. Ustawiamy hasło dla pierwszego użytkownika poczty -> www@domena.pl
4.8. Wybieramy składniki jakie chcemy zainstalować
Wszystko oprócz Awstats POWINNO być zaznaczone
4.9. Wybieramy język dla webmail’a (Roundcube)
4.10. Wstępna konfiguracja zakończona, teraz czas na instalację.
Jeśli jesteśmy pewni poprawności wpisanych danych wciskamy klawisz Y i Enter 🙂
4.11. Kończenie instalacji
Po jakimś czasie (zależy od szybkości łącza i sprzętu 😉 ) odpowiadamy na 3 pytania (po kolei):
1. Czy chcesz użyć reguł firewalla dostarczonych przez iRedMail? (jak chcecie 🙂 )
2. Zrestartować firewalla? (n)
3. Włączyć postfixa? (n)
4.12. Restart systemu 🙂
reboot
5. Zmiana portów Apache2
Skrypt iRedMail zainstalował nam Apache2. Musimy w takim razie zmienić mu port na jakim ma nasłuchiwać.
Edytujemy dwa pliki i zmieniamy port 80 na jakiś inny (np. 8080)
nano /etc/apache2/ports.conf
nano /etc/apache2/sites-available/default
5.1. Restart Apache
/etc/init.d/apache2 restart
5.2. Regułki iptables
Jeśli zainstalowaliśmy firewalla trzeba odblokować porty. W tym celu edytujemy plik /etc/rc.local, który włącza się jako ostatni podczas odpalania systemu i dopisujemy w nim regułki iptables (wszystko co napiszemy musi być przed „exit 0”)
iptables -A INPUT -p tcp --dport 8080 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 8080 -m state --state NEW -j ACCEPT
6. Instalacja Nginx i PHP5-FPM
aptitude install nginx php5-fpm
7. Zmiana w konfiguracji PHP5-FPM adresu na którym ma nasłuchiwać skryptów
nano /etc/php5/fpm/pool.d/www.conf
Średnikujemy linijkę Listen i wpisujemy pod nią:
listen = /tmp/php5-fpm.sock
8. Konfiguracja VirtualHost dla Nginx
8.1. Usuwamy katalog /etc/nginx/sites-enabled , a w jego miejsce tworzymy dowiązanie symboliczne
cd /etc/nginx/
rm -rf sites-enabled
ln -s sites-available sites-enabled
8.2. Domyślny VirtualHost
Zmieniamy nazwę domyślnego/podstawowego Wirtualnego Hosta
cd sites-available
mv default 000.default
Następnie edytujemy 000.default i wpisujemy poniższe dane. Będzie to tzw. Catch-All VirtualHost (czyli wszystkie nieustawione domeny będą wskazywały na domyślną lokalizację stron www.
server {
listen 80;
server_name _;
root /var/www;
index index.php index.html;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location ~ /\.ht {
deny all;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
8.3. Tworzymy index.php
Przechodzimy do katalogu /var/www , usuwamy plik index.html i tworzymy index.php
cd /var/www
rm index.html
nano index.php
Wklepujemy:
<?php echo 'Working !!!'; ?>
Zapisujemy, zamykamy
8.4. Restart Nginx i PHP5-FPM
/etc/init.d/nginx restart
/etc/init.d/php5-fpm restart
Testujemy wchodząc przez przeglądarkę na adres hosta lub domeny i jeżeli naszym oczom ukaże się napis „Działa”, to wszystko jest w porządku 🙂
9. VirtualHost dla Roundcube
Tworzymy VirtualHost dla Roundcube. Dostęp do webmaila będzie przez adres http://poczta.domena.pl.
nano /etc/nginx/sites-available/01.poczta.domena.pl.vhost
server {
listen 80;
server_name poczta.piotrdyduch.pl;
root /usr/share/apache2/roundcubemail-0.7;
index index.php index.html;
location ~ /\.ht {
deny all;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
9.1. Restart Nginx
/etc/init.d/nginx restart
9.2. Teścik
Sprawdzamy czy działa, wchodząc przez przeglądarkę na w/w adres poczta.domena.pl. Jako nazwę użytkownika wpisujemy www@domena.pl, a hasło takie jak podaliśmy w konfiguracji iRedMail. Po poprawnym zalogowaniu powinniśmy mieć dwie wiadomości z powitaniem i wskazówkami od iRedMail’a.
10. Aliasy
Serwer www działa, poczta działa, teraz czas na dodawanie skrzynek pocztowych :). Żeby je dodać, najpierw musimy „zrobić” sobie dostęp do panelu iRedAdmin. Do zarządzania użytkownikami będziemy korzystać przy pomocy serwera Apache2. Tak więc musimy dopisać aliasy w już gotowych plikach w /etc/apache2/conf.d/.
10.1. Alias iRedAdmin
Edytujemy pliczek /etc/apache2/conf.d/iredadmin.conf i dopisujemy dwie linijki
nano /etc/apache2/conf.d/iredadmin.conf
Tak ma wyglądać konfiguracja:
WSGIScriptAlias /iredadmin /usr/share/apache2/iredadmin/iredadmin.py/
Alias /iredadmin/static /usr/share/apache2/iredadmin/static/
WSGISocketPrefix /var/run/wsgi
WSGIDaemonProcess iredadmin user=iredadmin threads=15
WSGIProcessGroup iredadmin
AddType text/html .py
Order allow,deny
Allow from all
10.2. Alias phpMyAdmin
Przy okazji utworzymy sobie alias do phpMyAdmin
nano /etc/apache2/conf.d/phpmyadmin.conf
Alias /phpmyadmin /usr/share/apache2/phpmyadmin
Options -Indexes
W Debianie ścieżka PMA to /usr/share/phpmyadmin
10.3. Restart Apache2
/etc/init.d/apache2 restart
10.4. Dodanie użytkowników poczty
Dodawanie skrzynek pocztowych odbywa się przez adres: http://domena.pl:8080/iredadmin . Jako login podajemy postmaster@domena.pl , a hasło jakie podaliśmy w konfiguracji. Po zalogowaniu dodajemy sobie użytkownika i następnie sprawdzamy pocztę wchodząc na adres http://poczta.domena.pl
11. Koniec 🙂
Podam jeszcze przykładowego VirtualHosta dla www.domena.pl wskazującego na katalog domowy użytkownika i skonfigurowanego pod WordPressa.
nano /etc/nginx/sites-available/01.www.piotrdyduch.pl.vhost
server {
listen 80;
server_name www.piotrdyduch.pl *.piotrdyduch.pl;
root /home/piotrek/public_html/www.piotrdyduch.pl;
if ($http_host != "www.piotrdyduch.pl") {
rewrite ^ http://www.piotrdyduch.pl$request_uri permanent;
}
index index.php index.html;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ /\.ht {
deny all;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ {
expires max;
log_not_found off;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Oczywiście musimy mieć stworzony w/w katalog i w podanej lokalizacji musi znajdować się pliczek index.php
mkdir /home/piotrek/public_html
mkdir /home/piotrek/public_html/www.piotrdyduch.pl/
nano /home/piotrek/public_html/www.piotrdyduch.pl/index.php
12. Przydatne linki
- http://www.howtoforge.com
- http://www.iredmail.com
- http://www.nginx.org
Mam pytanie, jakie jest użycie pamięci RAM przez taką konfigurację?? Mam wykupiony mały serwer (512MB)
Dlaczego nie można wszystkiego postawić na Apache? Po co dodatkowo instalować nginx?
Oczywiście, że można 🙂
A Nginx instaluje się z wielu powodów, jednymi z nich są szybkość działania i mniejsze zużycie serwera.
Jesli przenosi sie wszystko na nginx i php5-fpm to moglbyś opisać jak usunac potem apache? Rozumiem ze iRedMail instaluje apache automatycznie? czy mozna gdzies zaznaczyć zeby nie instalowal apache’a?
A czy jest może jakaś alternatywa DirectAdmin’a ale pod nginx-a? Tak, żeby móc przez jakiś panel dodawać domeny, sudomeny, konta pocztowe, konta FTP, edytować je itp.
ISPConfig