Wyszukiwanie w witrynie

Zainstaluj serwer internetowy Caddy na Rocky/AlmaLinux 9|8


Caddy to potężna, przyjazna dla użytkownika i open source'owa platforma internetowa używana do obsługi stron internetowych, aplikacji i usług. Caddy jest napisany w języku programowania Go, co sprawia, że jest jednym z najszybszych serwerów internetowych na rynku open source. Skupia się na bezpieczeństwie, wydajności i łatwości użytkowania, i może być używany zarówno do prostych projektów, takich jak proste strony statyczne, jak i do hostowania bardziej złożonych aplikacji internetowych.

Dlaczego warto używać serwera Caddy

  • Automatyczne HTTPS: Caddy automatycznie generuje i odnawia certyfikaty SSL/TLS dla Twoich stron internetowych.
  • Jej prostota: Caddy został zaprojektowany według zasady „prosto i łatwo”. Używa jednego, prostego i czytelnego dla człowieka pliku konfiguracyjnego nazwanego Caddyfile
  • Super Wydajność: Caddy został zaprojektowany tak, aby używać minimalnych zasobów sprzętowych, jednocześnie będąc szybkim i efektywnym
  • Modułowa architektura: Możesz rozszerzać funkcje serwera WWW Caddy za pomocą wtyczek i rozszerzeń
  • Wsparcie dla wielu platform: Caddy może działać na Linux, Windows, macOS lub wewnętrznych kontenerach takich jak Docker/Podman
  • Duża społeczność: Caddy cieszy się aktywną i wspierającą społecznością, która jest gotowa pomóc Ci na początku.

W kolejnych sekcjach przyjrzymy się, jak zainstalować, skonfigurować i używać serwera internetowego Caddy w systemach Rocky Linux/AlmaLinux lub CentOS Stream. Aby ten poradnik był praktyczny i dynamiczny, będziemy hostować stronę WordPress z bazą danych MariaDB. Do tego poradnika używamy domeny blog.cloudlabske.com.

Zainstaluj serwer internetowy Caddy

Aby zainstalować serwer WWW Caddy na maszynie z Rocky/AlmaLinux/CentOS Steam Linux, musimy zainstalować copr w naszym systemie:

sudo dnf -y install 'dnf-command(copr)'

Włącz repozytorium caddy za pomocą copr:

sudo dnf copr enable @caddy/caddy

Naciśnij klawisz y na klawiaturze, gdy zostaniesz o to poproszony:

Enabling a Copr repository. Please note that this repository is not part
of the main distribution, and quality may vary.

The Fedora Project does not exercise any power over the contents of
this repository beyond the rules outlined in the Copr FAQ at
<https://docs.pagure.org/copr.copr/user_documentation.html#what-i-can-build-in-copr>,
and packages are not held to any quality or security level.

Please do not file bug reports about these packages in Fedora
Bugzilla. In case of problems, contact the owner of this repository.

Do you really want to enable copr.fedorainfracloud.org/@caddy/caddy? [y/N]: y
Repository successfully enabled.

Po włączeniu repozytorium zainstaluj serwer internetowy Caddy w swoim systemie:

sudo dnf -y install caddy

Możesz uzyskać dodatkowy pakiet informacji za pomocą rpm lub dnf

sudo dnf info caddy
# OR
rpm -qi caddy

Domyślny plik konfiguracyjny serwera Caddy znajduje się w /etc/caddy/Caddyfile. Możesz sprawdzić jego zawartość:

cat /etc/caddy/Caddyfile

Aby uruchomić usługę, użyj polecenia systemctl:

sudo systemctl start caddy

Włącz usługę, aby uruchamiała się przy starcie systemu.

sudo systemctl enable caddy

Sprawdzanie statusu usługi:

$ systemctl status caddy
● caddy.service - Caddy
   Loaded: loaded (/usr/lib/systemd/system/caddy.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2024-08-02 17:43:26 UTC; 39s ago
     Docs: https://caddyserver.com/docs/
 Main PID: 42001 (caddy)
    Tasks: 7 (limit: 48750)
   Memory: 20.0M
   CGroup: /system.slice/caddy.service
           └─42001 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile

Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.719293,"msg":"adapted config to JSON","adapter":"caddyfile"}
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7204406,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019",">
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"warn","ts":1722620606.7205217,"logger":"http.auto_https","msg":"server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server>
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7206764,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7208471,"msg":"autosaved config (load with --resume flag)","file":"/var/lib/caddy/.config/caddy/autosave.json"}
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7209103,"msg":"serving initial configuration"}
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7212656,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc000488e00"}
Aug 02 17:43:26 rocky8.computingforgeeks.com systemd[1]: Started Caddy.
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7246072,"logger":"tls","msg":"cleaning storage unit","storage":"FileStorage:/var/lib/caddy/.local/share/caddy"}
Aug 02 17:43:26 rocky8.computingforgeeks.com caddy[42001]: {"level":"info","ts":1722620606.7248337,"logger":"tls","msg":"finished cleaning storage units"}

Hosting WordPress przy użyciu serwera WWW Caddy

Zainstalujmy PHP w Twoim systemie.

sudo dnf -y install @php

Zainstaluj również inne niezbędne rozszerzenia PHP.

sudo dnf install php-{cli,fpm,mysqlnd,zip,gd,mbstring,curl,xml,pear,bcmath,json}

Ustaw użytkownika caddy jako właściciela gniazda FPM.

$ sudo vim /etc/php-fpm.d/www.conf
user = caddy
group = caddy
listen = /run/php-fpm/www.sock
listen.owner = caddy
listen.group = caddy
listen.mode = 0660
listen.acl_users = apache,nginx,caddy

Uruchom i włącz usługę PHP FPM.

sudo systemctl enable --now php-fpm

Zainstaluj serwer bazy danych MariaDB.

sudo dnf -y install @mariadb
sudo systemctl enable --now mariadb
sudo mysql -u root

Utwórz bazę danych dla swojej strony WordPress:

CREATE DATABASE wp_db;
GRANT ALL PRIVILEGES ON wp_db.* to 'wp_user'@'localhost' IDENTIFIED BY 'DBStr%ngPassw0rd';
FLUSH PRIVILEGES;
EXIT

Pobierz WordPressa, rozpakuj i przenieś folder wordpress do /var/www

wget wordpress.org/latest.tar.gz
tar xvf latest.tar.gz
sudo mv wordpress /var/www
sudo cp  /var/www/wordpress/wp-config-sample.php  /var/www/wordpress/wp-config.php 

Skonfiguruj połączenie z bazą danych WordPress

$ sudo vim /var/www/wordpress/wp-config.php
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wp_db' );

/** Database username */
define( 'DB_USER', 'wp_user' );

/** Database password */
define( 'DB_PASSWORD', 'DBStr%ngPassw0rd' );

/** Database hostname */
define( 'DB_HOST', 'localhost' );

Ustaw uprawnienia do katalogu dla użytkownika caddy:

sudo chown -R caddy:caddy /var/www/wordpress/

Skonfiguruj Caddy dla WordPress

Otwórz plik konfiguracyjny Caddy, aby go edytować

sudo vim /etc/caddy/Caddyfile

Zmodyfikuj poniższe konfiguracje, aby pasowały do Twojego środowiska. Zmień domenę blog.cloudlabske.com, nazwę użytkownika administratora

blog.cloudlabske.com {
	tls [email 
	log {
		output file /var/log/caddy/wordpress.log
		format console
	}

	root * /var/www/wordpress
	encode gzip
	file_server
	php_fastcgi unix//run/php-fpm/www.sock

	@disallowed {
		path /xmlrpc.php
		path *.sql
		path /wp-content/uploads/*.php
	}

	rewrite @disallowed '/index.php'
}

Utwórz katalog dziennika.

sudo mkdir /var/log/caddy/
sudo chown -R caddy:caddy  /var/log/caddy/

Potwierdź, że składnia Twoich konfiguracji jest poprawna:

$ sudo caddy validate --config /etc/caddy/Caddyfile
2024/08/03 07:25:16.349	INFO	using config from file	{"file": "/etc/caddy/Caddyfile"}
2024/08/03 07:25:16.351	INFO	adapted config to JSON	{"adapter": "caddyfile"}
2024/08/03 07:25:16.351	INFO	http.auto_https	server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS	{"server_name": "srv0", "https_port": 443}
2024/08/03 07:25:16.351	INFO	http.auto_https	enabling automatic HTTP->HTTPS redirects	{"server_name": "srv0"}
2024/08/03 07:25:16.351	WARN	http.auto_https	server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server	{"server_name": "srv1", "http_port": 80}
2024/08/03 07:25:16.351	INFO	tls.cache.maintenance	started background certificate maintenance	{"cache": "0xc000157680"}
2024/08/03 07:25:16.352	INFO	tls.cache.maintenance	stopped background certificate maintenance	{"cache": "0xc000157680"}

Uruchom ponownie serwer internetowy Caddy, gdy potwierdzisz, że konfiguracja jest poprawna.

sudo systemctl restart caddy

Sprawdź status usług Caddy i poszukaj linii związanych z generowaniem SSL. Zwróć uwagę na pomyślne wygenerowanie certyfikatu Let’s Encrypt:

$ systemctl status caddy
● caddy.service - Caddy
   Loaded: loaded (/usr/lib/systemd/system/caddy.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2024-08-03 07:23:34 UTC; 5s ago
     Docs: https://caddyserver.com/docs/
 Main PID: 45140 (caddy)
    Tasks: 7 (limit: 48750)
   Memory: 19.6M
   CGroup: /system.slice/caddy.service
           └─45140 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile

Aug 03 07:23:36 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669816.0895815,"logger":"tls.issuance.acme","msg":"served key authentication","identifier":"blog.cloudlabske.com","challenge":"http-01","remote">
Aug 03 07:23:36 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669816.2393315,"logger":"tls.issuance.acme","msg":"served key authentication","identifier":"blog.cloudlabske.com","challenge":"http-01","remote">
Aug 03 07:23:36 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669816.3801627,"logger":"tls.issuance.acme","msg":"served key authentication","identifier":"blog.cloudlabske.com","challenge":"http-01","remote">
Aug 03 07:23:36 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669816.7106369,"logger":"tls.issuance.acme.acme_client","msg":"authorization finalized","identifier":"blog.cloudlabske.com","authz_status":"vali>
Aug 03 07:23:36 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669816.7106667,"logger":"tls.issuance.acme.acme_client","msg":"validations succeeded; finalizing order","order":"https://acme-v02.api.letsencryp>
Aug 03 07:23:37 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669817.3649049,"logger":"tls.issuance.acme.acme_client","msg":"got renewal info","names":["blog.cloudlabske.com"],"window_start":1727765075,"win>
Aug 03 07:23:37 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669817.666609,"logger":"tls.issuance.acme.acme_client","msg":"got renewal info","names":["blog.cloudlabske.com"],"window_start":1727765075,"wind>
Aug 03 07:23:37 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669817.6666691,"logger":"tls.issuance.acme.acme_client","msg":"successfully downloaded available certificate chains","count":2,"first_url":"http>
Aug 03 07:23:37 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669817.6672106,"logger":"tls.obtain","msg":"certificate obtained successfully","identifier":"blog.cloudlabske.com","issuer":"acme-v02.api.letsen>
Aug 03 07:23:37 rocky8.cloudspinx.com caddy[45140]: {"level":"info","ts":1722669817.6673443,"logger":"tls.obtain","msg":"releasing lock","identifier":"blog.cloudlabske.com"}

Uzyskaj dostęp do witryny WordPress pod adresem http://yourdomain, a powinna ona automatycznie przekierować na https://yourdomain

Dowiedz się więcej na oficjalnej stronie przewodnika Rozpoczęcie pracy.