Caddy Web Server и установка на него PHP и MySQL

Категория: веб разработка

Caddy это отличный опенсорсный веб сервер, который начинает набирать популярность. Написан этот веб сервер на языке программирования Go, и поэтому память используется в этом веб сервере немного лучше чем в аналогах написанных на C.

Адептов у Caddy становится всё больше и поэтому игнорировать этот замечательный веб сервер просто невозможно, ведь многие веб разработчики попробовав Caddy уже просто не могут вернуться на старые веб сервера.

Caddy по умолчанию работает с HTTPS и самостоятельно без проблем обновляет сертификат безопасности, что уже делает этот веб сервер очень конкурентным по сравнению с другими.

Caddy работает со статическими файлами и из коробки может работать как прокси или динамический сервер.

И так когда у вас уже есть представление о веб сервере  Caddy я опишу установку на него PHP, MariaDB (MySQL) на платформе Ubuntu 20.04

Для работы вам нужен VPS или VDS с Ubuntu 20.04 на борту или версией старше.

И уже зарегистрированным доменным именем, которое указывает на ваш веб сервер, который вы собираетесь настраивать.

Перво наперво нужно настроить Firewall:

sudo ufw status

Мы увидим что-то вроде:

Status: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

Теперь нужно разрешить http и https:

sudo ufw allow http
sudo ufw allow https

Проверяем статус:

sudo ufw status
Status: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)

Теперь устанавливаем Caddy:

echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" | sudo tee -a /etc/apt/sources.list.d/caddy-fury.list
sudo apt update

sudo apt install caddy

Таким образом установится Caddy и в браузере вы увидите об успехе установки.

Теперь устанавливаем PHP.

sudo add-apt-repository ppa:ondrej/php

sudo apt install php-cli php-fpm php-mysql

php --version

Вывод будет выглядеть:

PHP 7.4.6 (cli) (built: May 14 2020 10:03:35) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.6, Copyright (c), by Zend Technologies

Теперь устанавливаем MariaDB:

sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64] http://mirror.lstn.net/mariadb/repo/10.4/ubuntu f
ocal main'

sudo apt install mariadb-server

mysql --version

В ответ вы увидите что-то вроде:

mysql Ver 15.1 Distrib 10.4.13-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Включаем MariaDB:

sudo systemctl enable mariadb

Далее настраиваем базу данных:

sudo mysql_secure_installation

В ответ увидите установочный процесс:

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): [PRESS ENTER]
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] [PRESS ENTER]
Enabled successfully!
Reloading privilege tables..
... Success!

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] [ANSWER n]
... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] [PRESS ENTER]
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] [PRESS ENTER]
... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] [PRESS ENTER]
\- Dropping test database...
... Success!
\- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] [PRESS ENTER]
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Логинимся в базу данных:

sudo mysql

Создаём базу данный и пользователя:

CREATE DATABASE testdb;
CREATE USER 'user' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON testdb.* TO 'user';

Выходим из базы данных:

exit

Настраиваем Caddy:

Создаём директорию под наш с вами сайт:

sudo mkdir -p /var/www/example.com/html

Создаём директорию под логи:

sudo mkdir /var/log/caddy

даём разрешения:

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

Открываем файл с настройками Caddy:

sudo nano /etc/caddy/Caddyfile

В файле мы увидем нечто вроде:

# The Caddyfile is an easy way to configure your Caddy web server.
#
# Unless the file starts with a global options block, the first
# uncommented line is always the address of your site.
#
# To use your own domain name (with automatic HTTPS), first make
# sure your domain's A/AAAA DNS records are properly pointed to
# this machine's public IP, then replace the line below with your
# domain name.
:80

# Set this path to your site's directory.
root * /usr/share/caddy

# Enable the static file server.
file_server

# Another common task is to set up a reverse proxy:
# reverse_proxy localhost:8080

# Or serve a PHP site through php-fpm:
# php_fastcgi localhost:9000

# Refer to the Caddy docs for more information:
# https://caddyserver.com/docs/caddyfile

:80 говорит веб серверу работать на порту 80 и как обычный статический файл сервер, а значит меняем это всё дело на:

{
experimental_http3
}
example.com {
root * /var/www/example.com/html
log {
output file /var/log/caddy/example.com.access.log {
roll_size 3MiB
roll_keep 5
roll_keep_for 48h
}
format console
}
encode gzip zstd
php_fastcgi unix//run/php/php7.4-fpm.sock

tls [email protected] {
protocols tls1.2 tls1.3
}
}

Теперь дело за PHP:

Лезем в настроечный файл PHP:

sudo nano /etc/php/7.4/fpm/pool.d/www.conf

И меняем нужные значения на Caddy:

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = caddy
; RPM: Keep a group allowed to write in log dir.
group = caddy
...

и не забудьте про эти строчки:

listen.owner = caddy
listen.group = caddy

Перезагружаем модуль PHP:

sudo systemctl restart php7.4-fpm

Запускаем проверочный веб сайт:

перезапускаем Caddy:

sudo systemctl restart caddy

проверяем статус:

sudo systemctl status caddy

Проверяем работу PHP:

sudo nano /var/www/example.com/html/test.php

И уже в этот файл вставляем

<html>
<head>
<title>Caddy Demo Site</title>
<style type="text/css">
#wrap {
width: 900px;
margin: 0 auto;
}
</style>
</head>
<body id="wrap">
<h2>Caddy Demo Site</h2>
<?php echo '<p>Hello,</p>';

// Определяем PHP переменные для MySQL соединения.
$servername = "localhost";
$username = "user";
$password = "password";

// Создаём MySQL соединение.
$conn = mysqli_connect($servername, $username, $password);

// Отлавливаем ошибки.
if (!$conn) {
exit('<p>Ошибка соединения.<p>' . mysqli_connect_error());
}
echo '<p>Соединение успешно.</p>';
?>
</body>
</html>

Сохраняем это всё дело и проверяем в браузере:

https://example.com/test.php

Если мы видим, что всё работает, то удаляем проверочный файл.

sudo rm /var/www/example.com/html/test.php

Надеюсь вам поможет этот маленький мануал по веб серверу Caddy.





Если вам нужен по настоящему хороший и профессиональный веб хостинг или свой высокопроизводительный сервер, то смело переходите по ссылке и заказывайте!

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *



Карта сайта
Copyright © 2024