вторник, 6 ноября 2012 г.

mediawiki 1.16.12

Это последняя версия mediawiki, поддерживающая php версии 4.
Для установки достаточно скопировать ее в папку вебсервера и открыть index.php. Далее - следовать инструкциям.

Решение проблем:
1) При установке на php версии 5.3 появляется "Parse error: syntax error, unexpected T_NAMESPACE, expecting T_STRING in путь/Namespace.php on line 46".

Для решения этой проблемы пишем небольшой shell скрипт:


for fl in *.php; do
mv $fl $fl.old
sed 's/Namespace::/MWNamespace::/g' $fl.old > $fl
done

Этот скрипт переименовывает класс Namespace в MWNamespace 

Далее, переходим в папку вики include и вызываем написанный нами скрипт. Если проблема полностью не решена, надо вызвать его также в корневом каталоге вики.

Идея решения проблемы взята отсюда.

2) При первом запуске возникла проблема:

Error in fetchObject(): Illegal mix of collations (cp1251_bin,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='

Это проблема кодировки бд. Идея - отсюда.

Для ее смены можно воспользоваться таким способом:
а) Выполняем
alter database имя_бд collate 'utf8_unicode_ci'
Идея - отсюда.

б) Выполняем
SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') as sqlcode
  FROM `information_schema`.`TABLES` t
 WHERE 1
   AND t.`TABLE_SCHEMA` = 'имя_бд'
 ORDER BY 1

Получим готовый sql код для преобразования кодировок всех таблиц бд.
Копируем его и выполняем.

Идея - отсюда.

вторник, 30 октября 2012 г.

Создать пользователя MySql

Для начала - немного отсюда:

shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
    ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
        -> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;
Эти команды GRANT создают трех новых пользователей:
monty
Полноценный суперпользователь - он может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль some_pass. Обратите внимание на то, что мы должны применить операторы GRANT как для monty@localhost, так и для monty@"%". Если не добавить запись с localhost, запись анонимного пользователя для localhost, которая создается при помощи mysql_install_db, будет иметь преимущество при подсоединении с локального компьютера, так как в ней указано более определенное значение для поля Host, и она расположена раньше в таблице user.
admin
Пользователь, который может подсоединяться с localhost без пароля; ему назначены административные привилегии RELOAD и PROCESS. Эти привилегии позволяют пользователю запускать команды mysqladmin reloadmysqladmin refresh и mysqladmin flush-*, а также mysqladmin processlist. Ему не назначено никаких привилегий, относящихся к базам данных (их можно назначить позже, дополнительно применив оператор GRANT).
dummy
Пользователь, который может подсоединяться к серверу без пароля, но только с локального компьютера. Все глобальные привилегии установлены в значение 'N'-тип привилегии USAGE, который позволяет создавать пользователей без привилегий. Предполагается, что относящиеся к базам данных привилегии будут назначены позже.

После создания dummy, надо дать ему права с помощью GRANT:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,EXECUTE,ALTER on бд.* TO пользователь@localhost IDENTIFIED BY 'пароль';

Подробнее о GRANT - тут
После создания dummy, надо дать ему права с помощью GRANT:

Посмотреть всех пользователей можно так:
select User from mysql.user;

воскресенье, 28 октября 2012 г.

Виртуальные хосты Apache

Для поддержания нескольких доменов 3 уровня, необходимо настроить в apache виртуальные хосты.
Обычно, их настройка производится в отдельном файле, а в httpd.conf производится его include.

1 делом, надо включить поддержку виртуальных хостов директивой NameVirtualHost.

NameVirtualHost адрес:порт

Потом - настроить сами хосты:

<VirtualHost адрес:порт>
    DocumentRoot путь_к_корневому_каталогу_для_этого_домена(например /mysite/subdomain)
    ServerName доменное_имя(например subdomaain.mysite.ru)
    ServerAlias альтернативное_имя(для всяких www, ww1 и т.д.. например www.subdomain.mysite.ru)
    ErrorLog "путь_к_логам"(например "/var/logs/error_log")
    CustomLog "путь_к_логам" common(например "/var/logs/access_log"common)
</VirtualHost>


Основной сайт тоже нужно прописать в виртуальных хостах.

среда, 10 октября 2012 г.

PHP к Apache как CGI

Информация взята отсюда.

Добавляем в секцию <Directory>

Options +ExecCGI
AddHandler cgi-script  .php
что делает все .php файлы в ней cgi скриптами

Если вызвать обычный php файл, то получим Internal Server Error.
Для решения этой проблемы:
1)Добавим  начало #!/путь-к-пхп/php
2)Первая выводимая скриптом информация должна быть "Content-type: text/html\n\n;" (добавить после <?php  echo "Content-type: text/html\n\n;";)

Проверка: скрипт должен срабатывать простым вызовом, например ./tst.php

понедельник, 3 сентября 2012 г.

Немного о Raid

Для начала - немного теории с сайта Novell:

Terminology

RAID

RAID, redundant array of inexpensive (or independent) disksis a storage technology in which multiple disks are combined to act as a single storage unit in order to achieve better performance and/or reliability compared to single disks. A general introduction to RAID is beyond the scope of this TID; the Wikipedia article article "RAID " may serve as a starting point.

Hardware RAID

Hardware RAID is RAID which is implemented wholy inside a storage controller ("RAID card") through specialised hardware and firmware. The controller's BIOS provides an interface for managing the RAID setup. The controller presents the RAID as a single storage device, similar to a single SCSI disk, to the operating system for most purposes. Thus, regular operation of the RAID as storage can be supported by the operating system using a generic driver. Special drivers are only needed to make the RAID configuration and for detailed monitoring of the physical disks in the array.Software RAID

Software RAID is RAID which is implemented in software outside the storage controller, by an OS driver. That driver takes care of configuration as well as operation of the RAID.

For Linux, software RAID is provided by the md (Multiple Devices) kernel driver and managed using the mdadm tool. Linux software RAID uses a format of its own to store RAID configuration information (the so-called "metadata").

BIOS RAID

BIOS RAID (also known as"quasi-hardware RAID") is a form of software RAID for which the RAID configuration is managed in part or in full by the storage controller's BIOS but which is not true hardware RAID. For BIOS RAID to work, a specific driver is needed at the operating system level.

BIOS RAID is often nicknamed "fake RAID" as it is easily mistaken for hardware RAID and vendor of controllers that offer BIOS RAID often do little to educate buyers about the fact that it is not hardware RAID and that specific OS drivers are necessary for its RAID functionality to function. A somewhat more neutral way of describing it would be "BIOS-assisted software RAID".

Comparing hardware, software and BIOS RAID

Hardware RAID versus software RAID

This comparison is outside the scope of this TID.

BIOS RAID versus hardware RAID

  • BIOS RAID requires special drivers for regular operation; hardware RAID does not. Special drivers can make the process of recovering from problems like boot failures more complicated.
  • With BIOS RAID, the CPU is used to maintain the RAID structure. With hardware RAID, this is offloaded to the storage controller and the main CPU is not involved in maintaining the RAID.

BIOS RAID versus Linux software RAID

  • BIOS RAID is restricted to the devices attached to the controller that offers BIOS RAID. With Linux software RAID, the RAID can be built from all kinds of block devices, including disks attached to controllers that do not provide RAID by themselves, or disks attached to different controllers.
  • For BIOS RAID, a driver specific to the controller is needed whereas Linux software RAID is supported by a generic driver (md).
  • The on-disk layout of a BIOS RAID is vendor-specific. If the storage controller fails, a replacement controller of the same make may be needed to regain access to data on the RAID. With Linux software RAID, the on-disk layout is independent of the storage controller, so when a storage controller hosting (part of) a Linux software RAID fails, access to the data can be regained using a replacement controller that does not need to be of the same make as the controller that is defect.
  • Data stored using a suitable file system on BIOS RAID can be shared easily with Microsoft Windows on dual boot Linux + Windows systems.
В итоге - делал linux software raid. Создавал при настройке.
Управление - через mdadm.
Диски определяются начиная с sda(если он 1 - то будет всегда sda), в зависимости от того, как они воткнуты в материнку.(очередность портов)
Посмотреть, что с рейдом:
mdadm --detail /dev/md0
Еcли какой-то винт заменен, надо добавить его в рейд:
mdadm --add /dev/md0 /dev/sdb
Автоматически начнется копирование на него информации.

Еще информация о рейде:
cat /proc/mdstat

среда, 8 февраля 2012 г.

Segmentation fault при создании большого массива

При выполнении программы вида:
int main()
{
   int c[1000000];
   cout << "done\n";
   return 0;
}
можно получить ошибку Segmentation fault.
Это связано с переполнением стека. Локальные переменные хранятся в стеке, и там не хватает места на массив c[1000000].
Решение - выделять память из кучи.
Например, int* array = new int[1000000]; Тогда надо не забыть вызвать delete[] после этого.
 Источник - см. тут.