Локальный сервер на LINUX (Apache + PHP + MySQL)
+41

Локальный сервер на linux

Вы не знаете как создать локальный сервер на LINUX? Тогда эта статья для вас. В ней я доступно расскажу как создать и настроить локальный сервер на LINUX.

В последнее время популярность свободного программного обеспечения, и в том числе операционных систем семейства LINUX растет быстрыми темпами. Сегодня linux уже совсем не тот, что раньше. Для того, чтобы начать работать с ним, достаточно лишь базовых знаний о компьютере. «Из коробки» уже доступны большинство программ, необходимых неискушенному пользователю. Однако если вы являетесь веб-разработчиком, или просто создаете для себя сайт, вам, скорее всего, понадобится локальный сервер. И полистав некоторые форумы, я заметил, что пользователи, перешедшие с windows систем в linux сталкиваются с некоторыми проблемами при создании сервера у себя на компьютере.

Нам нужно чтобы наш сервер поддерживал не только статические сайты, но и большинство современных CMS, таких как WordPress, Joomla, Drupal и др. Для этого нам будут нужны следующие компоненты:

  • apache (веб-сервер);
  • php (язык, на котором написаны многие CMS);
  • mysql (сервер баз-данных).

Сочетание Apache + PHP + MySQL является достаточно популярным. В windows среде его обычно называют WAMP (об этом я писал в статье о локальном сервере Open Server). В linux же, как вы уже, неверное, догадались, существует аналогичное название — LAMP (Linux + Apache + PHP + MySQL).

Итак, первым делом мы установим пакет программ LAMP, для чего в терминале введем следующие команды

sudo apt-get update
sudo apt-get install tasksel
sudo tasksel install lamp-server

Первой командой мы обновляем информацию с репозиториев, далее устанавливаем команду tasksel, необходимую для установки пакетов, и последней командой устанавливаем именно пакет LAMP.

В процессе установки вам порекомендуют установить пароль для административного пользователя MySQL «root», что я советую сделать

и установка продолжится далее

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

Настройка веб-сервера Apache

У apache очень много настроек, которые, как и большинство настроек различных программ на linux хранятся в текстовых файлах. Но для начала мы обойдемся лишь изучением некоторых из них. Для комфортной работы нам этого вполне хватит.

Конфигурационные данные веб-сервера apache расположены в папке /etc/apache2/.

В папках mods-available и sites-available находятся все доступные модули и сайты. А в папках mods-enabled и sites-enabled только те из них, которые включены в данный момент. Apache2.conf — основной конфигурационный файл apache. Ports.conf — список прослушиваемых портов.

Управление сервером осуществляется через терминал:

sudo /etc/init.d/apache2 start — запуск локального сервера

sudo /etc/init.d/apache2 stop — остановка сервера

sudo /etc/init.d/apache2 restart — перезапуск apache.

Командами

sudo a2enmod rewrite
sudo a2enmod userdir

включаем модули rewrite и userdir, позволяющий создавать пользовательские пути для сайтов.

После любого действия по включению-выключению модулей или сайтов, для применения изменений требуется перезапуск apache.

Теперь займемся созданием площадок для локальных сайтов. Я для примера создам два локальных сайта. Большее их количество создается аналогично.

Сначала создаем два файла с названиями будущих сайтов в директории /etc/apache2/sites-available/

1
sudo gedit /etc/apache2/sites-available/test1

и прописываем в нем следующие строки

<VirtualHost *:80>
ServerAlias test1 www.test1
DocumentRoot /home/user/sites/test1
<Directory home/user/sites/test1/>
AllowOverride All
</Directory>
</VirtualHost>

2
sudo gedit /etc/apache2/sites-available/test2

и соответственно

<VirtualHost *:80>
ServerAlias test2 www.test2
DocumentRoot /home/user/sites/test2
<Directory home/user/sites/test2/>
AllowOverride All
</Directory>
</VirtualHost>

Далее переходим в домашний каталог и создаем в нем две папки под содержимое будущих сайтов

/home/ваш пользователь/sites/test1

и

/home/ваш пользователь/sites/test2.

В них создаем по одному файлу index.html. Для первой папки — с текстом «Страница первого сайта», для второй — «Страница второго сайта».

Для того чтобы в браузере при наборе в строке адреса названий наших сайтов test1 и test2 переход осуществлялся на локальных сервер редактируем файл hosts

sudo gedit /etc/hosts.

В первою строчку дописываем имена создаваемых сайтов.

У вас должно получиться следующее

127.0.0.1 localhost test1 test2
127.0.1.1 comp

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

comp — это имя вашего компьютера, поэтому оно будет другим.

В терминале вводим команды для включения сайтов

sudo a2ensite test1
sudo a2ensite test2

не забываем перезапустить apache.

Все готово! Можно проверить, набрав в браузере имена только что созданных сайтов.

Если у вас что-то не вышло или вышло не так — задавайте вопросы, постараюсь ответить.

Если вы все-таки остановились на Windows, то советую почитать статью «Локальный сервер Denwer».

В следующий раз я расскажу как работать с базами данных на локальном сервере в LINUX.

+41
Понравилась запись? Подпишитесь по RSS или E-mail!
Категории: Linux, Уроки Linux теги: , , , , , . Прямая ссылка на запись.

Комментарии к записи Локальный сервер на LINUX (Apache + PHP + MySQL): 35

  1. Мухтар сказал(а):

    Последний путь для отображения на в браузере как прописать? Подскажите пожалуйста!

  2. Владимир сказал(а):

    Статья интересная, но у меня вопрос: можете подсказать, вот то, что вы сейчас описали это всё, если сравнить с виндой аналог установки в ней всех этих пакетов по отдельности, но для неё существуют и всякие там денверы, энделсы, амппсы, опенсерверы, ксампы и т.д. и т.п., а существуют ли аналогичные вещи и желательно(но необязательно), с перлом и руби в комплекте под юниксы в частности мпеня интересуют линуксы и пкбсд ?

    С уважением, Владимир!

  3. SAQO сказал(а):

    а где тут phpmyadmin ?

    • remak сказал(а):

      phpmyadmin — не входит в, так называемый, LAMP. Это уже средство администрирования сервера БД MySQL.
      Если нужно —
      sudo apt-get install phpmyadmin

  4. Дмитрий сказал(а):

    вввожу test1, получаю:
    It works!
    This is the default web page for this server.
    The web server software is running but no content has been added, yet.

  5. Pavel сказал(а):

    Спасибо!!! Все работает. Хотел бы добавить после установки
    PhpMyAdmin:
    sudo apt-get install phpmyadmin
    Нужно прописать в конфиге апача:
    sudo gedit /etc/apache2/apache2.conf
    Вот эту строчку:
    Include /etc/phpmyadmin/apache.conf

    И phpMyAdmin будет доступен по адресу
    test1/phpmyadmin

  6. Владимир сказал(а):

    Все сделал согласно инструкции, не работает, у меня Ubuntu 10.04

  7. Владимир сказал(а):

    и еще apache2 при перезапуске пишит следующее:
    apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName

    • remak сказал(а):

      По поводу «не работает» — нужно разбираться! Все действия проверялись не один раз.
      А чтобы не возникало указанного предупреждения, сделайте следующее:
      1.создайте файл fqdn
      sudo nano /etc/apache2/conf.d/fqdn
      2.вставьте в него слудующую строку
      ServerName localhost

  8. alex сказал(а):

    спасибо большое,помогли студенту,у меня как раз курсовая на эту тему.

  9. Second2None сказал(а):

    Спасибо, всё работает. Только единственная проблема — кириллица не отображается корректно в браузере. С чем может быть связана эта проблема? Это как раз тот самый текст «Страница первого сайта».

    • remak сказал(а):

      Попробуйте, непосредственно в коде html указывать кодировку

  10. Сергей сказал(а):

    DocumentRoot /home/user/sites/test1

    В этом месте стоит упомянуть, что вместо user надо писать имя своего пользователя, а то есть такие тупни как я, которые до этого не сразу додумываются :) Долго ковырялся пытаясь понять почему же у меня не получается :)

    А вообще статья замечательная, лучшая из тех, которые смог найти в интернете :)

  11. dima сказал(а):

    все сделал как описано, но : «Firefox не может установить соединение с сервером localhost.»
    где искать неполадки? я только учусь, объяснитепожалуйста

  12. саня сказал(а):

    у меня все сервера перенаправляет в var/www

    127.0.0.1 localhost test1 test2 test3 test4
    — все это в var/www

  13. Сергей сказал(а):

    Сделал все по инструкции. когда дошел до «a2ensite test2», получил сообщение «ERROR: Site test2 does not exist!»,
    при перезапуске сервера: » * Restarting web server apache2 AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message»
    Где я ошибся и где надо прописать ServerName?

  14. BioCyborgv5 сказал(а):

    Здравствуйте, подскажите как связаться с админом сайта? Писал на емайл не ответили.

  15. Denis сказал(а):

    Сделал все как расписал автор. В итоге при попытке зайти на свежесозданный сайт все равно выкидывает страницу «It work!» как при обращении к localhost. В чем может быть причина, подскажите пожалуйста?

    • Andrey сказал(а):

      Сделал 5 раз, тоже самое, все равно выкидывает страницу «It work!» как при обращении к localhost.

  16. Кирилл сказал(а):

    1. Конфиг в /etc/apache2/sites-available/ должен иметь расширение .conf, то есть test1.conf. Это должно решить проблему «ERROR: Site test1 does not exist!»

    2. Если стоит Apache 2.4, а не 2.2 (что, скорее всего, именно так), то в конфиге надо писать Require all granted. Вот рабочий конфиг по примеру из статьи:

    ServerName test1
    ServerAdmin webmaster@localhost
    DocumentRoot /home/user/sites/test1

    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Require all granted

    3. Вопрос с кодировкой решается персональными настройками Apache. В папке /etc/apache2/conf-enabled создаете файл, например, myconf.conf. В нем можете прописывать, к примеру такие настройки:

    ## Файл персональных настроек веб-сервера Apache

    ## Чтобы устранить предупреждение при перезапуске Apache (хотя в целом на производительности это не отразится)
    ServerName localhost

    ## Для того, чтобы Apache интерпретировал php и не предлагал сохранить php-файл
    AddType application/x-httpd-php .php .phtml

    ## Установка кодировки UTF-8 по умолчанию
    AddDefaultCharset UTF-8

    • Сергей сказал(а):

      Спасибо тебе добрый человек. Важные замечание, особенно первое

  17. Andrey сказал(а):

    проблема в файле /var/www/index.html
    структура
    var/www/site1.ru/www/
    var/www/site2.ru/www/
    после случайного удаления все заработало =)

  18. Cветлана сказал(а):

    Спасибо огромное за статью. В терминале написано Site site2 already enable. А на localhost до сих пор «it works!». Я полагаю, это потому что папки сайта пустые, нужно созданные папки заполнить контентом, подскажите, если не сложно, статью — следующий этап. Спасибо.

  19. Irina сказал(а):

    все работает, но когда перехожу по test1/ например — ошибка

    You don’t have permission to access / on this server.

  20. Алексей сказал(а):

    У меня сайты на виртуальном сервере. Создавался сервер автоматически на хостинге. Путь к сайтам там образовался такой:
    /var/www/user/data/www/
    где название каталога user совпадает с названием пользователя, под которым создавался сервер.
    Как настроить apache2 на linux mint, чтобы путь к сайтам был такой же как на на виртуальном сервере в интернете?

  21. Valeriy сказал(а):

    Для новой версии 16.04
    новые правила для установки phpmyadmin

    sudo apt install phpmyadmin php-mbstring php-gettext

    и после установки
    sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
    sudo a2enconf phpmyadmin
    sudo /etc/init.d/apache2 reload

  22. Valeriy сказал(а):

    Для новой версии Ubuntu 16.04
    вирт.хосты не работают у меня.
    для phpmyadmin изменения ввели:
    sudo apt install phpmyadmin php-mbstring php-gettext
    sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
    sudo a2enconf phpmyadmin
    sudo /etc/init.d/apache2 reload

  23. VAsya Pupkin сказал(а):

    ошибка в браузере выдает «DNS lookup failed»

  24. Натали сказал(а):

    В браузере ошибку выдал:

    Не удается получить доступ к сайту
    Не удается найти DNS-адрес сервера www.

    Как исправить?

  25. Натали сказал(а):

    Всем здравствуйте!
    Подскажите пожалуйста, как исправить, с линуксом недавно дружить начала…
    Во время установки локального сервера lamp глупо дала комманду

    sudo chmod -R 777 /etc

    теперь при обновлении локального сервера sudo /etc/init.d/apache2 restart

    выходит ошибка:
    sudo: запись в /etc/sudoers разрешена всем
    sudo: no valid sudoers sources found, quitting
    sudo: не удаётся инициализировать модуль политики

    Какие права у папке ets нужно вернуть?

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

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