Автор Гілка: Чатик з MySQL підтримкою,  як встановити.  (Прочитано 2314 раз)

Відсутній tech

  • Письменник
  • *****
  • дописів: 586
  • Карма: +1/-0
  • Гигик
Впевнений що багато з присутніх знають як це робиться. Але  дехто можливо ні, або просто руки не дійшли.
Я сам починаю лише розбиратись у використанні баз даних, це поле діяльності досить цікаве і має майбутнє.

Дуже багато аплікацій в Інтернеті використовують або побудовані на вершечку  баз даних. Це дозволяє якісніше організовувати інформацію, і ефективніше її вилучати при потребі.  Одна з найпоширеніших і найпопулярніших  середніх по ємкості БД , це 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> тегом. інакше кирилиця не буде виводитись правильно чатом.

Якщо встановите і налаштуєте, не забудьте мене до себе запросити :).
« Змінено: 2005-08-13 03:10:47 від tech »