Как использовать MariaDB и MySQL в веб-приложениях

Как использовать MariaDB и MySQL в веб-приложениях

22 марта 2023 г.

MariaDB и mySQL — это популярные базы данных с открытым исходным кодом, которые имеют много общих функций и синтаксиса, учитывая их общие корни. В последние годы расхождение между ними увеличивается, хотя по большей части они все еще взаимозаменяемы. В этой статье речь пойдет о MariaDB, так как она включена практически во все дистрибутивы Linux. Однако это также должно быть применимо и к MySQL. п

Подключение к базе данных

Существует несколько способов подключения к MariaDB/mySQL, но самый быстрый способ подключения — через родную библиотеку C. Есть несколько аспектов, которые следует учитывать при выборе способа доступа к MariaDB/mySQL (и не только):

* Используете ли вы для подключения только нативные библиотеки, так как они быстрее, чем те, у которых есть слои абстракций поверх них, которые замедляют доступ? * Является ли соединение с базой данных постоянным? Это означает, что клиентское соединение остается открытым между запросами или оно подключается и отключается каждый раз, когда ему требуется доступ к базе данных? * Поддерживаются ли подготовленные заявления? Подготовленные операторы во многих случаях ускоряют доступ к SQL, поскольку сервер не анализирует оператор SQL каждый раз. п

Когда вы выбираете инфраструктуру доступа к базе данных, постарайтесь выяснить, получите ли вы хотя бы несколько положительных ответов на эти вопросы. Здесь я буду использовать Vely, для которого ответ "да" по всем трем пунктам выше. п

Предпосылки

Сначала установите MariaDB. Я также буду использовать Apache в качестве веб-сервера для доступа к базе данных из веб-браузера, поэтому также установите Apache - если он еще не настроен, вам может потребоваться настроить брандмауэр, чтобы разрешить HTTP-трафик (см. ufw , firewall-cmd и т. д.). И, наконец, установите Vely, который будет сервером приложений, расположенным между веб-сервером и базой данных. n n Вы также можете установить mySQL, и все шаги должны быть такими же.

Настройка базы данных

Войдите как пользователь root в утилиту "mysql" и выполните следующее: n

create database if not exists db_people;
create user if not exists vely identified by 'your_password';
grant create,alter,drop,select,insert,delete,update on db_people.* to vely;
use db_people;
create table if not exists people_list (first_name varchar(30), last_name varchar(40));
exit

Здесь вы создадите базу данных "db_people" и пользователя "vely". Вы можете изменить их имена, как хотите, но не забудьте изменить их везде здесь. Затем вы дадите пользователю "vely" права доступа к собственной базе данных "db_people" и сможете создавать объекты, данные и т.д. n n Наконец, в этой базе данных создается таблица "people_list" - это очень просто с первым и последним имя. Вот и все, что касается настройки базы данных.

Доступ к базе данных

Чтобы получить доступ к вашей базе данных (на самом деле к любой базе данных), вам понадобится database_config_file. Этот файл просто указывает такие вещи, как метод доступа к базе данных, имя пользователя и пароль и так далее. Для этого создайте файл конфигурации базы данных «люди». Вы можете назвать этот файл как угодно, но имейте в виду, что его имя используется в коде для ссылки на базу данных, поэтому, если вы его измените, измените его и в приведенном ниже коде. Создать файл "люди": n

[client]
user=vely
password=your_password
database=db_people
protocol=TCP
host=127.0.0.1
port=3306

На самом деле это собственный файл конфигурации клиента MariaDB, поэтому изучение его формата может помочь вам и в других местах. Раздел «[client]» означает, что это информация, необходимая клиенту для подключения. Затем вы должны указать имя пользователя MariaDB (который является пользователем «vely», которого мы создали выше), затем пароль («ваш_пароль», конечно, вы можете указать свой собственный) и имя базы данных «db_people» — опять же, это база данных, которую мы уже создали. n n Остальное в значительной степени является методом связи с базой данных по умолчанию — MariaDB из коробки будет прослушивать TCP-порт 3306 на локальном хосте. Если вы изменили что-то из этого, то вы должны изменить это и здесь. Теперь ваш код может оценить базу данных.

Код

Создайте файл "list_people.vely" и скопируйте в него это: n

#include "vely.h"

void list_people() {
    out-header default

    @List of people:<hr/>

    run-query @people = "select first_name, last_name from people_list" output define f_name, l_name
        @First name <<p-out f_name>>, last name <<p-out l_name>><br/>
    end-query
}

При этом будет запущен запрос со списком имен и фамилий всех участников. Запрос будет использовать файл конфигурации «люди», который вы создали ранее (обратите внимание на «@people»). А выходные столбцы перейдут к строковым переменным (например, «char») с именами «f_name» и «l_name» — эти переменные создаются на месте с помощью предложения «define» выполнить-запрос. Вы также можете использовать подготовленные операторы SQL, используя оператор «run-prepared-query» вместо «run-query» в приведенном выше коде. n n И "@"output_statement отправляет данные на стандартный вывод, который может быть фактическим потоком "stdout", если он собирается быть программой командной строки или в браузер, если это веб-приложение. Самое приятное, что это работает одинаково для обоих. Оператор p-out выводит строку, а при размещении между << и >> он "встроен" в оператор вывода.

Создать и сделать приложение

Приступая к работе с приложением Vely, вы должны сначала создать его с помощью менеджера программ vf: n

sudo vf -i -u $(whoami) people_app

Опция "-i" говорит о создании приложения. Параметр "-u" указывает, какой пользователь будет им владеть, в данном случае это "$(whoami)", что на языке Linux означает "пользователь, вошедший в систему в данный момент". И, наконец, имя приложения — «people_app». n n Чтобы создать приложение, используйте инструмент vv: n

vv -q --db='mariadb:people'

Это собирает все файлы .vely в текущем каталоге (в данном случае только один), обрабатывает все операторы Vely (например, запуск-запрос) в код C, а затем компилирует и связывает все это вместе в собственное приложение. Обратите внимание на опцию «--db='mariadb:people'» — она указывает, что ваша программа использует базу данных с именем «люди», а поставщиком базы данных является MariaDB или mySQL. У вас может быть любое количество баз данных и любое количество поддерживаемых поставщиков. n n Будут созданы два исполняемых файла, оба в каталоге "/var/lib/vv/bld/people_app". Обратите внимание на подкаталог «people_app» — он соответствует имени вашего приложения, созданного выше. Этот каталог похож на блокнот для вашего приложения, здесь находится весь сгенерированный код. Один созданный исполняемый файл будет «people_app», который вы можете запустить из командной строки. Другой — «people_app.fcgi», который вы можете запустить как сервер приложений FastCGI, который является веб-приложением. В этой статье вы будете использовать оба варианта.

Вставьте некоторые данные

Для начала вам потребуются некоторые данные для запроса. Для этого сначала вставьте некоторые данные. Войдите в базу данных с ранее созданными учетными данными пользователя (измените «ваш_пароль», если вы меняли пароль): n

mysql -u vely -pyour_password

а затем выполните этот SQL: n

use db_people;
insert into people_list (first_name, last_name) values ("Timothy", "McMillan"), ("Tina", "Clark");
commit;
exit;

Теперь в вашей базе данных есть два человека, Тимоти и Тина.

Запуск из командной строки

Выполнить вашу программу: n

export REQUEST_METHOD=GET
export SCRIPT_NAME="/people_app"
export PATH_INFO="/list_people"
export VV_SILENT_HEADER="yes"
/var/lib/vv/bld/people_app/people_app

Вы получите: n

List of people:<hr/>
First name Timothy, last name McMillan<br/>
First name Tina, last name Clark<br/>

Vely использует стандартные HTTP-запросы. Таким образом, даже когда вы запускаете программу командной строки, она делает это, получая HTTP-запрос. Вот почему существует метод запроса («GET»), имя сценария (которое является путем к имени приложения «people_app») и информация о пути (это путь к обработчику запроса «list_people», т. е. ваш код выше). Это позволяет очень легко создавать программы как для командной строки, так и для веб-исполнения, потому что они одинаковы. Вам не нужно писать две базы кода, и вы отлаживаете только один раз. Кроме того, вы можете делать в командной строке практически все, что вы можете делать в Интернете, поэтому вы можете написать свою программу, даже не настроив веб-сервер. n n Обратите внимание на переменную среды VV_SILENT_HEADER — она подавляет вывод заголовка HTTP. Если бы его не было, вы бы получили HTTP-заголовок, тот же, что и браузер. Мы сделаем это дальше.

Настройка Apache для доступа в Интернет

В этой статье вы будете использовать веб-сервер Apache. Apache поддерживает FastCGI, как и большинство (если не все) основных веб-серверов. Apache очень модульный, поэтому эта поддержка (как и многие его функции) должна быть включена. Для этого следуйте инструкциям по настройке Apache для доступа к Vely. Обратите внимание, что на шаге 3 и оба являются "people_app" (т. е. такими же, как имя приложения), поэтому ProxyPass будет таким: n < /приложение>

ProxyPass "/people_app" unix:///var/lib/vv/people_app/sock/sock|fcgi://localhost/people_app

Директива «ProxyPass» сообщает Apache, что любой URL-адрес, начинающийся с «/people_app», будет обслуживаться вашим приложением «people_app». Как оно это делает? Обратите внимание на путь «/var/lib/vv/people_app/sock/sock» выше — это файл сокета Unix, созданный Vely, чтобы позволить другому программному обеспечению (например, Apache) взаимодействовать с вашим приложением. Это сверхбыстрый способ связи, который обычно используется приложениями, работающими на одном хосте, поскольку он напрямую поддерживается ядром Linux.

Запустите сервер приложений

Для запуска из браузера сначала запустите сервер приложений: n

vf -w 2 people_app

Это запустит 2 процесса демона для обслуживания запросов. Эти запросы поступают из браузера (или другого сервера), проходят через веб-сервер Apache к вашему приложению Vely, а затем обратно. С диспетчером программ vf у вас есть много возможностей для эффективной работы вашего сервера.

Запускать из браузера

Скопируйте этот URL-адрес в свой браузер (при условии, что ваш сервер находится на вашем собственном локальном компьютере; если нет, замените «127.0.0.1» на ваш веб-адрес): n

http://127.0.0.1/people_app/list_people

Вы должны получить точно такой же ответ, как и выше, при запуске из командной строки, например: n n

Заключение

Подключиться к MariaDB/mySQL несложно. В этой статье объясняется, как это сделать простым способом, который вы можете настроить в соответствии со своими потребностями.

Правообладатель иллюстрации (c) Sergio Mijatovic 2023 n

:::информация Также опубликовано здесь.

:::


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE