Linux
Název školy | Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace | ||
Adresa školky | Kostelní 134, 411 08 Štětí | ||
IČ | 46773509 | ||
Název operačního programu | OP Vzdělávání pro konkurenceschopnost | ||
Registrační číslo | CZ.1.07/1.5.00/34.1006 | ||
Označení vzdělávacího materiálu | |||
Název tématické oblasti (sady) | Operační systémy | ||
Název materiálu | Linuxové služby v příkazech | ||
Anotace | |||
Autor | Ivan Pomykacz | Jazyk | český |
Očekávaný výstup | |||
Klíčová slova | |||
Druh výukového zdroje | Výklad | Věková skupina žáků | 17+ |
Typ interakce | aktivita | Ročník | 4. |
Speciální vzdělávací potřeby | žádné | ||
Zhotoveno, (datum/období) | Celková velikost |
Obsah
Služby nebo též démoni se v Debian GNU/Linuxu spouští příkazem systemctl
.
systemctl start služba
Obdobně se i vypínají nebo restartují (stop
, restart
).
Některé služby pak mají možnost "pouze" tzv. reload - znovu načtení změněné konfigurace.
Informace o službě lze vypsat příkazem status
, tedy
systemctl status služba
Ovlivnění toho, zda-li se má služba spouštět automaticky při startu, lze dosáhnout opět příkazem systemctl
.
systemctl enable služba
Klíčovým slovem disable lze pro změnu službu deaktivovat.
SSH
Server
Instalační balíček: ssh
(openssh-server
)
Název služby: ssh
Konfigurace: /etc/ssh/sshd_config
Pomocné příkazy:
ssh-keygen ssh-copy-id
Direktivy:
AuthorizedKeysFile PermitRootLogin PubkeyAuthentication AllowGroups DenyGroups AllowUsers DenyUsers ChrootDirectory AllowTCPForwarding X11Forwarding ForceCommand
Client
Linux
ssh
, scp
Konfigurace: /etc/ssh/ssh_config
, ~/.ssh/config
Použití:
ssh [-p 22] username@hostname scp [-P 22] /co/se/ma/kopirovat /kam/se/ma/zkopirovat scp [-P 22] /co/se/ma/kopirovat username@hostname:/kam/se/ma/zkopirovat scp [-P 22] username@hostname:/co/se/ma/kopirovat /kam/se/ma/zkopirovat scp [-P 22] username1@hostname1:/co/se/ma/kopirovat username2@hostname2:/kam/se/ma/zkopirovat
Program scp
může kopírovat jak ze serveru, tak na server (nebo mezi servery).
MS Windows
putty
Dostupný z lokální sítě v sekci download.
SFTP
Direktivou Match
lze individualizovat nastavení účtům (User) nebo skupinám (Group). Např.
Match User login ChrootDirectory /srv/www ForceCommand internal-sftp
Zapisuje se zpravidla na konec konfiguračního souboru.
LAMP
Apache
Instalační balíček: apache2
Název služby: apache2
Konfigurace: /etc/apache2/apache2.conf
, /etc/apache2/ports.conf
, /etc/apache2/sites-available/*
, /etc/apache2/mods-available/*
Direktivy konfiguračního souboru:
Timeout KeepAlive User, Group AccessfileName ErrorLog LogLevel
Výchozí DocumentRoot v: /var/www
VirtualHost
<VirtualHost *:80> DocumentRoot /srv/mujweb ServerName mujweb.local <Directory /srv/mujweb> Order allow,deny Allow from all </Directory> </VirtualHost>
Pomocné skripty:
a2ensite a2dissite a2enmod a2dismod
Modul userdir
Servíruje obsah adresářů public_html
v domovských adresářích uživatelů.
Ve výchozím stavu je v souboru mods-available/php5.conf
zakázáno spouštění PHP skriptů v adresářích public_html
.
Reverzní proxy
Vyžaduje aktivaci modulů proxy
a proxy_http
.
V konfiguračním souboru virtuálního hosta použít direktivu ProxyPass
. Např.
<VirtualHost *:80> ServerName mujcloud.local ProxyPass / http://mojeapp.local/ ProxyPassReverse / http://mojeapp.local/ </VirtualHost>
ServerName
není nezbytný, jen pokud běží na proxy serveru více hostů nebo chceme používat doménová jména.
ProxyPass
nastaví předávání požadavku odpovídající /
na server http://mojeapp.local/
.
ProxyPassReverse
je nezbytný pro modifikaci HTTP (location) odpovědi - zajistí správnou funkčnost aplikace v backendu.
Load balancer
Vyžaduje moduly jako proxy a navíc proxy_balancer
, lbmethod_traffic
, lbmethod_byrequests
.
Nejprve se definuje skupina serverů, nastaví se metoda balancování a poté se pomocí ProxyPass
nastaví přesměrování.
<VirtualHost *:80> ServerName mujcloud.local <Proxy balancer://mojeskupina> BalancerMember http://server1:8080 BalancerMember http://server2:8080 ProxySet lbmethod=bytraffic </Proxy> ProxyPass / balancer://mojeskupina/ ProxyPassReverse / balancer://mojeskupina/ </VirtualHost>
MySQL / MariaDB
Instalační balíček: mariadb-server
Název služby: mariadb
Konfigurace: /etc/mysql/mariadb.conf.d/50-server.cnf
Direktivy konfiguračního souboru:
user datadir bind-address general_log_file
Adresář s databázemi: /var/lib/mysql
MySQL client
Nativní: mysql
, klient napsaný v PHP: Adminer
(dostupný z ovirt).
Použití:
mysql -u username [-p] mysql -h host -u username [-p]
Vytvoření nové databáze lorem:
CREATE DATABASE lorem;
Založení nového uživatele ipsum s právy k databázi lorem, a který se připojuje pouze z místního (localhost) počítače:
GRANT ALL PRIVILEGES ON lorem.* TO ipsum@'localhost' IDENTIFIED BY 'heslo';
nebo uživatel, který se připojuje ze vzdáleného serveru/počítače s IP adresou 10.20.30.111
:
GRANT ALL PRIVILEGES ON lorem.* TO ipsum@'10.20.30.111' IDENTIFIED BY 'heslo';
nebo uživatel, který se může připojit z libovolného serveru/počítače:
GRANT ALL PRIVILEGES ON lorem.* TO ipsum@'%' IDENTIFIED BY 'heslo';
Má-li se uživatel připojit současně z localhostu a vzdáleného PC, je třeba mu tento přístup udělit, tedy příkaz GRANT spustit dvakrát.
MySQL cluster
PHP
Instalační balíček: php
, libapache2-mod-php7.3
(podpora pro Apache)
Název služby: ---
Konfigurace: /etc/php/7.3/apache2/php.ini
Testovací skript:
<?php phpinfo();
Rozšíření PHP:
php-mysql php-zip php-dom php-mbstring php-gd php-curl php-xml
Samba
Instalační balíček: samba
, cifs-utils
Název služby: samba
Konfigurace: /etc/samba/smb.conf
Pomocné příkazy:
testparm smbpasswd [-a] user
Sdílení
[sdileni] path = /cesta/k/adresari browseable = yes|no read only = yes|no valid users = user1 user2 ... @group1 @group2 ... guest ok = yes|no
Koš
V rámci sdílení lze definovat tzv. koš, tj. adresář, kam se budou přesouvat smazané soubory.
vfs objects = recycle recycle:repository = název recycle:keeptree = yes | no recycle:versions = yes | no
Připojení sdílení v Linuxu
Lze příkazem mount nebo přes fstab.
Typ FS (přepínač -t): cifs
Volby připojení (přepínač -o)
username=user password=pass iocharset=utf8 sec=ntlm uid=username credentials=/cesta/k/souboru
Cesta ke sdílení používá běžná lomítka (nikoli zpětná), př: //server/sdileni
.
Běžné použití: mount.cifs -o username=franta,uid=www-data //server/sdileni /mistni/cesta
.
Kde franta je uživatel na datovém serveru a www-data je místní uživatel.
Připojení sdílení z Windows
Provádí se standardně, jako připojení kteréhokoli jiného sdílení v sítích MS Windows.
Je třeba hlídat otevřené relace k serverům a dle potřeby je ukončovat.
NET USE
FTP
Instalační balíček: pure-ftpd
, pure-ftpd-mysql
(s podporou MySQL)
Název služby: pure-ftpd
, pure-ftpd-mysql
Konfigurace: /etc/pure-ftpd/
, /etc/default/pure-ftpd-common
Povolené znaky v přihlašovacím jméně: Povolené znaky v přihlašovacím jméně: A..Z, a..z, 0..9, -, ., _, space, :, @, a '
Konfigurační volby
Podle každé konfigurační volby je pojmenován soubor v /etc/pure-ftpd/conf/
a text v souboru je hodnotou dané volby.
ChrootEveryone (yes | no) NoAnonymous (yes | no) PureDB (/cesta/k/souboru) UnixAuthentication (yes | no)
Podpora MySQL
Nastavení v konfiguračním souboru: /etc/pure-ftpd/db/mysql.conf
Server potřebuje databázi a tabulku, ve které dohledá potřebné údaje k uživateli.
Pokud používáte řádkového klienta, nezapomeňte na příkaz USE databáze
.
Tabulka:
CREATE TABLE `users` ( `User` VARCHAR(16) BINARY NOT NULL, `Password` VARCHAR(64) BINARY NOT NULL, `Uid` INT(11) NOT NULL DEFAULT '-1', `Gid` INT(11) NOT NULL DEFAULT '-1', `Dir` VARCHAR(128) BINARY NOT NULL, PRIMARY KEY (`User`) );
Dotazy
MYSQLGetPW SELECT Password FROM users WHERE User='\L' MYSQLGetUID SELECT Uid FROM users WHERE User='\L' MYSQLGetGID SELECT Gid FROM users WHERE User='\L' MYSQLGetDir SELECT Dir FROM users WHERE User='\L'
Speciální sekvence \L, \I, \P a \R
\L
- přihlašovací jméno\I
- IP adresa serveru (ke které je klient připojen)\P
- číslo portu, ke kterému je klient připojen\R
- IP adresa klienta
Založení uživatele
Pokud používáte řádkového klienta, nezapomeňte na příkaz USE databáze
.
INSERT INTO `users` VALUES ('uživatel', 'heslo', 'uid', 'gid', '/cesta/k/adresáři');
Smazání uživatele
DELETE FROM `users` WHERE `user`='uživatel';
NFS
Instalační balíček: nfs-kernel-server
, nfs-common
Název služby: nfs-kernel-server
Konfigurace: /etc/exports
Pomocné příkazy:
exportfs [-a]
Exporty
/cesta/k/adresari hostname1(volby), hostname2(volba)
Volby
rw
- zápis povolenroot_squash
,no_root_squash
- omezení uživatele rootsync
,async
- synchronní/asynchronní režimsubtree_check
,no_subtree_check
- kontrola podstromu
Klient
Klient si připojí exportovaný adresář příkazem mount
za předpokladu, že má doinstalovaný balíček s podporou nfs.
mount -t nfs server:/cesta/k/adresari /mnt/lokalni/adresar
GlusterFS
Instalační balíček: glusterfs-server
, glusterfs-client
Název služby: glusterd
Službu je třeba povolit: systemctl enable glusterd
a následně spustit systemctl start glusterd
.
Konfigurace: /etc/glusterfs/
, /etc/glusterd/
Pomocné příkazy:
gluster [peer|volume]
U všech serverů a klientů je třeba upravit soubor /etc/hosts
tak, aby bylo možné použít jména na místo IP adres.
Peers
gluster peer status gluster peer probe server gluster peer detach server
Volumes
gluster volume info gluster volume create název replica počet transport tcp server1:/adresář server2:/adresář ... gluster volume start název gluster volume stop název gluster volume delete název
Klient
Pozor! U virtualizace typu LXC (případ ve škole) je potřeba aktivovat zařízení fuse příkazem:
mknod /dev/fuse c 10 229
Klient si připojí volume příkazem mount
za předpokladu, že má doinstalovaný balíček klienta.
mount -t glusterfs server1:/název_volume /mnt/cesta/
NGINX
Instalační balíček: nginx
Název služby: nginx
Konfigurace: /etc/nginx/sites-available
Pro aktivaci nastavení daného virtuálního hosta je třeba vytvořit symlink do adresáře sites-enabled
ln -s /etc/nginx/sites-available/mujhost /etc/nginx/sites-enabled/
Proxy
server { listen 80; server_name sluzba.cloud; location / { proxy_pass http://app:8000/; } }
Proxy balancer
upstream mujcloud { server srv1.example.com; server srv2.example.com; server srv3.example.com; } server { listen 80; server_name sluzba.cloud; location / { proxy_pass http://mujcloud; } }
Proxy timeout problém
proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600;