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 и так далее

Добавить комментарий для srazil Отменить ответ

Ваш адрес email не будет опубликован.

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

Материалы распространяются под лицензией Creative Commons: Атрибуция — Некоммерческое использование — С сохранением условий (Attribution-NonCommercial-ShareAlike) 3.0 Unported.
Рейтинг@Mail.ru