Недавно имел удовольствие настраивать LAMP сервер на убунту. Так как найти централизированного мануала(да и еще и на русском) мне не удалось, решил написать эту заметку.
Итак присутпим.
Установка всего необходимого для LAMP сервера:
sudo apt-get update
sudo apt-get install apache2 php5 php5-mysql mysql-server-5.0По необходимости доставляются другие php модули типа php5-gd, php5-imagick, php5-curl и другие.
Конфиг apache2 в убунту организован интересным образом. Вот листинг /etc/apache2/ :
apache2.conf
conf.d/
envvars
httpd.conf
mods-available/
mods-enabled/
ports.conf
sites-available/
sites-enabled/
В apache2.conf - основная конфигурация веб сервера.
httpd.conf - пустой, оставлен для совместимости.
mods-available/ - каталог содержащий подключаемые конфигурационные файлы апача, которые активируют тот или иной его модуль.
sites-available/ - каталог содержащий подключаемые конфигурационные файлы апача, которые активируют тот или иной виртуал хост.
Чтобы активировать модуль или виртуал хост созданы утилиты a2enmod и a2ensite.
Пример использования:
ulmen@chtulhu:~$ sudo a2enmod php5
Module php5 installed; run /etc/init.d/apache2 force-reload to enable.
По сути a2enmod, a2ensite, a2dismod и a2dissite создают или удаляют символический линк конфига из sites-available/ в sites-enabled/ (mods- в случае с модулями).
Добавление виртула хоста:
1. Скопировать /etc/apache2/sites-available/default в /etc/apache2/sites-available/example.com
ulmen@chtulhu:~$ cd /etc/apache2/sites-available
ulmen@chtulhu:~$ sudo cp ./default ./example.com
2. Отредактировать example.com
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/httpdocs/example.com
<Directory /var/httpdocs/example.com>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory〉
ErrorLog /var/log/apache2/error.log
LogLevel warn
ServerSignature On
</VirtualHost>
3. Создаем каталог для Document Root:
ulmen@chtulhu:~$ mkdir -p /var/httpdocs/example.com
Настройка SSL:
1. Создание сертификата:
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
(актуально для Feisty, в более старых релизах нужно выполнить apache2-ssl-certificate)
2. Добавить порт 443 в /etc/apache2/ports.conf
Listen 80
Listen 443
3. Скопировать /etc/apache2/sites-available/default в /etc/apache2/sites-available/ssl, отредактировать default таким образом:
NameVirtualHost *:80
<VirtualHost *:80>
...
</VirtualHost>
также отредактировать /etc/apache2/sites-avaible/ssl:
NameVirtualHost *:443
<VirtualHost *:443>
...
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
...
</VirtualHost>
4. Добавить ssl в examle.com таким же образом как и в файле ssl, пример:
<VirtualHost *:443>
ServerName www.example.com
ServerAlias example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/httpdocs/example.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
<Directory /var/httpdocs/example.com>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
ServerSignature On
</VirtualHost>
5. Активация модуля и сайта:
ulmen@chtulhu:~$ a2enmod ssl
ulmen@chtulhu:~$ a2ensite ssl
6. Рестарт веб сервера:
ulmen@chtulhu:~$ sudo /etc/init.d/apache2 restart
* Forcing reload of web server (apache2)... [ OK ]
Настройка mysql:
Mysql после установки работоспособна без дополнительных настроек. Так как пользователь базы root без пароля, нужно задать для него пароль:
ulmen@chtulhu:~$ mysqladmin -u root password myPassword
Проверка базы:
ulmen@chtulhu:~$ mysql -u root -p
Настройка PHP: /etc/php5/apache2/php.ini, после смены настроек нужно перегрузить апач.
Надеюсь ничего не забыл :)


30 коммент.:
Куул спасибо. Я со своим недоконца прямыми руками долго этим занималсо теперь в следующий раз будет легше.
такой вид конфигурации индейца2 во многих системах, например, в том же старшем брате убунты -- Дебиан.
перегружать апач не стоит :) и даже перезагружать - пользователи обидятся :)
apache2ctl graceful
Но для своих серверов я все же предпочитаю debian
kruft, неудивительно, что в дебиане и убунту система конфигов апача идентична :)
anonymous, какие пользователи при первичной настройке сервера? да и насколько я понимаю грейсфул не поможет при подключении модулей.
> Так как найти централизированного мануала(да и еще и на русском) мне не удалось, решил написать эту заметку.
Нет, всё конечно очень хорошо, но блин... Почему бы теперь эту заметку не запостить в официальный вики или на форум.убунту.ру ? Почему бы не помочь сообществу в создании того самого "централизированного" ?
>почему бы теперь эту заметку не запостить в официальный вики или на форум.убунту.ру ?
Свой блог роднее убунтуфорума, тем более зачастую всеравно гуглем ищут. А по поводу вики - давайте ссылочку на русскую убунту-вики, будет время - помещу туда.
http://ubuntu.ru/Wiki
и
https://wiki.ubuntu.com/RussianDocumentation
В ubuntuguide.org тоже не плохо было запостить.
Думаю, не мешало бы в примеры конфигов добавить AddDefaultCharset WINDOWS-1251.
Или это только у меня сайты еще не в UTF-8? :)
Syntax error on line 3 of /etc/apache2/sites-enabled/ssl:
Invalid command '...', perhaps misspelled or defined by a module not included in the server configuration
я чего-то неправильно сделал? :)
debconf: DbDriver "config": could not write /var/cache/debconf/config.dat-new: Permission denied
что я делаю неправильно
Syntax error on line 3 of /etc/apache2/sites-enabled/ssl:
Invalid command '...', perhaps misspelled or defined by a module not included in the server configuration
я чего-то неправильно сделал? :)
три точки писать не нада.... Имеется ввиду что место "..." идут дерективы
Syntax error on line 3 of /etc/apache2/sites-enabled/ssl:
Invalid command '...', perhaps misspelled or defined by a module not included in the server configuration
я чего-то неправильно сделал? :)
используй sudo
art@Sarks:/etc/apache2/sites-enabled$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2 Syntax error on line 20 of /etc/apache2/sites-enabled/ssl:
SSLCertificateFile: file '/etc/apache2/ssl/apache.pem' does not exist or is empty
Выдает такуч ошибку. Как ее исправить и с юем она свзана?
нет вообще папки /etc/apache2/ssl..
хотя я установил все пакеты, которые нужны(в статье была команда, которая ставила все нужные пакеты).
Вообще в случае ошибок типа Invalid command '...', perhaps mis-spelled or defined by a module not included in the server configuration
Нужно загружать необходимые модули, т.е в httpd.conf прописать например LoadModule access_module /etc/httpd/modules/mod_access.so
Спасибо Вам огромное :) наконецто я разобрался))
Огромное спасибо, очень помогло в своё время)
Написал очень похожую статью, но про LANMP - вот тут
Спасибо за статью.
Добавил в закладки
Спасибо огромное!
Прошу прощения, предыдущий линк мёртв. Случайно увидел, как кто-то стучался в него, посему - рабочий линк.
спасибо большое... настороить то я настроил, но как мне конкретно сделать так чтоб мой ком превратился в сервер и чтоб можно было с другого компа входить на страничку... я уже кучу всего прочитал а как конкретно это сделать нигде немогу найти
Вопросик небольшой.
Если создать два вирт-хоста с именами скажем example2.com и example2.com и в описаниях хостов (файлов в sites-available) :
VirtualHost *:80
то при перезагрузке апача ошибка:
_default_ VirtualHost overlap on port 80, the first has precedence. Понятно, что лезут два на один порт.
IP-шники им дал раздельные в /etc/hosts : 127.0.0.4 и 127.0.0.5 (это тестовая локаль).
Чего не так?
Dex, Apache наплевать на то, какие IP назначены именам его виртуальных хостов в /etc/hosts.conf. Посему, их надо указать явно: "127.0.0.4:80" и "127.0.0.5:80" соответственно.
Спасибо df_yz, получилось.
у меня сертификат не создается. Вопросы задаются, а в файл ничего не пишется. В логах все пусто
а как проверить работоспособность сервака по локальной сетке. Вроде все без ошибок, но что дальше делать что увидеть сайт в браузере на соседнем компе не знаю((( Надоумите плиз
при рестарте apache2 выдает:
(98) Address already in use: make_sock: could not bind to addres 0.0.0.0:443
Спасибо за статью!!!
А к стати подскажите как запустить CGI скрипт?
А то простое копирование файла с расширением cgi ничего не даёт.
А на странице выводит текст скрипта.
It works! например когда на
//localhost печатает
А когда указываю например
//localhost/cgi-bin/test1.cgi
с простым скриптом
Код:
#!/usr/bin/perl
use CGI;
use strict;
print header;
print "Hello, World!";
то выдаёт просто текст скрипта, как будто не может интерпретировать.
перл стоит,
сервер запускается,
моды какие нашёл установил...
В чём может быть дело?...
А к стати подскажите как запустить CGI скрипт?
А то простое копирование файла с расширением cgi ничего не даёт.
А на странице выводит текст скрипта.
It works! например когда на
//localhost печатает
А когда указываю например
//localhost/cgi-bin/test1.cgi
с простым скриптом
Код:
#!/usr/bin/perl
use CGI;
use strict;
print header;
print "Hello, World!";
то выдаёт просто текст скрипта, как будто не может интерпретировать.
перл стоит,
сервер запускается,
моды какие нашёл установил...
В чём может быть дело?...
Отправить комментарий