Kompletna instalacja serwera LAMP i 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:
- Aktualizacja bazy dostępnych pakietów i systemu
lub:
Kod: Zaznacz cały
apt-get update && apt-get 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
aptitude update && aptitude upgarde
Gdy naszym oczom pojawi się niebieski ekran, należy wybrać:Kod: Zaznacz cały
apt-get --yes install locales dpkg-reconfigure locales
Oczywiście standard ISO 8859-2 nie jest zabroniony, jednak z własnego doświadczenia polecam używać UTF-8.Kod: Zaznacz cały
pl_PL.UTF-8 UTF-8
Po zainstalowaniu i ustawieniu odpowiedniego języka, powinniśmy jeszcze raz aktualizować listę pakietów.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 update && apt-get upgarde
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 ssh openssh-server
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ć.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
Zacznijmy od skasowania mocno przestarzałego edytora vi.Następnie utwórzmy dowiązanie symboliczne, tak że jeżeli ktoś wpisze vi otworzy mu się vim.Kod: Zaznacz cały
rm /usr/bin/vi
Otwórzmy teraz plik:Kod: Zaznacz cały
ln -s /usr/bin/vim /usr/bin/vi
i dodajmy podstawowe opcje, znacznie ułatwiające pracę z edytorem.Kod: Zaznacz cały
vi /etc/vim/vimrc
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 plikuKod: 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
przy okazji kasując tą starszą.Kod: Zaznacz cały
vi /etc/hostname
By sprawdzić, czy dodaliśmy ją poprawnie trzeba wykonać polecenie:a następnie wydać polecenia:Kod: Zaznacz cały
/etc/init.d/hostname.sh start
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.Kod: Zaznacz cały
hostname hostname -f
- NTP i MySQL
Teraz pora na ntp (network time protocol), czyli protokół, który odpowiada za synchronizację czasu na naszej maszynie.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 ntp ntpdate
Podczas instalacji zostaniemy poproszeni, o podanie domyślnego hasła administratora (root-a), dla naszej stacji roboczej. My w celach testowych wpiszemy „1234”.Kod: Zaznacz cały
apt-get --yes install mysql-server
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:znajduje się linijka podobna do tej:Kod: Zaznacz cały
vi /etc/mysql/my.cnf
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 = 127.0.0.1
który pozwoli na łączenie się z bazą dodatkowo z adresu 123.123.123.123.Kod: Zaznacz cały
bind-address = 123.123.123.123
Trzecim wyjściem jest wstawienie na początku linii znaku #: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).Kod: Zaznacz cały
# bind-address = 127.0.0.1
- 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:I dodajemy wpis naszej domeny do pliku:Kod: Zaznacz cały
apt-get install bind9
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.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; }; };
Następnie tworzymy plik:I wypełniamy:Kod: Zaznacz cały
vi /etc/bind/db.serwer-testowy.pl
Teraz w firmie, w której wykupiłeś domenę powinieneś podać adresy dns: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
Kod: Zaznacz cały
ns1.serwer-testowy.pl i nasz_adres_ip ns2.serwer-testowy.pl i adres_ip_secondary_dns
- 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.Od tej pory będziemy mogli się logować do naszej bazy mysql, wpisując w wyszukiwarce: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
i podając login: rootKod: Zaznacz cały
http://serwer-testowy/phpmyadmin
hasło (w naszym wypadku): 1234
Po przejściu całego etapu instalacyjnego powinniśmy zrestartować serwer apache.Teraz powinniśmy skonfigurować nasz serwer.Kod: Zaznacz cały
/etc/init.d/apache 2 restart
Zacznijmy od PHP, w pliku:Zmieniamy linijkę register_globals z on na off.Kod: Zaznacz cały
vi /etc/php5/apache2/php.ini
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ć:Dodatkowo powyższym poleceniem włączyliśmy kilka dodatkowych opcji m.in. obsługę ssl.Kod: Zaznacz cały
a2enmod suexec rewrite ssl actions include
By nasz mod_rewrite zaczął działać musimy zmienić w plikui zresetować serwer apacheKod: Zaznacz cały
vi /etc/apache2/sites-enabled/000-default AllowOverride z none na all, dla wpisów dotyczących /var/www
Gdybyśmy chcieli, by każdy użytkownik serwera, miał własną stronę www. Musimy uruchomić moduł:Kod: Zaznacz cały
/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.Kod: Zaznacz cały
a2enmod userdir /etc/init.d/apache2 restart
By odwołać się do strony użytkownika, należy wpisać w przeglądarce:Co jeżeli chcielibyśmy, aby nasz użytkownik był widoczny jako:Kod: Zaznacz cały
serwer-testowy.pl~/użytkownik
Należy teraz edytować:Kod: Zaznacz cały
użytkownik.serwer-testowy.pl
i dodać:Kod: Zaznacz cały
vi /etc/apache2/sited-enabled/000-default
a następnie wpisać:Kod: Zaznacz cały
</VirtualHost> <VirtualHost *:80> DocumentRoot /home/user ServerName user.serwer-testowy.pl </VirtualHost>
Kod: Zaznacz cały
/etc/init.d/apache2 reload
- 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.Następnie należy rozpakować plik:Kod: Zaznacz cały
wget [url]http://ivn.cl/files/source/mod_bw-0.8.tgz[/url]
Przechodzimy do katalogu mod_bw-0.8Kod: Zaznacz cały
tar xvzf mod_bw-0.8
By wykonać następne polecenie należy zainstalować pakiet:Teraz wykonujemy polecenie:Kod: Zaznacz cały
apt-get --yes install apache2-threaded-dev
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
apxs2 -i -a -c mod_bw.c a2enmod bw /etc/init.d/apache2 restart
dodać:Kod: Zaznacz cały
vi /etc/apache2/apache2.conf
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.Kod: Zaznacz cały
BandWidthModule On BandWidth all 4000 MinBandWidth all -1 ForceBandWidthModule On
- 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: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.Kod: Zaznacz cały
apt-get --yes install proftpd
- 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
Teraz musimy zrestartować naszego postfiksa:Kod: Zaznacz cały
apt-get install --yes postfix postfix-tls sasl2-bin libsasl2-modules popa3d
Teraz instalujemy dovecota:Kod: Zaznacz cały
/etc/init.d/postfix restart
By skonfigurować dovecota, należy otworzyć plik:Kod: Zaznacz cały
apt-get install --yes dovecot-imapd dovecot-pop3d dovecot-common
i zmienić oryginalne wartości na podane poniżej:Kod: Zaznacz cały
vi /etc/dovecot/dovecot.conf
Następnie musimy zresetować usługę dovecot: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 } } }
Do pliku:Kod: Zaznacz cały
/etc/init.d/dovecot restart
Dodajemy:Kod: Zaznacz cały
vi /etc/postfix/main.cf
Teraz jeszcze raz zrestartujmy usługi: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
Czas na squirrelmail:Kod: Zaznacz cały
/etc/init.d/saslauthd restart /etc/init.d/postfix restart /etc/init.d/dovecot restart
Tworzymy dowiązanie symboliczne, byśmy mogli mieć dostęp do poczty przez adres serwer-testowy.pl/mailKod: Zaznacz cały
apt-get --yes install squirrelmail
Kod: Zaznacz cały
ln -s /usr/share/squirrelmail/ /var/www/mail