Впевнений що багато з присутніх знають як це робиться. Але дехто можливо ні, або просто руки не дійшли.
Я сам починаю лише розбиратись у використанні баз даних, це поле діяльності досить цікаве і має майбутнє.
Дуже багато аплікацій в Інтернеті використовують або побудовані на вершечку баз даних. Це дозволяє якісніше організовувати інформацію, і ефективніше її вилучати при потребі. Одна з найпоширеніших і найпопулярніших середніх по ємкості БД , це MySQL (
http://www.mysql.com/).
Для тих хто знаходився у танку, бази даних програмуються, це теж своєрідна мова програмування, досить цікава до того ж. Документацію ви знайдете тут:
http://dev.mysql.com/doc/).
Такі мови як Perl, Python, PHP та інші, мають власні інтерфейси для взаємодії з базами даних.
Якщо ви зайдете на
http://cpan.org, ви знайдете масу модулів пов'язаних із MySQL. Також існує багато документації по Perl DBI прогамуванню в Інтернет, лише введіть "perl dbi" у той самий Гугль (
http://dbi.perl.org/).
Існує два підходи до вивчення чогось, можна сидіти і "зубрити" щось всліпу, а можна одночасно "have some fun".
Саме забавній частині цього процесу ця замітка і присвячується.
Щоб ознайомитись з MySQL, нам потрібно для початку встановити її. Кожний Лінуск та BSD дистрибутив має в своїй базі пакетів mysql-client та mysql-server. Нам потрібні обидва. Отже встановіть їх, якщо вони у вас не були встановленими.
В цьому конкретному допису піде мова про Perl (PHP та Python надіюсь вибачать). Два стандарні модулі що дозволяють взаємодію із MySQL, це DBI DBD-mysq .
Встановлюємо їх:
$ su
# perl -MCPAN -e shell
cpan> i DBI
Distribution C/CA/CAPTTOFU/DBD-mysql-3.0002.tar.gz
...
cpan> i C/CA/CAPTTOFU/DBD-mysql-3.0002.tar.gz
cpan> install Bundle::DBI
.... (встановлює набір модулів)
cpan> i /DBD-mysql/
Distribution C/CA/CAPTTOFU/DBD-mysql-3.0002.tar.gz
cpan> install DBD::mysql
....
Якщо DBD::mysql видасть помилку про неможливість під'єнатися до mysql локального сервера, скомандуйте:
cpan> force install DBD::mysql
cpan> quit
Щодо чата. В Інтернеті існує багато Perl, PHP, Python скриптів, одні кращі, інші гірші, деякі складні, що туди навіть і не сунешся, інші простенькі "chatbox". Мені сподобався Ralf's Chat (
http://ralfchat.sourceforge.net/). Хоча це й не найкрутіший скрипт, але мені він видався не занадто ускладненим, при стандатрному наборі функціональності. Можливо існує і щось краще, але зупинимся на ньому.
Стягуємо його:
wget
http://citkit.dl.sourceforge.net/sourceforge/ralfchat/ralfchat-1.2.1.tar.gzМожна розпакувати і передивитись що в ньому знаходиться, перечитати Readme.txt.
Передбачаю що у вас встановлений Apache. Розпаковуємо ralfchat-1.2.1.tar.gz у верхню директорію сервера, у мене це /var/www, поряд із cgi-bin:
# cd /var/www
# tar xvzf /home/tech/ralfchat-1.2.1.tar.gz
# mv ralfchat-1.2.1.tar.gz
rchat# cd rchat ; ls
Можете видалити Readme.txt, CVS.
# chmod -R 755 *.cgi
# chmod -R 755 *.pl
Отже, все у нас встановлено, час піднімати mysql базу даних а потім прив'язувати чат до неї.
MySQL:
Щоб добитися базової функціональності, я подам спрощені інструкції. Добре якщо ви все-таки переглянете документацію до свого релізу, особливо стосовно захисту бази даних і прав її користувачів. Не хочу щоб з-за мене якийсь "куль хацкер" забрався в вашу систему.
Для початку встановимо пароль root користувача mysql:
# /usr/local/bin/mysqld_safe & (запускає mysqld, на деяких системах, команда safe_mysqld)
# /usr/local/bin/mysqladmin -u root password
ваше_гасло(використовуйте одинарні лапки, якщо гасло включає знаки які можуть інтерпретуватись оболонкою, як наприклад
'm75qL*h4][0r'. Не забудьте гасло.)
Підключаємся до оболонки бази даних:
# mysql -u root -p (не забудьте -p ключ, це вказує mysql питати гасло, замість YES що надається по замовчуванню)
mysql> help (перша команда)
mysql> \s
mysql> show databases; (покаже нам бази даних, встановлені по замовчуванню).
Перше що варто зробити, це видалити користувачів за замовчуванням, таких як test або mysql:
mysql> use mysql; (переносить нас в головну базу даних)
mysql> delete from user where User='';
mysql> delete from db where User='';
mysql> flush privileges;
(цього повинно вистачити)
Створюємо користувача для нашого майбутнього чату. Довга версія команди:
mysql> grant create, create temporary tables, delete, execute, index, insert, lock tables, select, show databases, update
on *.*
to
username identified by '
password';
(
username та
passwor ви повинні самі придумати, і так само, запишіть щоб не забути. Умовно назвемо користувача
ralf)
Якщо команда, наведена вище видала вам помилку (деякі команди міняються в різних версіях mysql), використайте коротку версію:
mysql> grant all on *.* to
username identified by '
password';
Але пізніше вам потрібно буде прочитати як обмежити права користувача mysql, саме у вашій версії.
Користувач root виконав свою роботу.
mysql> \q
# mysl -u ralf -p
(вводите гасло)
mysql> create database chatdb;
mysql> show databases;
(Повинно видати табличку із доданою chatdb базою даних, яка належить ralf користувачеві)
mysql> \q
Все, закінчили з mysql, час перейти до нашого чату.
Оскільки я помістив rchat у окрему директорію, щоб не змішувати із cgi-bin скриптами, ми повинні вказати Apache, що в цій директорії також знаходяться виконуючі скрипти.
# vim /etc/apache/httpd.conf (ваш httpd.conf може знаходитись у іншому місці)
Добабляємо після рядка ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" , аналогічну:
ScriptAlias /rchat/ "/var/www/rchat/"
також трішки нижче після <Directory "/var/www/cgi-bin">... </Directory>:
<Directory "/var/www/rchat">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Зберігаємо це. Тепер Apache готовий виконувати скрипти із /var/www/rchat/
# cd /var/www/
# mv rchat/www/img rchat/www/css htdocs/
# cd rchat/
# vim config.cgi (це головний конфігураційний файл чату, його необхідно добре переглянути і розуміти)
Замінюємо декілька параметрів:
$masterpassword = '
ваше_гасло'; # ще одне гаслом немає нічого спільного з mysql, використовується
# для запуску dbi.cgi (дивись нижче)
$admin_email_address = 'tech@localhost';
$international_nicks = 1;
$www_dir = ""; # пустий рядок, означатиме що Apache шукатиме документи у /var/www/htdocs
# default for streaming mode, streaming is only available if you use the DBI
$streaming = 1;
# <DBI>
# DBI (Data Base Interface)
# set to 1 if you want to use the DBI
$use_dbi = 1; # так, ми використовуємо базу даних
# user for DBI
$dbi_user = 'ralf'; # наш користувач
# password for DBI
$dbi_password = '
mysql_гасло '; # mydql гасло для ralf
# database
$dbi_database = 'chatdb'; # mysql база заних
# host
$dbi_host = 'localhost'; # так і буде
# DSN (Data Source Name for the DBI)
$dbi_dsn = "DBI:mysql:database=$dbi_database;host=$dbi_host";
# set to one if your DBMS supports primary keys (eg. MySQL)
$use_primary_keys = 1;
# </DBI>
# HTML Stuff
# Цю змінну ви повинні самі добавити:
$meta_lang = '<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=koi8-u">';
$css_file = "$www_dir/css/default.css"; # файл CSS у /var/www/htdocs/css
$banner_picture = "$www_dir/img/mypicture.gif"; # /var/www/htdocs/img
$input_field_size = 70; # (збільшив)
Зберігаємо це. Запускаємо Apache (або робимо рестарт)
# /sbin/apachectl start
Направляємо наш оглядач на
http://localhost/rchat/dbi.cgi.
Якщо нічого не збочено, для нас повинна генеруватись форма для управління нашою базою даних.
Вводимо гасло (з config.cgi, $masterpassword). Ставимо помітку навпроти
create dbi tables і робимо "Submit".
Сторінка вашого чату повинна знаходитись за адресою
http://localhost/rchat/chat.cgiЯкщо вам вдалося все це пропробити, і воно навіть працює
, вам доведеться ще трохи відредагувати файли у rchat/html каталозі, а саме - добавити $meta_lang десь перед </HEAD> тегом. інакше кирилиця не буде виводитись правильно чатом.
Якщо встановите і налаштуєте, не забудьте мене до себе запросити
.