среда, 29 апреля 2009 г.

LAMP Linux (Ubuntu 8.04) Apache (2) MySQL PHP (5)

Устанавливаю по статье:
http://ubuntueasy.com/servery/kak-ustanovit-lamp-wordpress-na-ubuntu-804
Сразу отпишусь что инструкции выполняются в терминале (alt-f2->gnome-terminal->Enter)
Устанавливаем Apache
#sudo apt-get install apache2

Тестируем сервера гипертекстового транспортного протокола, открываем web-браузер и вводим
http://localhost

Работает (http://localhost пишет It works!), но при перезагрузке в коммандной строке пишет

Could not reliably determine the server's fully qualified domain name, using
127.0.0.1 for ServerName

чтобы не писал предлагаю:

sudo gedit /etc/apache2/apache2.conf
где нибудь в начале добавить строчку ServerName localhost и сохранить

теперь пробуем sudo /etc/init.d/apache2 restart - этой ошибки уже нет)

(решение подсмотрено здесь)

Устанавливаем PHP5
#sudo apt-get install php5 libapache2-mod-php5

Рестартуем Apache
#sudo /etc/init.d/apache2 restart

Проверяем всё ли прошло успешно.
#sudo gedit /var/www/testphp.php

Вставьте следующий тэг в testphp.php файл:

(в исходной статье тут пробел - видимо копипастили от куда то тоже, я предлагаю такой скрипт - т.к. одним махом двух зайцев)

Сохраните этот новый файл. Откройте web-браузер и введите, http://localhost/testphp.php
Убедитесь, что удалили файл, в последствии это может представлять угрозу безопасности.
#sudo rm /var/www/testphp.php

Во время перезагрузки вывалились такие ошибки:

httpd (no pid file) not running (2)No such file or directory: apache2: could not open error log file /var/log/apache2/error.log. Unable to open logs

По первому сообщению нашёл такую мысль:
> httpd (no pid file) not running
Вот тут он хочет остановить сервер, но останавливать нечего (no pid file) так как
он не запущен..

Не работает http://localhost соответственно. Очевидно что так же какая то проблема с доступом к логам - посмотрел и действительно в /var/log/ вообще не было папки apache2, а в ней соответственно файла error.log - очевидно что это какой то баг - создал необходимую папку, правда почему то при перезагрузке системы она опять пропадает - см. вконце)

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

Устанавливаем MySQL
#sudo apt-get install mysql-server

MySQL первоначально позволяет только связи от localhost (127.0.0.1). Мы должны будем удалить это ограничение, если Вы желаете сделать его доступным для всех в Интернете. [Эти действия с доступом к инету на локальной машине не обязательны]

Откройте файл /etc/mysql/my.cnf
#gksudo gedit /etc/mysql/my.cnf

Найдите строки bind-address = 127.0.0.1 и прокомментируйте (# - диез), сохранил файл.

MySQL прибывает без root пароля как значения по умолчанию. Это - огромный риск для безопасности. Вы должны будете установить его. Так, чтобы локальный компьютер получил root доступ тоже. local-machine-name - название компьютера, за которым Вы работаете.

#mysqladmin -u root password newpassword
#mysqladmin -h root@local-machine-name -u root -p password newpassword
#sudo /etc/init.d/mysql restart

(шаг с изменением пароля можно пропустить для последней версии MySQL так как при установки базы она сама у меня запросила пароль для пользователя root, усли у вас она этого не сделал то это шаг обязателен)

Пароль уже спросили во время установки - так что в современном дистрибутиве действительно этот шаг лишний.

Во время установки произошли ошибки:

/etc/lsb-base-logging.sh: line 84: INITOUTPUT: свободное значение
invoke-rc.d: initscript mysql, action "stop" failed.
/etc/lsb-base-logging.sh: line 84: INITOUTPUT: свободное значение
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: не удалось обработать параметр mysql-server-5.0 (--configure):
подпроцесс post-installation script возвратил код ошибки 1
dpkg: зависимости пакетов не позволяют настроить пакет mysql-server:
mysql-server зависит от mysql-server-5.0, однако:
Пакет mysql-server-5.0 пока не настроен.
dpkg: не удалось обработать параметр mysql-server (--configure):
проблемы зависимостей -- оставляем не настроенным
При обработке следующих пакетов произошли ошибки:
mysql-server-5.0
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
МуСКуЛ не встал соответственно, будем копать ошибки (вот тут сразу сожалеешь что Убунту русско-язычный стоит - приятнее гуглить когда ошибки на буржуйском).

Рапорт об ошибке нашёл тут: https://bugs.launchpad.net/netbook-remix/+bug/291987

В целом надо редактировать файл /etc/lsb-base-logging.sh с целью комментирования if-ов (не забывая их концовки fi) - комментарий делается при помощи символа # в начале строки. Какие строки надо закоментировать - (84-114), (136-156):

sudo gedit /etc/lsb-base-logging.sh
Затем выполняем эти команды:

sudo dpkg --configure -a

sudo apt-get install mysql-server

при выполнении команды mysqladmin -h root@local-machine-name -u root -p password newpassword использовал localhost вместо local-machine-name, проверить потом можно выполнив mysql -u root -p.

Во время прописывания пароля для рут-локалхоста ошибки на выскакивали, но зайти в мускул у меня по нему получилось. В общем как то не гладко мягко говоря.

Устанавливаем MySQL Administrator и phpmyadmin
#sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin

Чтобы заставить PHP работать с MySQL, откройте php.ini файл
#gksudo gedit /etc/php5/apache2/php.ini

Вы должны будете снять (# - диез) с “; extension=mysql.so” строки так, чтобы это было похоже на это extension=mysql.so

Рестартуем Apache
#sudo /etc/init.d/apache2 restart

рестартовать Апач опять не захотел - снова пропала папка Апача и лог-файл, пересоздал, заработало. В пхп ини строчки extension=mysql.so не нашёл, зато была extension=msql.so - какой вариант правильнее 100% сложно сказать но файла msql.so в системе поиском не нашёл, а вот mysql.so присутсвует)

Для того чтобы убедиться что всё работает:
  • перезагрузился
  • sudo /etc/init.d/apache2 restart
  • и что вы думаете? опять умерли логи(
httpd (no pid file) not running
(2)No such file or directory: apache2: could not open error log file /var/log/apache2/error.log.
Unable to open logs
Временное лечение
sudo mkdir /var/log/apache2
sudo chown user:group /var/log/apache2 (в моём случае шаг не нужный, не помогает даже если 777 дать, а др возможно не лишний)
sudo /etc/init.d/apache2 start
ещё попробовал это (предварительно бэкап файла конечно сделав):
sudo rm /etc/logrotate.d/apache2
не помогло - дело не в логротейтах...

попробовал эту статью:
http://ru.gentoo-wiki.com/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Apache2

Could Not Open Error Log

While starting Apache, it prints:

Error while starting apache: (2)No such file or directory: apache2: could not open error log file /usr/lib/apache2/logs/error_log.

/usr/lib/apache2/logs should be a symlink pointing to /var/log/apache2 . Check it using:

ls -la /usr/lib/apache2/logs

(note the lack of a slash on the end). If /var/log/apache2 is missing, create it and make sure you give apache ownership:

mkdir /var/log/apache2

chown apache:apache /var/log/apache2

If the symlink /usr/lib/apache2/logs is missing, you can create it:

ln -s /var/log/apache2 /usr/lib/apache2/logs

You don't need to set permissions on the symlink.

не вылечило, но
sudo ln -s /var/log/apache2 /usr/lib/apache2/logs
поправилось (и ссылка не пропадает) - я так понял не лишне

Попытаемся вычислить момент в который папка логов умирает. Для этого выключаем апач: sudo /etc/init.d/apache2 stop
и смотрим процессы sudo ps -A - убеждаемся что апача там больше нет. Проверяем нашу папку логов - есть, значит умирает не при выключении апача.

пробуем редактировать автозапускающий серипт:
sudo gedit /etc/init.d/apache2

вставляем где нибудь в начале (рекомендую во второй строчке):
mkdir /var/log/apache2
if [ $? -eq 0 ]
then
echo $(date)": директория создалась без ошибок" >> /home/log.log
else
errmsg=$(date)": "$(mkdir /var/log/apache2 2>&1)
echo $errmsg >> /home/log.log
fi

перезагружаемся и смотрим наш лог файлик:
Wed Apr 29 21:57:12 MSD 2009: директория создалась без ошибок
теперь всё работает, но каждый раз заново создаётся директория - симптом вылечен, болезнь осталась:
mkdir -p /var/log/apache2
более короткий и тоже рабочий пример скрипта. Болезнь будем лечить не сегодня уже)

Комментариев нет: