Jak na vlastní linuxový vývojový server pod Windows – nově a lépe

Dlouhou dobu používám při vývoji virtuální Ubuntu server, ve kterém mám nainstalované všechny databáze a programy, které nechci mít standardně v instalaci Windows na notebooku. Už delší dobu jsem chtěl do serveru přesunou i webový server a testovací SMTP server, který neodesílá emaily, ale ukládá je do souboru a přitom nepřijít o komfort pracovat z prostředí Windows. Jak se zadařilo popíšu níže.

Původně jsem chtěl zůstat u Ubuntu Serveru, ale nakonec jsem se rozhodl na novém serveru použít Debian. Bylo to hlavně kvůli tomu, abych měl na vývoj systém, u kterého je velká pravděpodobnost, že poběží na i na serveru s ostrou verzí aplikace. Starší verze softwaru, který se v Debianích balíčcích vyskytuje je možné nahradit aktuálnějšími verzemi z dotdeb.org balíčků.

A co se tedy máme nově vytvořeno?

  • server se systémem Debian 7.1.0 Wheezy 32bitů přístupný přes SSH bez hesla
  • disky rozdělené tak, že není problém spouštět různé servery se stejným datovým a swap diskem (viz. tipy a triky)
  • PHP 5.4, Apache 2.2 s PHP
  • MySQL 5.5
  • PostgreSQL 9.1
  • Memcache, Redis a ElasticSearch
  • testovací SMTP server
  • nastavené sdílení mezi Windows a Debianem

Všechny části jsou volitelné, a pokud některou z nich nebudete potřebovat, instalovat si ji na vlastní server nemusíte. S novou verzí serveru jsem upravil také utilitku Devel79 Tray, která se stará o spouštění různých serverů, monitoring nových emailů a připojení na SSH konzoli serveru.

Stejně jako v prvním návodu i zde bych rád upozornil, že nejsem žádný linux guru. Všechny postupy jsou vygooglené a nějak pospojované dohromady. Něco možná dělám nelogicky, zbytečně složitě, ale jako celek to funguje. Takže pokud tento článek bude číst nějaký odborník na linux, prosím o shovívavost a připadnou poznámku v komentářích. Děkuji…

Obsah

  1. Příprava virtuálního serveru
  2. Instalace Debianu
  3. Základní nastavení
  4. Nastavení sítě
  5. Sudo bez hesla
  6. Nastavení sdílení s Windows
  7. Instalace OpenSSH serveru a nastavení přihlášení s certifikátem bez hesla
  8. Přidání dotdeb balíčků
  9. Instalace PHP
  10. Instalace a nastavení Apache s PHP
  11. Instalace MySQL
  12. Instalace PostgreSQL
  13. Instalace Memcached
  14. Instalace Redis
  15. Instalace ElasticSearch
  16. Vývojový SMTP server
  17. BASH skripty pro zálohování o obnovu souborů
  18. Závěr

  19. Doporučené nastavení, upgrade a tipy a triky k vašemu virtuálnímu serveru

  20. Úpravy a novinky v návodu

Příprava virtuálního serveru

Nejprve musíme ve Windows nainstalovat samotný VirtualBox (for Windows hosts). Ten stáhneme z jeho oficiálních stránek https://www.virtualbox.org/wiki/Downloads. Při instalaci je potřeba nainstalovat i součást VirtualBox Networking – VirtualBox Host-Only Networking. Aktuální verze v době psaní článku je 4.2.16.

Jak jsem psal v úvodu, jako server jsem místo Ubuntu Serveru nakonec vybral Debian ve 32bitová edici. Instalační ISO obraz se síťovou instalací, který budeme potřebovat, stáhneme na adrese http://cdimage.debian.org/debian-cd/7.1.0/i386/iso-cd/debian-7.1.0-i386-netinst.iso.

Nyní můžeme spustit VirtualBox a vybráním menu Machine – New spustíme průvodce, který založí náš virtuální server. Postupně v průvodci zadáme následující parametry:

  • název serveru Name:, všude budu používat devel79
  • jako Type: nastavíme Linux a Version: dáme Debian
  • klikneme na Next

vb-img01

    • Memory size: nastavíme minimálně na 1024MB
    • klikneme na Next

vb-img02

  • vybereme Create a virtual hard drive now
  • klikneme na Create

vb-img03

  • Hard drive file type vybereme VDI (VirtualBox Disk Image)
  • klikneme na Next

vb-img04

  • Storage on physical hard drive nastaveníme na Fixed size, získáme tím o maličko lepší výkon při IO operacích – Next
  • klikneme na Next

vb-img05

  • Ve File location and size necháme název disku na devel79 a velikost by nám měla bohatě stačit 3,00 GB
  • klikneme na Create

vb-img06
Vybereme náš nový virtuální server, klikneme na něj pravým tlačítkem a vybereme Settings…. Virtuální server upravíme takto:

Karta General

Na záložce Advanced odškrtneme Remember Runtime Changes u Removable Media: a to samé pro Show in Fullscreen/Seamless u Mini Toolbar. Na záložce Description můžeme zadat nějaký popis našeho serveru.
vb-img07

Karta System

Na záložce Motherboard nastavíme:

  • Pořadí bootování Boot Order:: 1) CD-ROM 2) Hard Disk
  • pokud máme vícejádrový procesor a budeme chtít našemu serveru povolit používat více jader, zaškrtneme Enable IO APIC
  • odškrtneme možnost Enable absolute poiting device – to je kvůli tomu, že nebudeme potřebovat USB

vb-img08
Na záložce Processor můžeme nastavit využítí více jader nastavením položky Processor(s):.
vb-img09

Karta Display

Na záložce Video nastavíme Video Memory: na minimum 9 MB.
vb-img10

Karta Storage
  • odebereme IDE řadič (Controller: IDE), klikneme na něj a stiskneme klávesu Delete
  • u SATA řadiče (Controller: SATA) přidáme nový pevný disk pro swap – klikneme na něj pravým tlačítkem a dáme Add CD/DVD Device – klikneme na Choose disk a vybereme ISO soubor s instalací Debianu
  • jako Hard drive file type vybereme VDI (VirtualBox Disk Image)
    vb4
  • Storage on physical hard drive vybereme Fixed size
    vb5
  • název disku zadáme devel79_swap a velikost vybereme 1GB
    vb3
  • u SATA řadiče (Controller: SATA) přidáme nový pevný disk pro data – klikneme na něj pravým tlačítkem a dáme Add CD/DVD Device – klikneme na Choose disk a vybereme ISO soubor s instalací Debianu
  • jako Hard drive file type vybereme VDI (VirtualBox Disk Image)
    VB1
  • Storage on physical hard drive vybereme Fixed size
    VB2
  • název disku zadáme devel79_storage a zadáme velikost, která se nám zdá přiměřená pro naše data (u mě je to 100GB)
    vb6
  • u SATA řadiče (Controller: SATA) přidáme CD-ROM – klikneme na něj pravým tlačítkem a dáme Add Hadr Disk – klikneme na Create new disk

vb71″ class=“alignnone size-full wp-image-396″ />

Karta Audio

Odškrtneme Enable Audio, na serveru zvuk nepotřebujeme.
vb-img12

Karta Network

Na záložce Adapter 1 necháme zaškrtnuto Enable Network Adapter a Attached to: nastaveno na NAT. Rozklikneme Advanced a zkontrolujeme, že typ síťové karty (Adapter Type:) je Intel PRO/1000 MT Desktop (82540EM).
vb-img13
Klikneme na záložku Adapter 2, zaškrtneme Enable Network Adapter a Attached to: nastavíme na Host-only Adapter. Name necháme na VirtualBox Host-Only Ethernet Adapter (pokud tu tato možnost není přeskočte na chvilku sem). Rozklikneme Advanced a opět zkontrolujeme, že jako Adapter type: je vybrána Intel PRO/1000 MT Desktop (82540EM).
vb-img14

Karta USB

Odškrtneme Enable USB Controller.
vb-img15

Karta Shared Folders

Stiskneme Insert, vybereme cestu ke složce (Folder Path:), kde jsou soubory, které budeme chtít v rámci virtuálního serveru používat – hlavně soubory pro Apache a jako Folder Name: zadáme share.
vb-img16

Potvrdíme nastavení (OK) a kliknutím na Start spustíme virtuální server.
vb

Instalace Debianu

Po prvním spuštění serveru nabootuje Debian instalátor. Popíšu moje nastavení, které mi pro vývojový server přijde ideální, pokud máte jiné preference, upravte si je podle svého.

  1. vybereme Install
    01
  2. vybereme jazyk English – English
    02
  3. vybereme zemi Other – Europe – Czech republic
    03
    04
    05
  4. pro ni neexistuje základní nastavení, vybereme United States
    06
  5. nastavíme klávesnici American English
    07
  6. vybereme primární síťovou kartu – Primary network interface eth0: Intel Corporation 82540EM Gigabit Ethernet Controller
    08
  7. nastavení sítě, zadáme hostname, používám všude devel79
    09
  8. nastavení sítě, Domain name: necháme prázdné
    10
  9. heslo roota necháme prázdné, root se pak nebude moc přihlásit
    11
  10. potvrzení hesla roota necháme opět prázdné
    deb-12
  11. zadáme jméno uživatele, u mě Developer
    13
  12. zadáme username, kterým se budeme přihlašovat do systému, u všech služeb volím devel
    14
  13. zadáme heslo, zase všude volím, devel
    15
  14. a stejně tak i potvrzení hesla, devel
    16
  15. rozdělení disku Partition disk, jako Partitioning method vybereme Manual
    17
  16. vybereme disk SCSI1 (0,0,0) (sda) – 3.2 GB ATA VBOX HARDDISK
    18
  17. Create new empty partition table on this device? zvolíme Yes
    19
  18. nyní vybereme pri/log 3.2 GB FREE SPACE
    20
  19. vybereme Create a new partition
    21
  20. vybereme Continue
    22
  21. vybereme Primary
    23
  22. a na konec vybereme Done setting up the partition
    24
  23. vybereme disk SCSI2 (0,0,0) (sdb) – 1.1 GB ATA VBOX HARDDISK
    25
  24. Create new empty partition table on this device? zvolíme Yes
    26
  25. nyní vybereme pri/log 1.1 GB FREE SPACE
    27
  26. vybereme Create a new partition
    28
  27. vybereme Continue
    29
  28. vybereme Primary
    30
  29. zvolíme Use as: Ext4 journaling file system
    31
  30. How to use this partition: vybereme swap area
    32
  31. a na konec vybereme Done setting up the partition
    33
  32. vybereme disk SCSI3 (0,0,0) (sdb) – 107.4 GB ATA VBOX HARDDISK
    34
  33. Create new empty partition table on this device? zvolíme Yes
    35
  34. nyní vybereme pri/log 107.4 GB FREE SPACE
    36
  35. vybereme Create a new partition
    37
  36. zadáme velikost 1 GB a vybereme Continue
    38
  37. vybereme Primary
    39
  38. Location for the new partition: zvolíme Beginning
    40
  39. vybereme Done setting up the partition
    41
  40. nyní vybereme pri/log 106.4 GB FREE SPACE
    42
  41. vybereme Create a new partition
    43
  42. vybereme Continue
    44
  43. vybereme Logical
    45
  44. vybereme Mount point: /usr
    46
  45. vybereme Enter manually
    47
  46. zadáme /data a pokračujeme Continue
    48
  47. a na konec vybereme Done setting up the partition
    49
  48. rozdělení disků dokončíme zvolením Finish partitioning and write changes to disk
    50
  49. potvrdíme Write changes to disks?Yes
    51
  50. Debian archive mirror country: necháme nastavený na Czech Republic
    52
  51. Debian archive mirror: potom na ftp.cz.debian.org
    53
  52. nastavení proxy HTTP proxy information (blank for none): necháme prázdné
    54
  53. můžete si vybrat, zda chcete posílat statistiky použití balíčků do Debianu Participate in the package usage survey? já nemám rád, když systém sám něco odesílá a tak dávám No
    55
  54. ve výběru software Software selection vybereme pouze Standard system utilities (vybíráme mezerníkem, zbytek si nainstalujeme sami) a dáme Continue
    56
  55. nainstalujeme zavaděč systému – Install the GRUB boot loader to the master boot record?Yes
    57
  56. a nakonec dokončíme instalaci Instalation completeContinue
    58

Nyní můžeme počítač vypnout z menu Machine – Close… – Poweroff the machine. Zobrazíme si nastavení počítače a provedeme následující úpravy:

Pro fungování sdílení mezi Windows a Debianu, musíme nainstalovat VirtualBox Guest Additions. Otevřeme záložku Storage, vybereme CD-ROM mechaniku, v pravo klikneme na ikonu CD a vybereme Choose a virtual CD/DVD disk file… a najdeme soubor VBoxGuestAdditions.iso, který se nachází v adresáři, kde je VirtualBox nainstalovaný.
vb-img20

Na záložce System potom odškrtneme CD/DVD ROM v Boot order: a přesuneme Hard Disk na první místo.

Zavřeme nastavení a spustíme náš server.

Základní nastavení

Přihlásíme se do systému, uživatelské jméno devel a heslo devel (pokud jste si při instalaci nevybrali jiné). Jako první provedeme upgrade dosud nainstalovaných balíčků. Zadáme:

sudo apt-get update
sudo apt-get upgrade

Příkaz sudo se vás občas zeptá na heslo. Zadejte heslo pro přihlášení do systému (v mém případě devel). Při upgradu se také může zobrazit dotaz na potvrzení nainstalování nových verzí, pokračujte zadáním Y.

Pokud jste zvyklí pracovat se správcem souborů ve stylu Norton Commander, nainstalujte si Midnight Commander:

sudo apt-get install mc

Midnight Commander poté spustíme zadáním mc (případně sudo mc s přístupovými právy jako root).

Pro používání sdílení mezi Windows a Debianem, musíme nainstalovat VirtualBox Guest Additions. Při instalaci Debianu se automaticky do systému nainstaluje balíček VirtualBox Guest Additions. Jelikož je dost pravděpodobné, že bude starří než naše verze VirtualBoxu, nejprve ho odinstalujeme.

Nejdříve se podíváme na nainstalované balíčky:

dpkg -l | grep virtualbox

A pak postupně odinstalujeme všechny balíčky:

sudo apt-get remove --purge virtualbox-ose-guest-x11
sudo apt-get remove --purge virtualbox-guest-dkms
sudo apt-get remove --purge virtualbox-guest-utils
sudo apt-get autoremove

Poté potřebujeme do systému dostat potřebné knihovny pro kompilaci VirtualBox Guest Additions:

sudo apt-get install build-essential
sudo apt-get install linux-headers-$(uname -r)

Nyní spustíme instalaci:

sudo sh /media/cdrom0/VBoxLinuxAdditions.run

Pokud nemáme automaticky připojenou CD-ROM, připojíme ji tímto příkazem:

sudo mount /dev/cdrom1 /media/cdrom0

O něco urychlíme spouštění systému a nastavíme zavaděč Grub, aby nečekal 5s před vybráním prvního systému pro zavedení, ale pouze 1 vteřinu:

sudo nano /etc/default/grub

Změníme řádek GRUB_TIMEOUT=5 na GRUB_TIMEOUT=1. Uložíme CTRL+O, ENTER a zavřeme editor CTRL+X. Následně spustíme:

sudo update-grub

Nastavení sítě

Abychom mohli správně používat síť pouze s hostem, musíme nastavit druhou síťovou kartu, kterou máme v systému. Zadáme příkaz:

sudo nano /etc/network/interfaces

a přidáme následující definici:

# The secondary network interface
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255

Uložíme CTRL+O, ENTER a zavřeme editor CTRL+X.

Nyní si doporučuji přidat do Windows hosts alias devel79, který ukazuje na tento server.

Sudo bez hesla

Protože jsme na vývojovém serveru, je otravné pořád zadávat heslo při používání příkazu sudo, proto si nastavíme, že příkaz sudo se na heslo ptát nebude. Spustíme:

sudo visudo

A přidáme řádek:

Defaults    !authenticate

Soubor uložíme CTRL+O, ENTER a zavřeme editor CTRL+X.

Nastavení sdílení s Windows

Sdílený adresář z Windows připojíme ve vývojovém serveru do adresáře /share.

sudo mkdir /share
sudo nano /etc/fstab

Přesuneme kurzor na konec souboru a na novou řádku přidáme následující text:

share     /share     vboxsf     rw     0     0

Soubor uložíme CTRL+O a ENTER a zavřeme CTRL+X a server restartujeme příkazem:

sudo reboot

a po přihlášení se můžeme podívat jesli sdílení funguje zadáním:

ls /share

Měly bychom vidět výpis souborů složky, kterou jsme ve Windows nasdíleli.

Instalace OpenSSH serveru a nastavení přihlášení s certifikátem bez hesla

Pro přístup na server budeme používat SSH. SSH z konzole je pro mne mnohem přívětivější způsob než konzole VirtualBoxu. Protože se jedná o vývojový server, rád bych se přihlašoval rychle bez hesla. Nejprve nainstalujeme OpenSSH server.

sudo apt-get install openssh-server

Nyní si vygenerujeme SSH certifikát bez hesla. Zadáme příkaz ssh-keygen a všechny kroky potvrdíme ENTERem a nakonec svůj soukromý i veřejný klíč (oba budou v adresáři .ssh) zkopírujeme přes /share do Windows.
Privátní klíč poté vymažeme a veřejný přejmenujeme na .ssh/authorized_keys v našem domovském adresáři. Tento klíč se pak bude používat pro přihlášení k serveru:

cd ~
ssh-keygen
cp .ssh/* /share
rm .ssh/id_rsa
mv .ssh/id_rsa.pub .ssh/authorized_keys

Jak se nyní přihlásíme k našeme serveru přes SSH naleznete v tipech.

Přidání dotdeb balíčků

Pro aktuálnější verze PHP, MySQL a Redisu budeme využívat distribuce z dotdeb.org balíčků. Pro aktuální Debian Wheezy to podle mě nějakou dobu nebude třeba. Otevřeme soubor /etc/apt/sources.list.d/dotdeb.list:

sudo nano /etc/apt/sources.list.d/dotdeb.list

a přidáme řádky (zajistí instalaci aktuální verze PHP 5.4):

deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all

nebo pokud chceme nainstalovat PHP 5.5

deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all

případně k nainstalování staršího PHP 5.3 (další nutné kroky jsou na konci kapitoli o instalaci PHP)

deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all

Uložíme CTRL+O, ENTER a zavřeme soubor CTRL+X a přidáme klíč z dotdeb.org do systému balíčků:

cd ~
wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | sudo apt-key add -
rm dotdeb.gpg
sudo apt-get update

Instalace PHP

PHP v aktuální verzi 5.4 nainstalujeme příkazem:

sudo apt-get install php5-cli

Soubor s nastavením php.ini se nalézá zde /etc/php5/cli/php.ini. My v něm nastavíme časové pásmo. Otevřeme si php.ini:

sudo nano /etc/php5/cli/php.ini

A přidáme řádek date.timezone = Europe/Prague (nebo ještě lépe najdeme a nahradíme řádek „;date.timezone = „). Soubor uložíme CTRL+O, ENTER a zavřeme CTRL+X.

Instalace PHP 5.3

Pokud chceme na našem serveru provozovat starší verzi PHP 5.3, musíme do systému nejprve balíčky z Debianu Squeeze, neboť obsahuje některé potřebné knihovny. Otevřeme soubor /etc/apt/sources.list.d/squeeze:

sudo nano /etc/apt/sources.list.d/squeeze

a do něj vložíme následující řádky:

deb http://ftp.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free

Soubor uložíme CTRL+O, ENTER a zavřeme CTRL+X.

Tento zdroj balíků by už k nainstalování PHP verze 5.3 stačil, ale doporučuji použít verzi v dotdeb balíčků, protože verze v Debianu je opravdu již dost stará. Přidáme tedy ještě dotdeb balíčky.

Nyní musíme balíčkovacímu nástroji říci, aby pro PHP používal balíčky z námi přidané zdroje. To provedeme v souboru /etc/apt/preferences.d/php:

sudo nano /etc/apt/preferences.d/php

Kam vložíme následující obsah:

Package: php5*
Pin: release o=packages.dotdeb.org
Pin-Priority: 700

Package: libapache2-mod-php5
Pin: release o=packages.dotdeb.org
Pin-Priority: 700

Package: php-pear
Pin: release o=packages.dotdeb.org
Pin-Priority: 700

Package: *
Pin: release o=packages.dotdeb.org
Pin-Priority: 400

V případě použití balíčků z Debianu potom:

Package: php5*
Pin: release a=oldstable
Pin-Priority: 700

Package: libapache2-mod-php5
Pin: release a=oldstable
Pin-Priority: 700

Package: php-pear
Pin: release a=oldstable
Pin-Priority: 700

Package: php-apc
Pin: release a=oldstable
Pin-Priority: 700

Package: *
Pin: release a=stable
Pin-Priority: 600

Tím jsme zvýšili prioritu balíčkům se starší verzi PHP. Více najdete v tipech a tricích. Nyní se všechny balíky týkající se PHP nainstalují ve verzi 5.3.

Instalace a nastavení Apache s PHP

Nainstalujeme Apache 2 a PHP:

sudo apt-get install apache2
sudo apt-get install php5

Nainstalujeme několik základních rozšíření:

sudo apt-get install php5-pgsql
sudo apt-get install php5-mysql
sudo apt-get install php5-memcache
sudo apt-get install php5-curl
sudo apt-get install php5-gd
sudo apt-get install php5-imagick

V PHP nastavení pro Apache nastavíme časové pásmo. Otevřeme si php.ini:

sudo nano /etc/php5/apache2/php.ini

A přidáme řádek date.timezone = Europe/Prague (nebo ještě lépe najdeme a nahradíme řádek „;date.timezone = „). Soubor uložíme CTRL+O, ENTER a zavřeme CTRL+X.

Při startu Apache dostáváme chybovou hlášku „apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName“, abychom jí opravili, otevřeme si nastavení Apache:

sudo nano /etc/apache2/conf.d/httpd.conf

A přidáme následující řádek:

ServerName devel79

Kvůli používání souborů skrze sdílení VirtualBoxu přidáme ještě řádek:

EnableSendfile Off

který obchází pomalou implementaci souborového systému VirtualBoxu při servírování statických souborů Apachem (jde o problém při používání funkce jádra sendfile()).

Soubor uložíme CTRL+O, ENTER a zavřeme CTRL+X a restartujeme Apache:

sudo /etc/init.d/apache2 restart

Na datovém disku vytvoříme adresář pro Apache a nastavíme mu jako vlastníka uživatele www-data. Do adresáře pak zkopírujeme ukázkové soubory z instalace Apache a z původního umístění je vymažeme:

sudo mkdir /data/www
sudo cp -r /var/www/* /data/www
sudo chown www-data.www-data /data/www
sudo rm -R /var/www

Teď změníme nastavení, aby ukazovalo do nového umístění:

sudo nano /etc/apache2/sites-available/default

Všechny výskyty /var/www změníme na /data/www. Uložíme soubor CTRL+O, ENTER a zavřeme editor CTRL+X. To samé uděláme se souborem pro SSL:

sudo nano /etc/apache2/sites-available/default-ssl

Nakonec znovunačteme nastavení Apache:

sudo /etc/init.d/apache2 reload

Více tipů pro používání Apache naleznete na konci tohoto tutoriálu.

Instalace MySQL

Nejprve nainstalujeme MySQL server a modul pro PHP:

sudo apt-get install mysql-server

Při instalaci se pravděpodobně zobrazí několikrát dotaz na heslo pro uživatele root. Necháme ho prozatím prázdné a pokračujeme zmáčknutím klávesy ENTER. Upravíme nastavení MySQL:

sudo nano /etc/mysql/my.cnf

Najdeme řádek „datadir = /var/lib/mysql“, který změníme na „datadir = /data/mysql“. Do sekce [mysqld] přidáme řádek „skip-name-resolve“. Nakonec najdeme řádek „bind-address = 127.0.0.1“, napíšeme před něj #, takže bude vypadat takto „#bind_address = 127.0.0.1“. Soubor uložíme a zavřeme klasickou kombinací CTRL+O, ENTER, CTRL+X. Následně přesuneme všechna data MySQL na datový disk do adresáře /data/mysql:

sudo mkdir /data/mysql
sudo cp -R /var/lib/mysql /data
sudo chown -R mysql.mysql /data/mysql
sudo /etc/init.d/mysql restart
sudo rm -R /var/lib/mysql

Spustíme MySQL konzoli pod uživatelem root a všechny práva přenastavíme na uživatele devel s heslem devel (nebo si vybereme vlastního uživatele, případně můžeme ponechat roota, což se mě osobně moc nelíbí):

mysql --user=root mysql

Do konzole zadáme následující příkazy:

CREATE USER 'devel'@'localhost' IDENTIFIED BY 'devel';
GRANT ALL PRIVILEGES ON *.* TO 'devel'@'localhost' WITH GRANT OPTION;
CREATE USER 'devel'@'%' IDENTIFIED BY 'devel';
GRANT ALL PRIVILEGES ON *.* TO 'devel'@'%' WITH GRANT OPTION;

A konzoli ukončíme zadáním:

exit

Restartujeme MySQL server:

sudo /etc/init.d/mysql restart

Znovu se připojíme k MySQL konzoli, tentokrát jako uživatel devel s heslem devel (konzole se nás na něj zeptá).

mysql --password mysql

Vymažeme uživatele root. Pokud jste při instalaci Ubuntu zvolili jiný host name než devel79, upravte poslední příkaz tak, aby odpovídal vašemu host name.

DROP USER 'root'@'localhost';
DROP USER 'root'@'127.0.0.1';
DROP USER 'root'@'::1';
DROP USER 'root'@'devel79';

Konzoli ukončíme:

exit

A server restartujeme.

sudo /etc/init.d/mysql restart

Instalace PostgreSQL

Nainstalujeme PostgreSQL server a modul pro Apache:

sudo apt-get install postgresql postgresql-contrib

Upravíme nastavení pro vzdálený přístup k serveru:

sudo nano /etc/postgresql/9.1/main/pg_hba.conf

Najdeme řádek „local all postgres peer“ a nahradíme ho za „local all devel peer“ (nebo místo devel jiného uživatele, kterého jsme zadali při instalaci Debianu). Dále nahradíme řádku „host all all 127.0.0.1/32 md5“ za „host all all 0.0.0.0/0 md5“, čímž povolíme připojení k serveru odkudkoliv. Uložíme a ukončíme editor.

Vytvoříme adresář na datovém disku a nastavíme mu majitele postgres.

sudo mkdir -p /data/pgsql/9.1/main
sudo chown postgres.postgres -R /data/pgsql

Vypneme PostgreSQL:

sudo /etc/init.d/postgresql stop

Dotavé úložiště budeme chtít mít s nastavením porovnávením na češtinu (cs_CZ.UTF-8). Spustíme příkaz:

sudo dpkg-reconfigure locales

Kde by měla být zaškrtnuta volba en_US.UTF-8. My k ní pomocí mezerníku ještě přidáme cs_CZ.UTF-8 a potvrdíme Enterem. Na další obrazovce zvolíme None a také potvrdíme Enterem.

Nyní se v konzoli přihlásíme jako uživatel postgres a vytvoříme nové úložiště pro databázi. Pokud nechceme české porovnávíní, vynecháme parametr –locale=cs_CZ.UTF-8.

sudo su postgres
/usr/lib/postgresql/9.1/bin/initdb --pgdata /data/pgsql/9.1/main --locale=cs_CZ.UTF-8
exit

Otevřeme nastavení a zadáme nové datové úložiště a adresu, na které server naslouchá:

sudo nano /etc/postgresql/9.1/main/postgresql.conf

Najdeme „data_directory = ‚/var/lib/postgresql/9.1/main'“ a nahradíme za „data_directory = ‚/data/pgsql/9.1/main'“.

Dále řádek „#listen_addresses = ‚localhost'“ nahradíme za „listen_addresses = ‚*'“ a nakonec „ssl = true“ za „#ssl = true“. Soubor uložíme CTRL+O, ENTER, zavřeme CTRL+X a spustíme server:

sudo /etc/init.d/postgresql start

Znovu se přihlásím jako uživatel postgres a vytvořím nového uživatele devel s heslem devel (nebo jiného uživatele, podle vašich preferencí):

sudo su postgres
createuser devel -P

Zadám heslo devel a pak ještě jednou pro potvrzení. Na dotaz jestli je nový uživatel superuser, zadám y (ano je). Nakonec vytvoříme databázi devel, kterou někteří klienti vyžadují pro připojení.

createdb devel
exit

Smažeme nepotřebné soubory z datového úložiště, nepotřebné soubory z instalace PostgreSQL serveru a nakonec server restartujeme.

sudo rm /data/pgsql/9.1/main/postgresql.conf
sudo rm /data/pgsql/9.1/main/pg_hba.conf
sudo rm /data/pgsql/9.1/main/pg_ident.conf
sudo rm -R /var/lib/postgresql
sudo /etc/init.d/postgresql restart

Instalace Memcached

Službu memcached nainstalujeme příkazem:

sudo apt-get install memcached

Po instalaci upravíme nastavení:

sudo nano /etc/memcached.conf

Upravíme řádek „-m 64“ na „-m 16“, čímž snížíme množství použité paměti a „-l 127.0.0.1“ na „#-l 127.0.0.1“, čímž povolíme připojení na Memcached odkudkoliv. Soubor uložíme CTRL+O, ENTER, zavřeme CTRL+X a Memcached restartujeme:

sudo /etc/init.d/memcached restart

Instalace Redis

Redis nainstalujeme pomocí příkazu:

sudo apt-get install redis-server

Vytvoříme adresář pro data a nastavíme mu správného vlastníka:

sudo mkdir /data/redis
sudo chown redis.redis /data/redis

Upravíme nastavení:

sudo nano /etc/redis/redis.conf

Změníme řádek „bind 127.0.0.1“ na „#bind 127.0.0.1“, tím povolíme připojit se na Redis odkudkoliv a řádek „dir /var/lib/redis“ přepíšeme na „dir /data/redis“, čímž změníme úložiště souborů. Soubor uložíme CTRL+O, ENTER a zavřeme CTRL+X a Redis restartujeme.

sudo /etc/init.d/redis-server restart

Nakonec smažeme starý datový adresář:

sudo rm /var/lib/redis -R

Instalace ElasticSearch

Nejprve nainstalujeme Javu:

sudo apt-get install default-jre

Poté stáhneme a nainstalujeme elasticsearch z oficiálního debianího balíčku (můžete se podívat, zda není vydána novější verze):

cd ~
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.3.deb
sudo dpkg -i elasticsearch-0.90.3.deb

Vymažeme soubor s balíčkem:

rm elasticsearch-0.90.3.deb

Pokud bychom v budoucnu chtěli elasticsearch odinstalovat, použijeme příkaz:

sudo dpkg -r elasticsearch

Nyní připravíme datový adresář:

sudo mkdir /data/elasticsearch
sudo chown elasticsearch.elasticsearch /data/elasticsearch

Upravíme nastavení:

sudo nano /etc/elasticsearch/elasticsearch.yml

Kde přidáme řádku:

path.data: /data/elasticsearch

A restartujeme službu:

sudo /etc/init.d/elasticsearch restart

Vývojový SMTP server

Vývojový SMTP server funguje tak, že všechny emaily uloží do souboru v adresáři /data/emails. Ten může být přímo adresář nebo v mém případě symbolický odkaz na /share, kde se mi emaily ukládají přímo do Windows a utilita Devel79 Tray mi hlídá a zobrazuje nově vytvořené emaily.

Nejprve nainstalujeme exim4:

sudo apt-get install exim4

Spustíme průvodce konfigurací:

sudo dpkg-reconfigure exim4-config

A vyplníme následující hodnoty:

OK
General type of mail configuration
– local delivery only; not on a network
System mail name
– devel79
IP-addresses to listen on for incoming SMTP connections
– necháme prázdné
Other destinations for which mail is accepted
– *
Keep number of DNS-queries minimal (Dial-on-Demand)?
– No
Delivery method for local mail
– mbox format in /var/mail/
Split configuration into small files?
– No

Upravíme nastavení eximu:

sudo nano /etc/exim4/conf.d/router/950_exim4-config_catchall

Kde zadáme:

catch_all:
   debug_print = "R: catch_all for $local_part@$domain"
   driver = redirect
   data = ${lookup{*}lsearch{/etc/aliases}}
   pipe_transport = address_pipe

Uložíme CTRL+O, ENTER a zavřeme CTRL+X soubor. A otevřeme si soubor /etc/aliases:

sudo nano /etc/aliases

Kam nakonec přidáme řádku, která přesměruje všechny emaily na náš skript:

*: |/etc/exim4/save-email

Upravíme další nastavení exim4:

sudo nano /etc/exim4/update-exim4.conf.conf

Kde změníme řádek „dc_relay_domains=““ na „dc_relay_domains=’*'“. Soubor uložíme CTRL+O, ENTER a zavřeme CTRL+X. Nakonec aktualizujeme konfiguraci a restartujeme službu:

sudo update-exim4.conf.template -r
sudo update-exim4.conf
sudo service exim4 restart

Vytvoříme si adresář, kam se budou ukládat emaily. Buď jako adresář:

sudo mkdir /data/emails
sudo chmod a+w /data/emails -R

Nebo jako symbolický odkaz do sharu na Windows (doporučené):

sudo ln -s /share/path/to/Emails /data/emails

Nyní si vytvoříme skript, který bude emaily ukládat do adresáře:

sudo nano /etc/exim4/save-email

Do souboru vložíme následující obsah:

#!/bin/bash

date2string() {
  date "+%Y%m%d.%H%M%S"
}

FILE="email-$(date2string).$$.$RANDOM.eml"

cat /dev/stdin > /data/emails/$FILE

Nakonec souboru nastavíme práva na spouštění:

sudo chmod a+x /etc/exim4/save-email

BASH skripty pro zálohování a obnovu souborů

Pro snadnou zálohu dat v rámci vývojového server (neplést se zálohou celého pevného disku) jsem napsal dva skriptíky pro zálohování a obnovu celého adresáře. Nejprve nastavíme cestu k našim skriptům do PATH:

nano ~/.bashrc

Na konec souboru připíšeme:

PATH=$PATH:~/scripts
export PATH

Uložíme CTRL+O, ENTER a zavřeme CTRL+X. Vytvoříme nový adresář batch v našem domovském adresáři a do něj skripty uložíme:

mkdir ~/scripts
nano ~/scripts/backup

Vložíme následující skript pro zálohu dat:

#!/bin/bash

USAGE="Usage: backup dir-to-backup"

date2string() {
  date "+%Y%m%d.%H%M%S"
}

if [ $# -ne 1 ]; then
  ls -1 /data
  echo $USAGE
else
  FILE="$1.$(date2string).tar.gz"
  sudo tar -pcvzf /data/backup/$FILE /data/$1
fi

Skript uložíme CTRL+O, ENTER a zavřeme CTRL+X a otevřeme skript pro obnovu dat:

nano ~/scripts/restore

Vložíme:

#!/bin/bash

USAGE="Usage: restore file-to-restore"

if [ $# -ne 1 ]; then
  ls -1 /data/backup
  echo
  echo $USAGE
else
  cd /
  sudo tar -pxvzf /data/backup/$1
fi

Uložíme CTRL+O,ENTER a zavřeme CTRL+X. Skriptům nastavíme práva na spouštění:

chmod a+x ~/scripts/*

Vytvoříme adresář, kam se budou zálohy ukládat a nastavíme mu jako majitele uživatele devel (nebo jiného, pokud jste zadali jiný název při instalaci Debianu).

sudo mkdir /data/backup
sudo chown devel.devel /data/backup -R

Pro zálohu dat MySQL, PostgreSQL, Apache, Redisu nebo ElasticSearch použijte následující příkazy (funguje až po restartu systému nebo odhlášení a novém přihlášení):

backup mysql
backup pgsql
backup www
...

Pro obnovu dat použijte příkaz:

restore SouborDatKObnově

Pokud zadáme pouze restore, vypíší se všechny uložené zálohy.

Nyní je server připraven k použití a můžeme ho vypnout z menu Machine – ACPI Shutdown.

Závěr

Zobrazíme si nastavení serveru a na kartě Storage odebereme CD-ROM mechaniku, nebudeme ji už potřebovat.

Nyní máme server připravený k použití. Ať vám slouží stejně dobře, jako mě. Pokud budeme mít nějaké dotazy nebo návrhy na vylepšení, budu rád, když napíšete do komentářů.

Devel79 Tray

Pokud chcete zkusit komfortnější ovládání vašeho vývojového serveru, rád bych vám doporučil svoji utilitku, vytvořenou tomuto serveru na míru Devel79 Tray.

Doporučené nastavení, upgrade a tipy a triky k vašemu virtuálnímu serveru

Doporučené nastavení sítě

Úprava hosts ve Windows

Osobně mám ve Windows hosts přidán alias pro virtuální server (jak na to například zde http://en.wikipedia.org/wiki/Hosts_(file) nebo programem UpdateHosts), který ukazuje na druhou síťovou kartu na serveru. U sebe mám nastaveno:

192.168.56.101 devel79

Při komunikaci se serverem pak používám místo IP adresy název hosta devel79. Má to i tu výhodu, že stejné nastavení může fungovat přímo z Windows, kde host devel79 odkazuje na IP 192.168.56.101 a stejně tak z virtuálního serveru, kde zase host devel79 automaticky ukazuje na IP 127.0.0.1.

Typ sítě – NAT

Tento typ sítě se používá pro přístup virtuálního serveru k internetu. Ale je zde ještě jedna funkčnost, které lze využít a která souvisí a to je předávání portů. Můžete si nastavit předávání portů mezi systémem Windows a naším virtuálním serverem. V nastavení našeho serveru na kartě Network u první síťové karty rozklikneme Advanced a dole klikneme na Port forwarding. Zde můžeme nastavit porty, které budou bindovány ke všem síťovým rozhraním, které máme v systému (případně můžeme nastavit pouze konkrétní IP adresu). Nastavíme port, který bude použit ve Windows – Host Port a port, na který se bude odkazovat ve virtuálním serveru – Guest Port. Poté budete moci přistupovat ke službám třeba přes 127.0.0.1:port. Pokud toto nepotřebujete kvůli nějaké speciální aplikaci, na které pracujete, doporučuji tento způsob nepoužívat a spíše všechno řešit přes druhou síťovou kartu, které je nastavena jako síť pouze s hostem.

Přehled služeb a jejich portů, které máme nainstalované ve virtuálním serveru:

  • Apache, port 80
  • MySQL, port 3306
  • PgSQL, port 5432
  • Memcache, port 11211
  • Redis, port 6379
  • ElasticSearch, port 9200
Typ sítě – síť pouze s hostem (Host-only adapter)

Pro základní komunikaci s virtuálním serverem se používá Host-only adapter, který umožňuje komunikaci mezi hostitelem a hostem. Pro správné fungování musí být v systému nainstalován a správně nastaven VirtualBox Host-Only Network Adapter. Klikneme na File – Preferences… a vybereme kartu Network. Zde v poli Host-only Networks: musí být minimálně jeden adaptér, který použijeme v nastavení sítě u druhé síťové karty našeho serveru. Pokud zde žádný adaptér není, stiskneme klávesu Insert a vytvoříme ho. Poté na něj dvojklikneme myší a zkontrolujeme, zda má nastavenu IPv4 Address: 192.168.56.1 a IPv4 Network Mask: 255.255.255.0. Bez tohoto nastavení se nepřipojíme na služby běžící na serveru!

vb-img19

Chyba ve VirtualBoxu

Tady bych rád upozornil na chybu, které se u mě vyskytuje, pokud aktualizuji VirtualBox na novější verzi. Při aktualizaci se mi změní IP adresa adaptéru, a i když jí změním zpět, po restartu počítače je zase IP adresa špatně. U mě na to funguje tento trik. Vypnu všechny spuštěné virtuální počítače, vymažu aktuální adaptér, zavřu VirtualBox, spustím VirtualBox, přidám nový adaptér, změním mu IP adresu na 192.168.56.1. Od teď si ji VirtualBox zase pamatuje.

Přístup na server přes SSH pomocí certifikátu bez zadávání hesla

Používání SSH z MSYS

Pokud používáte msys (což mohu vřele doporučit, jedná se o sadu Unix utilit portovaných na systém Windows), přihlásíte se na server zadáním příkazu:

ssh devel@devel79 -i path/to/id_rsa

Kde path/to/id_rsa nahradíme za cestu k souboru id_rsa, který jsme si vytvořili při instalaci SSH serveru. Pokud parametr -i vynecháme, budeme muset při přihlášení zadat heslo.

Putty

Pokud nemáme nainstalované msys, můžeme použít jiného SSH klienta. Třeba hojně používaný program Putty.

Spustíme Putty a jako hostname zadáme devel79. Pak jdeme do nastavení SSH – Auth – Private key file for authentication, kde vybereme náš soukromý klíč ve formátu pro Putty. Ten si vygenerujeme takto. Spustíme program puttygen.exe. Zvolíme z menu Conversions – Import key a vybereme soubor id_rsa. Nakonec klikneme na tlačítko Save private key a potvrdíme, že chceme uložit klíč bez hesla.

Základní ovládání Apache

Pro spuštění, zastavení, restartování a znovu načtení konfigurace slouží následující příkazy:

sudo /etc/init.d/apache2 start
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/apache2 reload

Pro povolení nebo zakázání nějakého modulu, slouží příkazy a2enmod a a2dismod. Například doporučuji povolit modul mod_rewrite. To uděláme příkazem:

sudo a2enmod rewrite

Zakázání tohoto module potom příkazem:

sudo a2dismod rewrite

Po této operaci musíme vždy restartovat celého Apache.

Pro vytvoření virtual hostu musíme založit nový soubor v adresáři /etc/apache2/sites-available a do něj vložíme klasickou definici <VirtualHost …>. Jako DocumentRoot můžeme použít adresář z Windows přes /share/…. Soubor založíme nebo otevřeme příkazem:

/etc/apache2/sites-available/sitename

Kde sitename nahradíme za nějaký náš vlastní název. Abychom pak tento definiční soubor povolili nebo zakázali, použijeme příkaz a2ensite nebo a2dissite. Pro povolení souboru sitename poslouží příkaz:

sudo a2ensite sitename

A pro zakázání pak:

sudo a2dissite sitename

Po této operaci musíme vždy znovu načíst konfiguraci Apache.

Nastavení SSL pro VirtualHosta

Nejpreve musíme v Apachi povolit modul SSL a Apache restartovat:

sudo a2en ssl
sudo /etc/init.d/apache2 restart

Poté vytvoříme adresář, kam se uloží self-signet testovací certifikát (prohlížeč nás bude varovat, že certifikát není důvěryhodný, ale pro testovací účely nám to nebude vadit):

sudo mkdir /etc/apache2/keys

Nakonec si vygenerujeme samotný certifikát:

sudo openssl req -new -x509 -days 3650 -sha1 -newkey rsa:1024 -nodes -keyout /etc/apache2/keys/domain.com.key -out /etc/apache2/keys/domain.com.crt -subj '/O=Company/OU=Department/CN=*.domain.com'

Kde days je počet dnů platnosti certifikátu, keyout a out jsou soubory s certifikátem (doporučuji pojmenovat podle domény) a nakonec subj jsou informace o společnosti a hlavně doména, ke které se certifikát vztahuje (lze použít wildcart typu *.domain.com což znamená všechny subdomény na doméně domain.com). Doménu samozřejmě zvolíme takovou, na které běží vývojová instance našeho webu.

Pokud poté chceme šifrované spojení povolit pro virtual hosta, použijeme v jeho definici následující kód:

SSLEngine on
SSLCertificateFile /etc/apache2/keys/domain.com.crt
SSLCertificateKeyFile /etc/apache2/keys/domain.com.key

Kde SSLCertificateFile a SSLCertificateKeyFile jsou soubory s certifikátem, který jsme si vygenerovali pro konkrétní doménu.

Zálohování MySQL a PostgreSQL

Pro kompletní zálohování MySQL dat ve formátu SQL použijeme příkaz (zeptá se nás na heslo k účtu devel):

mysqldump --all-databases -u devel -p > /share/mysql.sql

Tento příkaz uloží dump na disk do Windows. Pro obnovu z tohoto souboru poté slouží příkaz (opět se zeptá na heslo):

mysql -u devel -p < /share/mysql.sql

Pro kompletní zálohu databáze PostgreSQL ve formátu SQL existuje příkaz:

pg_dumpall --file=/share/pgsql.sql

Tento příkaz uloží dump na disk do Windows. Pro obnovu z tohoto souboru slouží příkaz:

psql < /share/pgsql.sql

Síťová komunikace ze serveru do Windows

Pokud budeme chtít na serveru využít nějakou službu běžící ve Windows, najdeme ji na IP adrese 10.0.2.2. Jedná se o výchozí bránu pro NAT připojení.

Odebrání balíčků

Pro odinstalaci balíčků používám příkaz

sudo apt-get remove --purge package_name
sudo apt-get autoremove

Kde package_name je jméno balíčku, který chci odstanit.

Více serverů sdílejícíh disky

Díky rozdělení disků není problém spouštět nad stejnými daty servery s různou konfigurací a s různými verzemi softwaru. V praxi si stačí vytvořit nový virutuální počítač se stejným nastavením jako náš sever. K němu vytvořit kopii systémového disku (File – Virtual Media Manager – devel79.vdi – pravé tlačítko myši – Copy…). Jako systémový disk připojíme nově vytvořenou kopii, swap disk můžeme sdílet a stejně tak datový disk použijeme stejný. Systém si můžeme upravit třeba rozdílnou verzí PHP a pak můžeme jednodušše testovat naše data mezi jednotlivými prostředími. Jen si musíme dát pozor, aby neběžely dva servery zároveň. Nová verze Devel79 Tray již umožňuje jednoduché přepínání mezi více servery.

Nastavení priority balíčků k instalaci

Nastavení priority balíčků k instalaci (pinování) použijeme v případě pokud je některý balíček dostupný z více zdrojů a my potřebujeme nainstalovat ten, který není zrovna v systému nastaven jako prioritní. Vše si ukážeme na instalaci Redis serveru. Pokud máme v systému přidány dotdeb balíčky můžeme Redis instalovat ze dvou zdrojů. Který je v systému defaultní si ověříme příkazem apt-cache policy:

sudo apt-cache policy redis-server

Dostaneme podobný výstup:

redis-server:
  Installed: (none)
  Candidate: 2:2.4.16-1~dotdeb.0
  Version table:
    2:2.4.16-1~dotdeb.0 0
      500 http://packages.dotdeb.org/ stable/all amd64 Packages
    2:2.2.12-1build1 0
      500 http://ftp.usf.edu/pub/ubuntu/ precise/universe amd64 Packages

Vidíme, že k instalaci je určena verze z dotdeb balíčků. Pokud se podíváme třeba na balíček PHP 5, který jsme nainstalovali ještě před přidáním dotdeb balíčků:

sudo apt-cache policy php5

Uvidíme něco podobného:

php5:
  Installed: 5.3.10-1ubuntu3.2
  Candidate: 5.3.16-1~dotdeb.0
  Version table:
     5.3.16-1~dotdeb.0 0
        500 http://packages.dotdeb.org/ stable/all amd64 Packages
 *** 5.3.10-1ubuntu3.2 0
        500 http://ftp.usf.edu/pub/ubuntu/ precise-updates/main amd64 Packages
        500 http://ftp.usf.edu/pub/ubuntu/ precise-security/main amd64 Packages
        100 /var/lib/dpkg/status
     5.3.10-1ubuntu3 0
        500 http://ftp.usf.edu/pub/ubuntu/ precise/main amd64 Packages

Pokud chceme zachovat PHP instalované z debianích repozitářů, ale přitom budeme chtít nainstalovat Redis server z dotdeb repozitářů, musíme:

1) snížit prioritu všech dotdeb balíčků na 400, aby debianí repozitář měl prioritu větší
2) zvětšit prioritu pro redis-server zpět na 500

Vytvoříme soubor /etc/apt/preferences.d/dotdeb:

sudo nano /etc/apt/preferences.d/dotdeb

A do něj vložíme následující kód:

Package:  *
Pin: release o=packages.dotdeb.org
Pin-Priority: 400

Package:  *redis-server*
Pin: release o=packages.dotdeb.org
Pin-Priority: 500</code>

Nyní si můžeme ověřit nastavení priorit pro dotdeb repozitář:

sudo apt-cache policy | grep dotdeb

S podobným výsledkem:

400 http://packages.dotdeb.org/ stable/all i386 Packages
    release o=packages.dotdeb.org,a=stable,n=squeeze,l=packages.dotdeb.org,c=all
    origin packages.dotdeb.org
400 http://packages.dotdeb.org/ stable/all amd64 Packages
    release o=packages.dotdeb.org,a=stable,n=squeeze,l=packages.dotdeb.org,c=all
    origin packages.dotdeb.org
    redis-server -> 2:2.4.16-1~dotdeb.0
    redis-server:i386 -> 2:2.4.16-1~dotdeb.0

Ještě ověříme balíček php5:

sudo apt-cache policy php5

Vše už je správně:

php5:
  Installed: 5.3.10-1ubuntu3.2
  Candidate: 5.3.10-1ubuntu3.2
  Version table:
     5.3.16-1~dotdeb.0 0
        400 http://packages.dotdeb.org/ stable/all amd64 Packages
 *** 5.3.10-1ubuntu3.2 0
        500 http://ftp.usf.edu/pub/ubuntu/ precise-updates/main amd64 Packages
        500 http://ftp.usf.edu/pub/ubuntu/ precise-security/main amd64 Packages
        100 /var/lib/dpkg/status
     5.3.10-1ubuntu3 0
        500 http://ftp.usf.edu/pub/ubuntu/ precise/main amd64 Packages

Upgrade

Upgrade balíčků

Pro upgrade balíčků nainstalovaných v systému použijte kombinaci příkazů:

sudo apt-get update
sudo apt-get upgrade
VirtualBox Guest Additions

S novou verzí VirtualBoxu vždy přichází i nová verze VirtualBox Guest Additions. Doporučuji provádět průběžný upgrade. Postup je úplně stejný jako při první instalaci. Přidáme k serveru CD-ROM mechaniku v nastavení na záložce Storage a připojíme do ní aktuální ISO obraz s VirtualBox Guest Additions. Poté spustíme server, přihlásíme se a spustíme instalaci:

sudo sh /media/cdrom0/VBoxLinuxAdditions.run
Upgrade systému/připojení datového disku k novému serveru

Pokud upgradujeme systém z čisté instalace bez použití utility do-release-upgrade nebo připojíte váš datový disk k jinému serveru je potřeba provést pár věcí. Nejprve přidáme existující disk ve VirtualBoxu v nastavení našeho serveru na záložce Storage. Poté vytvoříme adresář /data a otevřeme si soubor /etc/fstab:

sudo mkdir /data
sudo nano /etc/fstab

Do souboru zapíšeme na konec řádku:

/dev/sdb1     /data     ext4      rw     0     0

A server restartujeme:

sudo reboot

Při bootavání na nás pravděpodobně vyskočí chyba při kontrole tabulek MySQL. To je způsobeno tím, že systémový uživatel Debianu (debian-sys-maint) má na novém systému jiné heslo, než bylo na starém serveru. Heslo upravíme následovně. Příkazem:

sudo cat /etc/mysql/debian.cnf | grep password

Si necháme zobrazit heslo, které se systém snaží používat. Zobrazí se nám dva stejné řádky „password = <<password>>“. Ono <<password>> si zkopírujeme a pokračujeme spuštěním MySQL konzole (zeptá se na heslo účtu devel):

mysql -u devel -p

A do ní zadáme následující příkaz, kde <<password>> nahradíme za naše aktuální heslo, které jsme získali z výpisu výše.

SET PASSWORD FOR 'debian-sys-maint'@'localhost' = PASSWORD('<<password>>');
exit

Také je možné, že na novém systému budou špatně práva k datovým souborům, protože se přesné identifikátory uživatelů na různých systémech mohou lišit. Proto provedeme kontrolu:

cd /data
ls -l

A zkontrolujeme, že každý adresář má správného vlastníka. Pokud tomu tak není, napravíme to následujícím příkazem, kde nahradíme user za konkrétního uživatele a directory za konkrétní adresář (www-data pro adresář www, mysql pro adresář mysql, postgres pro adresář pgsql, redis pro adresář redis a nakonec elasticsearch pro adresář elasticsearch):

sudo chown user.user directory -R

Úpravy a novinky v návodu

2013-09-04: upgrade návodu na Debian Wheezy 7.1.0, instalace PHP 5.4 nebo PHP 5.3, více serverů sdílejících data s swap

2013-05-01: nastavení časového pásma v php.ini (cli i apache2), upravena instalace Redisu, nastavení českého porovnávání v PostgreSQL

3 komentáře u „Jak na vlastní linuxový vývojový server pod Windows – nově a lépe

  1. Díky za tento návod. S úspěchem používám doma i v práci. Podle tohoto návodu se dá instalace ohnout podle vlastních představ.
    Ještě jednou díky

Napsat komentář

Vaše emailová adresa nebude zveřejněna.