Установка Apache2, PHP и MySQL на Ubuntu
1. Устанавливаем apache2 с помощью старого, доброго apt-get
[moon:~] % sudo apt-get install apache2
Все необходимые для настройки апача файлы находятся в /etc/apache2/
[moon:~] % ll /etc/apache2/ total 84 drwxr-xr-x 7 root root 4096 2011-06-21 15:15 ./ drwxr-xr-x 139 root root 12288 2011-06-21 15:15 ../ -rw-r--r-- 1 root root 7994 2011-02-22 21:34 apache2.conf drwxr-xr-x 2 root root 4096 2011-06-21 15:15 conf.d/ -rw-r--r-- 1 root root 1169 2011-02-22 21:34 envvars -rw-r--r-- 1 root root 0 2011-06-21 15:15 httpd.conf -rw-r--r-- 1 root root 31063 2011-02-22 21:34 magic drwxr-xr-x 2 root root 4096 2011-06-21 15:15 mods-available/ drwxr-xr-x 2 root root 4096 2011-06-21 15:15 mods-enabled/ -rw-r--r-- 1 root root 750 2011-02-22 21:34 ports.conf drwxr-xr-x 2 root root 4096 2011-06-21 15:15 sites-available/ drwxr-xr-x 2 root root 4096 2011-06-21 15:15 sites-enabled/
Основные команды для управления сервисом apache2:
Запуск сервера:
sudo /etc/init.d/apache2 start или sudo service apache2 start
Остановка сервера:
sudo /etc/init.d/apache2 stop или sudo service apache2 stop
Перезапуск сервера:
sudo /etc/init.d/apache2 restart или sudo service apache2 restart
Перезагрузка настроек севера:
sudo /etc/init.d/apache2 reload или sudo service apache2 reload
Состояние сервера:
sudo /etc/init.d/apache2 status или sudo service apache2 status
Начинаем работу с сервером:
a). 1. Проверяем его состояние
[moon:~] % sudo /etc/init.d/apache2 status Apache2 is running (pid 4190).
Т.е. после установки сервер должен самостоятельно запуститься.
b). Сервер запущен. Введите в строку браузера любой ip адрес, который начинается со 127. Например, http://127.1.127.4/, в браузере должно появиться сообщение:
2. Установка PHP5.
Теперь установим PHP5.
[moon:~] % sudo apt-get install php5
Хочу обратить внимание на то что будет установлено и что будет удалено:
Пакеты, которые будут УДАЛЕНЫ:
apache2-mpm-worker
НОВЫЕ пакеты, которые будут установлены:
apache2-mpm-prefork libapache2-mod-php5 php5 php5-cli php5-common
Во-первых, при установке php5 меняется модель обработки запросов в Apache2. Т.е.
Была модель worker , а станет prefork. Worker считается менее надежным (использует меньше оперативной памяти за счет создания потоков внутри процесса), но более быстрым, а prefork более надежным (на каждое соединение создается процесс), но менее скоростным.
Во-вторых, устанавливается не только php5, но и модуль apache2 для работы с php5 — libapache2-mod-php5. Именно поэтому в процессе установки перезагружается apache2.
Проверим работает ли php5 под apache2. Для этого надо создать php файлик с таким кодом:
<?php // Show all information, defaults to INFO_ALL phpinfo(); // Show just the module information. // phpinfo(8) yields identical results. phpinfo(INFO_MODULES); ?>
и попробовать его вызвать.
Только вопрос где этот файлик создать?
При установке apache2 создает конфигурацию по умолчанию, которая находится тут:
/etc/apache2/sites-available/default
Там прописан параметр DocumentRoot, который указывает на директорию, где и лежит файлик с тексом «It works»
DocumentRoot /var/www
Кстати, то что мы можем делать запросы с адресов вида 127.*.*.*
задается настройкой Allow from 127.0.0.0/255.0.0.0 ::1/128 в том же файлике.
Создайте файлик /var/www/info.php. Вставьте приведенный выше код.
И наберите в строке браузера 127.0.0.1/index.php
И в этом месте для меня случилось неожиданное — браузер просто предложил мне скачать index.php
Лечится это поведение перезагрузкой apache2:
[moon:~] % sudo /etc/init.d/apache2 restart
И вуаля, мы запустили php-скрипт. Вы должны увидеть страничку похожую на эту:
3. Устанавливаем MySQL.
[moon:~] % sudo apt-get install mysql-server-5.0
НОВЫЕ пакеты, которые будут установлены:
libdbd-mysql-perl libdbi-perl libhtml-template-perl libnet-daemon-perl libplrpc-perl mysql-client-5.1 mysql-client-core-5.1 mysql-server-5.1 mysql-server-core-5.1
Т.е. Будет установлен не только сервер, но и клиент к нему.
Проверяем работает ли mysql из скрипта. Создаем в /var/www файлик mysql.php и вставляем туда код:
<? Error_Reporting(1+2+4); define("DBName","test"); define("HostName","localhost"); define("UserName","root"); define("Password","mypass"); if(!mysql_connect(HostName,UserName,Password)) { echo "Не могу соединиться с базой ".DBName."!<br>"; exit; } ?>
Перед запуском скрипта, необходимо убедиться, что в MySQL создана база данных test и она доступна для пользователя root.
После запуска http://localhost/mysql.php в Google Chrome, на экране отобразилась страничка описывающая http-ошибку 500 вместо подключения к нашей БД.
А происходит это потому что php5 ничего не знает про существование mysql у Вас на компьютере. Для работы php и mysql необходима библиотека-связка php5-mysql. Устанавливаем её и перезагружаем apache2:
[moon:~] % sudo apt-get install php5-mysql ... [moon:~] % sudo /etc/init.d/apache2 restart
Проверим, работает ли mysql. Создаем файлик /var/www/mysql_work.php и добавляем в него код:
<? Error_Reporting(1+2+4); define("DBName","test"); define("HostName","localhost"); define("UserName","root"); define("Password","mypass"); if(!mysql_connect(HostName,UserName,Password)) { echo "Не могу соединиться с базой ".DBName."!<br>"; exit; } // Создаем таблицу test. Если такая таблица уже есть, сообщение об ошибке будет // подавлено, т.к. используется "@" @mysql(DBName,"create table test(id int,a text)"); // Вставляем в таблицу 10 записей for($i=0; $i<10; $i++) { $id=time(); mysql(DBName,"insert into test(id,a) values($id,'Строка $i!')"); } // Выводим все записи $r=mysql(DBName,"select * from test"); for($i=0; $i<mysql_numrows($r); $i++) { $f=mysql_fetch_array($r); echo "$f[id] -> $f[a]<br>\n"; } ?>
В результате, на экране браузера должна появиться картинка похожая на эту:
Установка минимального набора инструментов web-программиста завершена. Легкого программирования!