Jak mohu nainstalovat Apache2, php, mysql a nastavit jej pomocí virtuálních hostitelů a nejlépe Let’s Encrypt SSL certifikátu a poté na něj pokračovat v instalaci WordPressu?
Přijatá odpověď:
Předpokládám, že máte spuštěnou instalaci Ubuntu. Toto je napsáno s ohledem na 16.04, ale mělo by fungovat i s některými úpravami na jiných verzích.
V této odpovědi #
označuje kořenový shell, zatímco $
označuje normální uživatelský shell.
example.org je v této odpovědi použit jako příklad (D’oh) a měl by být změněn tak, aby vyhovoval vaší instalaci.
Instalace Apache2, PHP, MariaDB a tak dále
$ sudo apt install apache2 libapache2-mod-php mariadb-server php-mysql
Tím se nainstaluje Apache2, PHP, MariaDB a některé závislosti kromě vazeb PHP pro přístup k mysql.
V této fázi byste měli mít přístup k http://example.org a měli byste vidět výchozí stránku:
Nastavení vhost
Vhosts jsou virtuální hostitelé, kteří se používají k poskytování různého obsahu pro různé názvy domén.
Začněte upravovat nový soubor s názvem /etc/apache2/sites-available/01-example.org.conf
ve vašem oblíbeném editoru:
$ sudo editor /etc/apache2/sites-available/01-example.org.conf
Zadejte následující konfiguraci:
<VirtualHost *:80>
ServerName example.org
ServerAlias www.example.org
ServerAdmin [email protected]
DocumentRoot /var/www/html/example.org/
ErrorLog ${APACHE_LOG_DIR}/example.org.error.log
CustomLog ${APACHE_LOG_DIR}/example.org.access.log combined
</VirtualHost>
Nejprve definujeme primární ServerName. Toto je doména používaná pro přístup k webu. Pro každý vhost může být definován pouze jeden. Kromě toho definujeme ServerAlias pro případ, že někdo zadá do svého prohlížeče www.example.org. To zajišťuje, že Apache odpovídá na obě jména. Oba názvy musí ukazovat na váš server, buď v DNS, nebo v /etc/hosts
pro místní testování.
Lze zadat libovolný počet aliasů serveru, které nemusí obsahovat části ServerName. Tedy ServerAlias example.com
by bylo platné.
Vytvořte nový DocumentRoot
Umístil jsem nový kořenový adresář dokumentu do /var/www/html/example.org
. Toto je umístění, které může obsluhovat Apache v Ubuntu. Kdybych to například umístil do /srv/
, musel bych k tomu zahrnout stanzu Directory. Prozatím vytvořte webroot, naplňte jej nějakým obsahem a aktivujte novou konfiguraci:
$ sudo mkdir /var/www/html/example.org
$ echo "This is a test" | sudo tee /var/www/html/example.org/index.html
$ sudo a2ensite 01-example.org.conf
$ sudo service apache2 reload
Pokud nyní navštívíte http://example.org, měli byste vidět výstup *Toto je test“. Gratulujeme! Váš první vhost běží!
Nainstalovat letsencrypt a získat certifikáty
Abychom mohli přijímat certifikáty od Let’s Encrypt, potřebujeme klienta. Balíček letsencrypt obsažený v 16.04 je starý, takže na to potřebujeme ppa.
$ echo "deb http://ppa.launchpad.net/certbot/certbot/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/01-certbot.list
$ sudo add-apt-key -k keyserver.ubuntu.com 8C47BE8E75BCA694
$ sudo apt update && sudo apt install certbot python3-certbot-apache
Spusťte certbot jako root:
$ sudo certbot
Vyberte doménu, pro kterou chcete získat certifikát, a postupujte podle pokynů na obrazovce certbota. Až budete dotázáni, zda chcete přesměrovat, vyberte přesměrování, pokud chcete pouze https, a žádné přesměrování, pokud chcete HTTP i https. Dnes už není téměř žádný důvod nepřesměrovávat.
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Zkuste znovu navštívit http://example.com – měl by se změnit, aby ukazoval, že je zabezpečený.
Související:Jak zlepšit rychlost spouštění v Ubuntu?Gratulujeme, nenastavili jste apache2 s platným certifikátem TLS, který zajišťuje šifrování provozu!
Nainstalujte si WordPress
Dalším krokem je instalace nějaké aplikace. Jako příklad k instalaci jsem vybral WordPress.
Nejprve se staňte rootem zadáním sudo -i
. Dále změňte adresář na svůj webroot a stáhněte, rozbalte a změňte vlastnictví na uživatele Apache:
$ sudo -i
# cd /var/www/html/example.org/
# wget https://wordpress.org/latest.tar.gz
# tar -zxf latest.tar.gz && rm latest.tar.gz
# chown -R www-data.www-data wordpress/
Nyní budete mít instanci WordPressu na https://example.com/wordpress/ – pojďme tam.
Průvodce vám řekne, že potřebujete tabulku MySQL, uživatele a heslo. Pojďme je vyrobit!
Ve výchozím nastavení bude Ubuntu používat autentizaci soketu unix pro MariaDB. Chcete-li se tedy přihlásit do MariaDB jako root, musíte použít
sudo mysql -u root
nebo spusťte příkaz v kořenovém prostředí (například sudo -i
). Tím se přihlásíte bez zadání jakéhokoli hesla
# mysql -u root
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MariaDB connection id is 32
Server version: 10.0.33-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE wordpress_db;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON `wordpress_db`.* TO 'wordpress_user'@'localhost' IDENTIFIED BY 'passw0rd';
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> exit
Vyplňte uživatelské jméno wordpress_user
, název databáze wordpress_db
a heslo passw0rd
v konfiguraci WordPressu. To je v podstatě vše; zbytek je o dodržování pokynů pro instalaci WordPress.
Chcete-li přidat další vhost, jednoduše začněte od “Nastavení vhost”.
Další čtení
- Moduly Apache – zakázání a povolení
- Spuštění certbota od cronu k automatickému obnovení certifikátů
- Příručka pro mod_rewrite, běžně používaný modul Apache
- Oprávnění k souboru
/var/www/html
- Uživatelská příručka Certbot