LM17.3 a webserver

webKonečně se mi splnil můj dávný sen. Po několika desetiletí trvajících jízdách hromadnou dopravou, zatoužil jsem po vyslechnutí nějaké smysluplnější diskuze než kdo co napsal na fejsbůk a že Jarda koupil maso a Božena z toho upekla oběd. Chtěl jsem nějaký rozhovor o historii ku příkladu a hle neznámí studentíci poskytli mi onu rozkoš 🙂 Bavili se o tom, jak je zajímavé, že si lidé pamatují spíše prohrané bitvy než ty vyhrané. Ovšem z jejich příkladu už jsem moc moudrý nebyl. Mezi prohrané bitvy uvedli Stalingrad, což pravda, že asi byli čechoslováci co bojovali na německé straně, ale moc bych se tím nechlubil. Jako vítěznou bitvu uvedli bitvu u Kresčaku, kde prý na straně vítězů byl nějaký Přemysl Otakar, jaký už neupřesnili. Že by angličané nesli do bitvy jeho posmrtné ostatky? 😀 Tak nevím, ale možná byla hodnotnější ta informace, že si Monika změnila status.

Každopádně je zajímavé jak se ve sportovních pořadech vyskytl nový termín o nějakém přepisování historie. Vždycky to bylo přece zapsání do historie a byl jsem přesvědčen o tom, že historie se už nedá měnit? Jo něco jiného je upřesnění, chápu, že dřív nebylo video a štěnice, aby se to dalo zaznamenat 🙂 To bychom pak například mohli vyslechnouti: „Václave, bratře, s německými pány kupčíš, naši zem církvi prodáváš a lid náš trpí“ a tu v odpověď ozve se Václav: „Nyní nemohu se ti bratře věnovati, neb musím rozjímati ku spáse duše“. Nu a tak jen bratr bratru učiniv mu po vůli, pamětliv bohulibému přání jeho, aby mohl rozjímati na věky věků 🙂

Nu a tak jsem i já zapátral v historii svých článků a jsa objeviv jak jsem kdysi před léty začal s krátkým článkem o XAMPP pro linux. Jenže u XAMPPu mi začlo časem vadit, že je člověk omezený jen na ty předinstalované komponenty (verze PHP, Apache atd.) Proto následně vznikla 3-dílná série o virtuálním webserveru, kde už byl server virtualizovaný což je výhoda proti případnému hacknutí. Prostě si stačí zálohovat celý server a v případě problému jen smazat a nakopírovat zálohu. To už bylo docela fajné, ale zase šlo jen o instalaci z *.DEB balíčků, takže bylo potřeba čekat až někdo balíčky vytvoří. Také bylo složitější nainstalovat například nějakou konkrétní verzi PHP, třeba starší nebo unstable 🙂 Dnes si tedy konečně ukážeme jak provést instalaci přímo ze zdrojů. Předpokladem je tedy již nainstalovaný LM17.3 ve virtuálu viz 1. díl virtuálního webserveru po nastavení routeru (kromě portu 80 je potřeba přidat i 443).

Takže se můžeme pustit do přepsání historie aktualizací systému:

Příkaz terminálu:
sudo apt-get update
sudo apt-get dist-upgrade

Dále si zaktualizujeme GCC na verzi 4.9

Příkaz terminálu:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9
sudo update-alternatives --remove-all gcc
sudo update-alternatives --remove-all g++
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
sudo update-alternatives --config gcc
sudo update-alternatives --config g++

Nainstalujeme nejnovější jádro, dle návodu zde a povedeme restart. Po naběhnutí systému s novým jádrem provedeme instalaci potřebných knihoven:

Příkaz terminálu:
sudo apt-get install build-essential zlibc zlib1g zlib1g-dev libxml2-dev libexpat1-dev libgdbm-dev libgdbm3 libjpeg-dev libpng12-dev libfreetype6-dev libxslt1-dev curl libcurl3 libcurl3-dev gedit libssl-dev

Stáhneme si aktuální (námi požadovanou) verzi OPENSSL ze stránek:
https://www.openssl.org/source/
Rozbalíme do adresáře v něm otevřeme terminál a provedeme instalaci:

Příkaz terminálu:
./config --prefix=/usr/local/openssl/
make
sudo make install

Podobně nainstalujeme i APR a APR utility, stažením souborů apr-X.X.X.tar.gz a apr-util-X.X.X.tar.gz
https://apr.apache.org/download.cgi

Instalace apr-X.X.X.tar.gz (opět rozbalit a v adresáři otevřít terminál):

Příkaz terminálu:
./configure
make
sudo make install

Instalace apr-util-X.X.X.tar.gz (opět rozbalit a v adresáři otevřít terminál):

Příkaz terminálu:
./configure --with-apr=/usr/local/apr/
make
sudo make install

Nakonec ještě nainstalujeme PCRE, použijte verzi PCRE, verze PCRE2 mi nějak nefungovala 🙂
http://pcre.org/

Stáhneme pcre-8.XX.tar.gz a instalujeme podobně jako APR:

Příkaz terminálu:
./configure --prefix=/usr/local/pcre
make
sudo make install

Instalace Apache2
http://httpd.apache.org/download.cgi

Konečně máme všechny komponenty a můžeme nainstalovat Apache:

Příkaz terminálu:
./configure --prefix=/u01/apache2 --exec-prefix=/u01/apache2 --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/u01/apache2/conf --enable-so --enable-dav --enable-dav-fs --enable-dav-lock --enable-deflate --enable-unique-id --enable-mods-static=most --enable-reqtimeout --with-mpm=prefork --with-apr=/usr/local/apr/ --with-pcre=/usr/local/pcre/ --includedir=/usr/include/apache --libexecdir=/usr/lib/apache --datadir=/u01/www --localstatedir=/u01 --enable-logio --enable-ssl --enable-rewrite --enable-proxy --enable-expires --with-ssl=/usr/local/openssl --enable-headers
make
sudo make install

Nejprve přejmenujeme adresář htdocs (kam se ukládají data serveru) na html, tzn. z /u01/www/htdocs na /u01/www/html. Toto není nijak důležité jen se mi prostě složka html líbí víc. Každý má přece právo na drobné úchylky :-D. Cestu ještě musíme změnit v konfiguračním souboru, který otevřeme příkazem:

Příkaz terminálu:
sudo gedit /u01/apache2/conf/httpd.conf

Vyhledáme a změníme položku DocumentRoot a Directory (uvozovky zůstanou horní rovné ty se nemění jen přepíšeme htdocs na html):

DocumentRoot „/u01/www/html“
<Directory „/u01/www/html“>

Na konec souboru pak přidáme:

ServerName localhost

Uložíme a zavřeme.

Pro používání SSL je potřeba vygenerovat certifikát, to provedeme následovně:

Příkaz terminálu:
sudo mkdir -p /u01/apache2/ssl
sudo /usr/local/openssl/bin/openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /u01/apache2/ssl/server.key -out /u01/apache2/ssl/server.crt

V adresáři /u01/apache2/ssl se nám vytvořily 2 soubory. Pro jejich zaktivnění otevřeme konfigurační soubor pro SSL:

Příkaz terminálu:
sudo gedit /u01/apache2/conf/extra/httpd-ssl.conf

A nastavíme správné cesty na vygenerované soubory a opět změníme položku DocumentRoot na /u01/www/html. Následně povolíme includování otevřením konfiguračního souboru:

Příkaz terminálu:
sudo gedit /u01/apache2/conf/httpd.conf

a odstraněním znaku # u položky:

Include conf/extra/httpd-ssl.conf

Pro zapnutí módu rewrite vyhledáme položku Directory a změníme atribut AllowOverride na All:

<Directory „/u01/www/html“>
….
AllowOverride All
….

Nyní můžeme spustit Apache příkazem:

Příkaz terminálu:
sudo apachectl start

Instalace Mysql
https://dev.mysql.com/downloads/mysql/

Nejprve si vytvoříme uživatele a nastavíme oprávnění:

Příkaz terminálu:
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

Pak stáhneme z výše uvedených stránek aktuální verzi Mysql databáze a vytvoříme si pro ni adresář:

Příkaz terminálu:
sudo mkdir /usr/local/mysql

Rozbalíme do něj stažený soubor a provedeme konfiguraci:

Příkaz terminálu:
cd /usr/local/mysql
sudo mkdir mysql-files
sudo chmod 770 mysql-files
sudo chown -R mysql .
sudo chgrp -R mysql .
sudo bin/mysqld --initialize --user=mysql
sudo bin/mysql_ssl_rsa_setup
sudo chown -R root
sudo chown -R mysql data mysql-files
sudo cp support-files/mysql.server /etc/init.d/mysql.server
sudo bin/mysqld_safe --user=mysql

Poslední příkaz nám provedl spuštění databáze. Nyní je třeba provést změnu hesla pro uživatele root:

Příkaz terminálu:
sudo /usr/local/mysql/bin/mysql -u root -p

A provedeme příkaz:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('heslo');

Nainstalujeme Mcrypt
http://sourceforge.net/projects/mcrypt/files/Libmcrypt/

Příkaz terminálu:
./configure
make
sudo make install

Instalace PHP
http://php.net/downloads.php

Provedeme stažení libovolné verze PHP:  php-X.X.X, opět rozbalíme do adresáře a otevřeme v něm terminál a provedeme následující příkazy, jen nezapomeňte nahradit php-X.X.X Vaší zvolenou verzí:

Příkaz terminálu:
./configure --prefix=/u01/apache2/php-X.X.X --with-config-file-path=/u01/apache2/php --with-apxs2 --disable-ipv6 --with-zlib=shared --with-curl --enable-exif --enable-ftp --enable-calendar --with-gd=shared --enable-gd-native-ttf --with-gd --with-gettext --with-jpeg-dir=/usr --with-freetype-dir=/usr --with-gettext=shared --enable-mbstring=all --enable-mbregex --with-mcrypt=shared --with-mhash=shared --with-mysql=mysqlnd --enable-soap --with-sqlite3=shared --with-pdo-sqlite=shared --with-xsl=shared --enable-zip --with-pdo-mysql --with-mysqli=mysqlnd --enable-bcmath --with-openssl --with-openssl-dir=/usr/local/openssl/bin --enable-opcache
make
make tests
sudo make install
sudo libtool --finish /u01/apache2/php-X.X.X/lib

Dále je potřeba nakopírovat soubor php.ini-production ze zdroje do /u01/apache2/php/php.ini a nastavit časové pásmo:

Příkaz terminálu:
sudo gedit /u01/apache2/php/php.ini

A nastavíme:

date.timezone = "Europe/Prague" 

Dále vytvořit soubor httpd-php.conf:

Příkaz terminálu:
sudo gedit /u01/apache2/conf/extra/httpd-php.conf

a zapsat do něj následující hlavičky:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Po uložení, je ještě potřeba zeditovat httpd.conf:

Příkaz terminálu:
sudo gedit /u01/apache2/conf/httpd.conf

A přidat následující řádek:

Include conf/extra/httpd-php.conf

a přidat k index.html i index.php:

<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

Některé redakční systémy např. Drupal vyžadují zaplou opcache to provedeme editací souboru php.ini:

Příkaz terminálu:
sudo gedit /u01/apache2/php/php.ini

a přidáním řádku:

zend_extension=/u01/apache2/php-X.X.X/lib/php/extensions/no-debug-non-zts-20121212/opcache.so

Provedeme restart Apache:

Příkaz terminálu:
sudo apachectl restart

Následně si nainstalujeme i phpmyadmina, stažením ze stránek https://www.phpmyadmin.net/ a rozbalením do adresáře /u01/www/html/phpmyadmin. Pro spouštění phpmyadmin pouze v SSL módu přidáme na konec konfiguračního souboru config.inc.php následující řádek:

$cfg['ForceSSL'] = true;

Nastavení virtuálních hostů

Pokud si budeme chtít vytvořit více domén na webserveru, použijeme tzv. virtualhost. Pokud tedy náš server má IP 10.0.0.39 a chceme si vytvořit 2 lokální domény linuxmint.com a linux-mint-czech.cz s obsahem v adresářích /u01/www/html/linuxmint.com a /u01/www/html/linux-mint-czech.cz, nejprve si zeditujeme soubor httpd-vhosts.conf (port 80):

Příkaz terminálu:
sudo gedit /u01/apache2/conf/extra/httpd-vhosts.conf

a přidáme záznam pro každou doménu zvlášť (všechny uvozovky musí být rovné a horní):

<VirtualHost *:80>
ServerAdmin webmaster@linuxmint.com
DocumentRoot „/u01/www/html/linuxmint.com“
ServerName linuxmint.com
ServerAlias www.linuxmint.com
ErrorLog „/u01/logs/linuxmint.com-error_log“
CustomLog „/u01/logs/linuxmint.com-access_log“ common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@linux-mint-czech.cz
DocumentRoot „/u01/www/html/linux-mint-czech.cz“
ServerName linux-mint-czech.cz
ServerAlias www.linux-mint-czech.cz
ErrorLog „/u01/logs/linux-mint-czech.cz-error_log“
CustomLog „/u01/logs/linux-mint-czech.cz-access_log“ common
</VirtualHost>

Uložíme a otevřeme konfigurační soubor httpd.conf:

Příkaz terminálu:
sudo gedit /u01/apache2/conf/httpd.conf

Zaktivníme řádek s Include Virtual hosts (odstraněním znaku #) a uložíme. Do konfiguračního souboru zapíšeme pro domény IP našeho serveru:

Příkaz terminálu:
sudo gedit /etc/hosts
10.0.0.39    linuxmint.com
10.0.0.39    linux-mint-czech.cz

Pro zprovoznění domén i pro SSL (port 443) zeditujeme soubor httpd-ssl.conf:

Příkaz terminálu:
sudo gedit /u01/apache2/conf/extra/httpd-ssl.conf

Opět musíme zapsat každou doménu zvlášť (všechny uvozovky musí být rovné a horní):

<VirtualHost *:443>
DocumentRoot „/u01/www/html/linuxmint.com“
ServerName linuxmint.com:443
ServerAlias www.linuxmint.com:443
ServerAdmin webmaster@linuxmint.com
ErrorLog „/u01/logs/linuxmint.com_error_log“
TransferLog „/u01/logs/linuxmint.com_access_log“

SSLEngine on
SSLCertificateFile „/u01/apache2/ssl/server.crt“
SSLCertificateKeyFile „/u01/apache2/ssl/server.key“

<FilesMatch „\.(cgi|shtml|phtml|php)$“>
SSLOptions +StdEnvVars
</FilesMatch>
<Directory „/u01/www/cgi-bin“>
SSLOptions +StdEnvVars
</Directory>

BrowserMatch „MSIE [2-5]“ \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

CustomLog „/u01/logs/ssl_request_log“ \
„%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \“%r\“ %b“
</VirtualHost>

<VirtualHost *:443>
DocumentRoot „/u01/www/html/linux-mint-czech.cz“
ServerName linux-mint-czech.cz:443
ServerAlias www.linux-mint-czech.cz:443
ServerAdmin webmaster@linux-mint-czech.cz
ErrorLog „/u01/logs/linux-mint-czech.cz_error_log“
TransferLog „/u01/logs/linux-mint-czech.cz_access_log“

SSLEngine on
SSLCertificateFile „/u01/apache2/ssl/server.crt“
SSLCertificateKeyFile „/u01/apache2/ssl/server.key“

<FilesMatch „\.(cgi|shtml|phtml|php)$“>
SSLOptions +StdEnvVars
</FilesMatch>
<Directory „/u01/www/cgi-bin“>
SSLOptions +StdEnvVars
</Directory>

BrowserMatch „MSIE [2-5]“ \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

CustomLog „/u01/logs/ssl_request_log“ \
„%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \“%r\“ %b“
</VirtualHost>

Uložíme a provedeme restart Apache:

Příkaz terminálu:
sudo apachectl restart

Jako bonus si nastavíme automatické spouštění Apache i Mysql databáze při spuštění webserveru:

Příkaz terminálu:
sudo gedit /etc/rc.local

a před exit 0 zapíšeme následující řádek a uložíme (před slovem user jsou dvě pomlčky za sebou, ten wordpress mi buď změní & na zástupnej znak nebo upraví pomlčky o uvozovkách ani nemluvím je to začarovanej sudoběžník 😀 ):

apachectl start & /usr/local/mysql/bin/mysqld_safe –user=mysql
exit 0

Tak to je dnes asi tak všechno. „Jak prosté Watsone“ 😀
Ještě malý TIP. Pokud chcete mít na úvodní stránce serveru (http://localhost) přihlášení do phpadmina přidejte si do souboru /u01/apache2/conf/extra/httpd-vhosts.conf další vhost:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot „/u01/www/html/phpmyadmin“
ServerName localhost
ErrorLog „/u01/logs/localhost-error_log“
CustomLog „/u01/logs/localhost-access_log“ common
</VirtualHost>

Pro https://localhost je potřeba přidat další záznam do /u01/apache2/conf/extra/httpd-ssl.conf. Nezapomeňte po každé úpravě provést restart Apache.

Štítky , , , , , , , , , , , , , , , , .Záložka pro permanentní odkaz.

Komentáře jsou uzavřeny.