LAMP на ноутбуке

LAMP — это аббревиатура от Linux Apache MySQL PHP. То есть это полноценный Web-сервер. Так как ноутбук это мобильное устройство, а в моём случае это даже не ноутбук, а нетбук MSI Wind, то я его часто ношу с собой. Иногда между встречами образуется достаточно серьёзный промежуток времени и его хочется потратить с большей продуктивностью. Поэтому я и решил установить на нетбук LAMP. Установка LAMP описана очень подробно во многих источниках, но при установке у меня было одно маленькое требование, которое нигде, где я смотрел, не описано.

Процесс установки LAMP в Ubuntu элементарен:

  1. Открываем менеджер пакетов Synaptic (Система → Администрирование → Менеджер пакетов Synaptic).
  2. В меню Synaptic выбираем Правка → Отметить пакеты для Задачи….
  3. В открывшемся окне ставим галочку напротив мета-пакета LAMP и щёлкаем на кнопке OK.

Настроить LAMP немного сложнее. Первое что я делаю, так это изменяю папку отображаемую web-сервером Apache с /var/www/ на /home/serg/Projects/project1. Для этого редактиру конфигурационный файл Apache:
sudo nano /etc/apache2/sites-available/default

И заменяю в нём все упоминания /var/www/ на /home/serg/Projects/project1
Делаю я это из-за того что раздел /home при установке я вынес в отдельный логический диск и если нужно будет переустановить систему, то раздел /var потеряется, а /home — нет.

Но этот способ подходит, если у вас только один проект, а что если проектов несколько? Ничего сложного — создадим для каждого проекта виртуальных хост:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/project2
sudo nano /etc/apache2/sites-available/project2

Указываем в файле имя на которое должен откликаться этот хост путём добавления перед директивой DocumentRoot директивы ServerName c желаемым именем, изменяем значение директивы AllowOverride на All (это я делаю так как использую модуль Apache mod_rewrite), изменяем домашнюю папку хоста и имя файла в который будут писаться ошибки на нужные пути, а также удаляем лишние строчки. Вот как выглядит файл у меня:
NameVirtualHost *
<VirtualHost *>
ServerName project2
ServerAdmin webmaster@localhost
DocumentRoot /home/serg/Projects/project2
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/serg/Projects/project2>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error_project2.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access_project2.log combined
ServerSignature On
</VirtualHost>

Теперь установим модуль Apache mod_rewrite:
sudo a2enmod rewrite

Для того чтобы компьютер знал что нужно обращаться к себе для отображения сайта http://project2 нужно указать это в файле /etc/hosts:
sudo nano /etc/hosts

Добавляем к строчке 127.0.0.1 имя виртуального хоста:
127.0.0.1 localhost project2

Активируем виртуальный хост:
sudo a2ensite project2

Перезапускаем web-сервер Apache:
sudo /etc/init.d/apache2 restart

Вот теперь у нас LAMP настроен и самое время перейти к моему маленькому требованию. Так как большую часть времени я работаю за нетбуком, когда он подключён к Интернету, то мне не нужно, чтобы в это время работал LAMP и кушал хоть какие-либо ресурсы, а по-умолчанию Apache и MySQL запускаются при старте системы. Для решения этой задачи можно воспользоваться утилитой rcconf:
sudo apt-get install rcconf
sudo rcconf

Убираем «галочки» у Apache и MySQL.

Всё, теперь при загрузке компьютера Apache и MySQL запускаться не будут. Чтобы из включить нужно выполнить:
sudo /etc/init.d/mysql start && sudo /etc/init.d/apache2 start
Если есть какие-либо вопросы по этой теме — оставляйте их в комментариях. Я не админ, но много времени потратил на разбор того как работает web-сервер и возможно я на что-нибудь да отвечу.

LAMP на ноутбуке: 17 комментариев

  1. О! Спасибо за ссылки!
    Кстати, я заметил что вы не так давно начали вести свой блог о Linux. А не хотите присоединиться к этому блогу? Так ваши записи, на мой взгляд очень достойные внимания, прочитает большее количество людей. Если что пишите на почту или в Jabber (они есть в виде картинок в правой колонке).

  2. Если VirtualHost нужно повесить на нестандартный порт, то нужно использовать:

    Listen 2222
    < VirtualHost _default_:2222 >

    или

    Listen 2222
    NameVirtualHost 10.5.5.50
    < VirtualHost 10.5.5.50:2222 >

    Где 10.5.5.50 это IP адрес сервера в локальной сети.

    P.S.
    Перед VirtualHost и после номера порта пробелы лучше убрать 🙂

  3. Спасибо за пост, все работает как нужно, а как проверять почту sendmail? Локально в целях разработки?

    1. srazil, советую спросить у google или nigma. На тему «sendmail локально», а ещё можно использовать postfix, так как он в настройке проще sendmail.

  4. Было бы очень приятно увидеть на данном сайте пост как настроить postfix, sendmail или любую другую почтовую программу, в разработке они необходимы…

  5. 1. Я не системный администратор, поэтому всегда использовал для таких программ «самые лучшие настройки». Тестирование же отправки писем я делаю на серверах в интернете.

    2. Мне кажется, что в интернете должно быть много статей на эту тему.

  6. Для устранения предупреждения:
    Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
    необходимо в файл /etc/apache2/httpd.conf добавить строчку:
    ServerName localhost

  7. Спасибо, не знал, что в ubuntu есть утилиты для включения/выключения модулей апач… До этого приходилось пользоваться символическими ссылками.

  8. Очень интресно, но теперь меня интересуют несколько вопросов…
    раньше я работал в винде на денвере, для доступа на свои проекты я использовал следующие пути
    http://127.0.0.1/project1
    http://127.0.0.1/project2

    то есть если у меня новый проект то просто добавляю папку projectN
    потом настроил чтоб мой сервак был виден с внешки и на него можно было зайти по ссылке, например
    http://10.22.102.1/project1
    просто у меня статический IP и это удобно
    как сделать подобное в юбунте, то есть если у меня есть проект1, то
    http://localhost/project1
    проект2
    http://localhost/project2
    чтоб просто добавлял папки с названиями проектов, или все-таки придется для каждого создавать вирт. хост?
    и как сделать его видимым с внешки, и как можно будет с внешки ссылаться на разные проекты?

    1. Максим По., естественно настроить работать Apache также как в Денвере можно, но, к сожалению, я не системный администратор и у меня нет времени разбираться как это можно сделать. Если вы сможете это сделать или найдёте заметку о том как это сделать, то я буду очень признателен, если вы поделитесь информацией со мной.
      У меня есть сайты на домашнем сервере, которые доступны извне. Но я вместо имён использую порты. Мои конфиги выглядят так:
      /etc/apache2/

      #NameVirtualHost *:80
      #Listen 80

      #<IfModule mod_ssl.c>
      # SSL name based virtual hosts are not yet supported, therefore no
      # NameVirtualHost statement here
      # Listen 443
      #</IfModule>


      /etc/apache2/site-available/project1

      Listen 6543
      <VirtualHost _default_:6543>
      ServerAdmin email@example.com

      DocumentRoot /home/serg/www/project1
      <Directory />
      Options FollowSymLinks
      AllowOverride None
      </Directory>
      <Directory /home/serg/www/project1/>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride All
      Order allow,deny
      allow from all
      </Directory>
      ErrorLog /var/log/apache2/error-project1.log

      # Possible values include: debug, info, notice, warn, error, crit,
      # alert, emerg.
      LogLevel warn

      CustomLog /var/log/apache2/access-project1.log combined
      </VirtualHost>

      Соответственно сайт виден из сети Интернет по адресу http://«IP-адрес»:6543

    2. Максим По. — никто не мешает вам добавлять папки в /var/www — тоже самое, что и в Denwer. http://localhost по умолчанию открывается из /var/www точно также, как в Denwer из home/localhost/www.
      Т.е. добавляете папку project1 или project2 в папку /var/www и получаете по http://127.0.0.1/project1 или http://127.0.0.1/project2 …. Виртуальные хосты настраивать не надо, в LAMP уже настроен по умолчанию один виртуальный хост, достаточно для работы как у вас описано. По умолчанию Apache не запрещает доступ с любого интерфейса, т.е. аналогично будет работать и по внешнему IP http://10.22.102.1/project1 .
      Есть только одно НО — следует выставлять владельцев содержимого этих папок самостоятельно каждый раз после добавления (пользователь www-data и группа www-data, если вы используете настройки по умолчанию)

  9. Ну вообще — ни чего настраивать не надо — Апач отдает папки из /var/www/ по алфавиту. Если настроены виртуальные хосты. допустим http://home.ru то для тестирования достаточно завести например
    http://test.home.ru
    http://test2.home.ru и так далее

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.