Kompletna instalacja serwera LAMP i MAIL

Archiwalne, stare wpisy FAQ i HowTo Użytkowników
t1234k
Posty: 7
Rejestracja: 19 lutego 2010, 22:47

Kompletna instalacja serwera LAMP i MAIL

Post autor: t1234k »

Witam wszystkich, którzy zdecydowali się kliknąć w ten post i przeczytać mój poradnik odnośnie instalacji i konfiguracji poszczególnych usług na wirtualnym serwerze. Mam zamiar poprowadzić jak za rączkę poprzez najczęstsze problemy spotykające młodych administratorów związanych z poprawnym uruchomieniem takich aplikacji jak serwer apache czy też serwer adresów e-mail.

Cały proces instalacji wymagać będzie uprawnień administratora, dlatego użytkownikiem, na którego konto powinieneś się zalogować powinien być root

Po zalogowaniu się pierwszy raz na nasz serwer wirtualny, powinniśmy bezzwłocznie aktualizować system, by to uczynić musimy wykonać polecenie:
  1. Aktualizacja bazy dostępnych pakietów i systemu

    Kod: Zaznacz cały

    apt-get update && apt-get upgarde
    lub:

    Kod: Zaznacz cały

    aptitude update && aptitude upgarde
    Na części serwerów dedykowanych (szczególnie tych nie polskich), pojawiają się błędy z polskimi czcionkami oraz językiem. Aby rozwiązać ten niezbyt trudny problem należy wykonać:

    Kod: Zaznacz cały

    apt-get --yes install locales
    dpkg-reconfigure locales
    Gdy naszym oczom pojawi się niebieski ekran, należy wybrać:

    Kod: Zaznacz cały

    pl_PL.UTF-8 UTF-8
    Oczywiście standard ISO 8859-2 nie jest zabroniony, jednak z własnego doświadczenia polecam używać UTF-8.

    Po zainstalowaniu i ustawieniu odpowiedniego języka, powinniśmy jeszcze raz aktualizować listę pakietów.

    Kod: Zaznacz cały

    apt-get update && apt-get upgarde
    Jeżeli przeprowadzasz instalację na zdalnej maszynie, nie musisz czytać do końca tego zdania. Jeżeli jednak instalujesz go w domowym zaciszu, a masz ochotę później zdalnie się na niego logować, powinieneś zainstalować również serwer ssh.

    Kod: Zaznacz cały

    apt-get --yes install ssh openssh-server
    Teraz powinniśmy zająć się bezpieczeństwem, i zainstalować często wymagany pakiet ssl. Dodatkowo zainstalujemy kilka innych przydatnych aplikacji.

    Kod: Zaznacz cały

    apt-get --yes install openssl 
    apt-get --yes install libtiff4 
    apt-get install --force-yes libwmf0.2-7
    apt-get --yes install vim-nox
    Jak możemy zauważyć, przed chwilą zainstalowaliśmy edytor vim, przez dalszą część kursu będę z niego właśnie korzystał. Jednak najpierw powinniśmy go odpowiednio skonfigurować.

    Zacznijmy od skasowania mocno przestarzałego edytora vi.

    Kod: Zaznacz cały

    rm /usr/bin/vi
    Następnie utwórzmy dowiązanie symboliczne, tak że jeżeli ktoś wpisze vi otworzy mu się vim.

    Kod: Zaznacz cały

    ln -s /usr/bin/vim /usr/bin/vi
    Otwórzmy teraz plik:

    Kod: Zaznacz cały

    vi /etc/vim/vimrc 
    i dodajmy podstawowe opcje, znacznie ułatwiające pracę z edytorem.

    Kod: Zaznacz cały

    syntax on
     #włącza kolorowanie składni
    set nu #włącza numerację wierszy 
    set expandtab
     #zamienia znak tabulacji na dwie spacje
    %retab 2
    
    set autoindent
     #po wciśnięciu enter-a, przeskakujemy do nowej linii z odpowiednim przesunięciem
    
    Powinniśmy teraz zmienić nazwę hosta dla naszej maszyny. Nie jest to wymagane, jednak zalecane. Załóżmy, że nasz serwer nosi nazwę serwer-testowy.pl, więc taką też nazwę powinniśmy dodać do pliku

    Kod: Zaznacz cały

    vi /etc/hostname
    przy okazji kasując tą starszą.

    By sprawdzić, czy dodaliśmy ją poprawnie trzeba wykonać polecenie:

    Kod: Zaznacz cały

    /etc/init.d/hostname.sh start
    a następnie wydać polecenia:

    Kod: Zaznacz cały

    hostname
    hostname -f
    Oba te polecenia powinny zwrócić taką samą nazwę (serwer-testowy.pl w naszym wypadku), jeżeli jednak tak się nie stało, spróbuj edytować plik /etc/hostname jeszcze raz.
  2. NTP i MySQL

    Teraz pora na ntp (network time protocol), czyli protokół, który odpowiada za synchronizację czasu na naszej maszynie.

    Kod: Zaznacz cały

    apt-get --yes install ntp ntpdate
    Teraz przyszła czas na coś konkretniejszego, a mianowicie na serwer mysql. By go zainstalować musimy wpisać polecenie:

    Kod: Zaznacz cały

    apt-get --yes install mysql-server
    Podczas instalacji zostaniemy poproszeni, o podanie domyślnego hasła administratora (root-a), dla naszej stacji roboczej. My w celach testowych wpiszemy „1234”.

    Teraz nadeszła pora, na drobną konfigurację (piszę drobną, gdyż nie będziemy zajmować się optymalizacją serwera, a jedynie jego instalacją – to opiszę w kolejnym artykule).

    W pliku:

    Kod: Zaznacz cały

    vi /etc/mysql/my.cnf
    znajduje się linijka podobna do tej:

    Kod: Zaznacz cały

    bind-address    = 127.0.0.1
    Oznacza ona, że do bazy mysql będziemy mogli się łączyć jedynie z określonego adresu ip (w naszym wypadku jest to adres loopback), możemy teraz to zostawić tak jak jest. Możemy dodać dodatkowy wpis np.:

    Kod: Zaznacz cały

    bind-address = 123.123.123.123
    który pozwoli na łączenie się z bazą dodatkowo z adresu 123.123.123.123.

    Trzecim wyjściem jest wstawienie na początku linii znaku #:

    Kod: Zaznacz cały

    # bind-address    = 127.0.0.1
    Dzięki czemu, do naszej bazy będzie mógł się podłączyć każdy z każdego adresu ip (raczej niezalecane, choć czasami niezbędne).
  3. DNS

    Teraz dns, osobiście odradzam z całego serca tworzenie (o ile się nie musi) własnego serwera DNS. Obecnie bind jest chyba najbardziej dziurawym oprogramowaniem, na które wychodzą nieprzerwanie exploity. Dużo lepiej do jakiegoś szybkiego DNS-a (np. na) podpiąć naszą domenę i przekierować wildcardy (korzystając z szybkich serwerów DNS, możemy w pewnym stopniu zabezpieczyć się przed zjawiskiem DNS spoofingu).

    Jednak jeżeli własny serwer DNS jest nam niezbędny instalujemy go poleceniem:

    Kod: Zaznacz cały

    apt-get install bind9
    I dodajemy wpis naszej domeny do pliku:

    Kod: Zaznacz cały

    vi /etc/bind/named.conf
    
    zone "serwer-testowy.pl" {
       type master; 
       file "/etc/bind/db.serwer-testowy.pl";  
       allow-transfer { 
          adres_ip_secondary_dns;
       };
    };
    
    Drugi serwer dns (secondary), powinniśmy umieścić na jakimś innym serwerze, gdyż trzymanie go na tym samym hoście mija się z jego założeniami.

    Następnie tworzymy plik:

    Kod: Zaznacz cały

    vi /etc/bind/db.serwer-testowy.pl
    I wypełniamy:

    Kod: Zaznacz cały

    $TTL 3600
    @	IN	SOA 	ns1.serwer-testowy.pl. ( 
    	2002070201
    	86400
    	3600
    	3600000
    	1209600
    	)
    
    	IN	NS		ns1.serwer-testowy.pl.	
    	IN	NS		ns2.serwer-testowy.pl.
    	IN	MX	5	mail.serwer-testowy.pl.
    
    	@	IN	A	nasz_adres_ip
    	www	IN	CNAME serwer-testowy.pl.
    	*	IN	CNAME serwer-testowy.pl.
    	ns1	IN	A	nasz_adres_ip
    	ns2	IN	A	 adres_ip_secondary_dns
    	
    
    Teraz w firmie, w której wykupiłeś domenę powinieneś podać adresy dns:

    Kod: Zaznacz cały

    ns1.serwer-testowy.pl i nasz_adres_ip
    ns2.serwer-testowy.pl i adres_ip_secondary_dns
  4. Apache2

    Kolejną rzeczą, którą chcielibyśmy zainstalować jest wyżej wspomniany serwer apache. Całą instalację wykonamy jednym ruchem ręki, wraz z wymaganymi innymi pakietami typu php i phpmyadmin.

    Kod: Zaznacz cały

    apt-get install --yes apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp phpmyadmin
    Od tej pory będziemy mogli się logować do naszej bazy mysql, wpisując w wyszukiwarce:

    Kod: Zaznacz cały

    http://serwer-testowy/phpmyadmin
    i podając login: root
    hasło (w naszym wypadku): 1234

    Po przejściu całego etapu instalacyjnego powinniśmy zrestartować serwer apache.

    Kod: Zaznacz cały

    /etc/init.d/apache 2 restart
    Teraz powinniśmy skonfigurować nasz serwer.

    Zacznijmy od PHP, w pliku:

    Kod: Zaznacz cały

    vi /etc/php5/apache2/php.ini
    Zmieniamy linijkę register_globals z on na off.

    Teraz wracając do samego serwera apache. Nasza strona internetowa obecnie znajduje się w pliku /var/www. By uruchomić dla serwera apache mod_rewrite należy wpisać:

    Kod: Zaznacz cały

    a2enmod suexec rewrite ssl actions include
    Dodatkowo powyższym poleceniem włączyliśmy kilka dodatkowych opcji m.in. obsługę ssl.

    By nasz mod_rewrite zaczął działać musimy zmienić w pliku

    Kod: Zaznacz cały

    vi /etc/apache2/sites-enabled/000-default 
    
    AllowOverride z none na all, dla wpisów dotyczących /var/www
    
    i zresetować serwer apache

    Kod: Zaznacz cały

    /etc/init.d/apache2 restart
    
    Gdybyśmy chcieli, by każdy użytkownik serwera, miał własną stronę www. Musimy uruchomić moduł:

    Kod: Zaznacz cały

    a2enmod userdir
    /etc/init.d/apache2 restart
    
    Od tej pory, każdy użytkownik, który będzie miał w swoim profilu katalog public_html (można to zmienić w pliku /etc/apache2/mods-enabled/userdir.conf), będzie mógł założyć własną stronę www.

    By odwołać się do strony użytkownika, należy wpisać w przeglądarce:

    Kod: Zaznacz cały

     serwer-testowy.pl~/użytkownik
    Co jeżeli chcielibyśmy, aby nasz użytkownik był widoczny jako:

    Kod: Zaznacz cały

    użytkownik.serwer-testowy.pl
    Należy teraz edytować:

    Kod: Zaznacz cały

    vi /etc/apache2/sited-enabled/000-default
    i dodać:

    Kod: Zaznacz cały

      </VirtualHost>
        
        <VirtualHost *:80>
        DocumentRoot /home/user
        ServerName user.serwer-testowy.pl
        </VirtualHost> 
    a następnie wpisać:

    Kod: Zaznacz cały

    /etc/init.d/apache2 reload
  5. Mod_bw

    Bardzo fajnym modułem jest mod_bw, który potrafi ustawić limity prędkości łącza dla poszczególnych użytkowników, może pozwolić nam to ograniczyć nieco, za dużo ściągających użytkowników.

    By działało dobrze na apache2, trzeba ściągnąć najnowszą wersję mod_bw.

    Kod: Zaznacz cały

    wget [url]http://ivn.cl/files/source/mod_bw-0.8.tgz[/url]
    
    Następnie należy rozpakować plik:

    Kod: Zaznacz cały

    tar xvzf mod_bw-0.8
    Przechodzimy do katalogu mod_bw-0.8

    By wykonać następne polecenie należy zainstalować pakiet:

    Kod: Zaznacz cały

    apt-get --yes install apache2-threaded-dev
    Teraz wykonujemy polecenie:

    Kod: Zaznacz cały

    apxs2 -i -a -c mod_bw.c
    a2enmod bw
    /etc/init.d/apache2 restart
    Od tej pory mamy już w pełni działający moduł bandwitchu (przy okazji zobaczyliście jak kompiluje się dodatkowe moduły dla apache2). By go uruchomić należy do pliku:

    Kod: Zaznacz cały

    vi /etc/apache2/apache2.conf
    dodać:

    Kod: Zaznacz cały

    BandWidthModule On
    
    BandWidth all 4000
    
    MinBandWidth all -1
    
    ForceBandWidthModule On
    Powyższy wpis ustawi limit dla wszystkich użytkowników na 40KB. Można tworzyć różne wariacje tych opcji, dodając ich do poszczególnych virtualhostów.
  6. FTP

    Jeżeli chcemy, aby nasi użytkownicy gwoli wyjątku mogli poza ssh logować się również za pomocą ftp, należy zainstalować serwer ftp:

    Kod: Zaznacz cały

    apt-get --yes install proftpd
    Od tej pory, każdy użytkownik będzie mógł się zalogować na swoje konto, używając dowolnego klienta ftp, podając dane: serwer-testowy.pl, użytkownik, jego hasło.
  7. Mail

    By zainstalować usługę mail, powinniśmy mieć przekierowaną wpisem MX w DNS, nasz adres e-mail. Gdy już to zrobimy, będziemy musieli zainstalować odpowiednie pakiety:

    Kod: Zaznacz cały

    apt-get install --yes postfix postfix-doc libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl getmail4

    Kod: Zaznacz cały

    apt-get install --yes postfix postfix-tls sasl2-bin libsasl2-modules popa3d
    
    Teraz musimy zrestartować naszego postfiksa:

    Kod: Zaznacz cały

    /etc/init.d/postfix restart
    Teraz instalujemy dovecota:

    Kod: Zaznacz cały

    apt-get install --yes dovecot-imapd dovecot-pop3d dovecot-common
    By skonfigurować dovecota, należy otworzyć plik:

    Kod: Zaznacz cały

    vi /etc/dovecot/dovecot.conf
    i zmienić oryginalne wartości na podane poniżej:

    Kod: Zaznacz cały

    protocols = imap pop3
    disable_plaintext_auth = no
    
    auth default {
      mechanisms = plain login
      passdb pam {
      }
      userdb passwd {
      }
      socket listen {
        client {
          path = /var/spool/postfix/private/auth
          mode = 0660
          user = postfix
          group = postfix
        }
      }
    
    }
    
    Następnie musimy zresetować usługę dovecot:

    Kod: Zaznacz cały

    /etc/init.d/dovecot restart
    Do pliku:

    Kod: Zaznacz cały

    vi /etc/postfix/main.cf
    Dodajemy:

    Kod: Zaznacz cały

    smtpd_sasl_auth_enable = yes
    smtpd_sasl_local_domain = mail.serwer-testowy.pl
    smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
    smtpd_sasl_security_options = noanonymous
    Teraz jeszcze raz zrestartujmy usługi:

    Kod: Zaznacz cały

    /etc/init.d/saslauthd restart
    /etc/init.d/postfix restart
    /etc/init.d/dovecot restart
    
    Czas na squirrelmail:

    Kod: Zaznacz cały

    apt-get --yes install squirrelmail
    Tworzymy dowiązanie symboliczne, byśmy mogli mieć dostęp do poczty przez adres serwer-testowy.pl/mail

    Kod: Zaznacz cały

    ln -s /usr/share/squirrelmail/ /var/www/mail
Zablokowany