Компьютерная помощь
Сайт комнаты "Компьютерная помощь"

Web сервер Apache + PHP +MySQL + phpMyAdmin в локальной сети на FreeBSD 8.2

freeBSD | 28 июня 2016 г.

Эта статья собрана из собственной шпаргалки, которую я составлял когда-то для себя. Предполагается, что читатель знаком с основами работы на FreeBSD и имеет навыки использования текстового редактора “ee”, а так же имеет представление о работе веб-сервера, препроцессора гипертекста PHP и баз данных MySQL. Знаком с терминами, используемыми в данной статье и не имеет претензий по орфографическому содержанию текста.

Я описываю установку и настройку веб-сервера в 4 этапа.

  1. Установка FreeBSD.
  2. Первоначальная настройка. Настройка SSH, FTP.
  3. Установка и настройка Apache, PHP, MySQL, phpMyAdmin.
  4. Окончательная настройка и работа с сервером.

Задача: Необходимо собрать веб сервер в локальной сети для создания сайта с последующим переносом его на сторонний хостинг.
Бюджет: 0 рублей.
Средства: Настольный компьютер, художник.

Исходя из вышеизложенного, была выбрана последняя, на момент сборки сервера, версия ОС FreeBSD 8.2-RELEASE доступная на сайте http://www.freebsd.org/. Т.к. наш сайт не имел ни каких требований к версиям ПО, я решил устанавливать последние версии Apache, PHP, MySQL доступные из портов.

Приступим.

1.Установка FreeBSD

Я думаю не стоит описывать процесс установки FreeBSD слишком подробно, поэтому коротко по пунктам…

Первое меню Country Selection
Выбираем страну. Я выбрал Russian Federation, она находиться под номером 182, и жмем OK. 

System Console Keymap
Долго не думая выбираем Russia KOI8-R и OK.

Sysinstall Main Menu
Выбираем Standart

Далее редактор разделов FDISK просит нас разделить место. Я выбираю Use Entire Disk кнопкой “A” и созданный раздел freebsd ставлю загрузочным кнопкой “S”. После нажатия “S”, напротив раздела в поле Flags, появляется флаг “A” и выбираем Finish кнопкой “Q”.

Меню Install Boot Manager
Т.к. у меня будет установлена одна ОС, я выбираю None и жму OK.

Далее выскакивает программа Disklabel Editor. Я доверяю ей монтировать все по умолчанию и снова нажимаю “A” затем “Q”.

Меню Choose Distributions
Установщик предлагает нам выбрать необходимые дистрибутивы. Я не буду выбирать ни чего поэтому Exit и OK.

Choose Installation Media
В этом меню необходимо указать источник, из которого мы хотим установить FreeBSD. Мы хотим его установить с диска, образ которого предварительно был скачан с сайта FreeBSD и записан на болванку, поэтому выбираю CD/DVD и жму OK.

Установщик сообщает о том, что если мы продолжим установку, то потеряем данные с диска и вроде бы (не уверен в своем английском) рекомендует сделать бэкап. Жмем Yes.

Далее мы видим поздравление и пару советов, которые оставляем без особого внимания, и жмем OK. На все следующие вопросы установщика я отвечаю No и в конце получаю сообщение которое говорит что необходимо установить пароль для пользователя root. Жму OK и ввожу пароль пользователя.

Далее, отказываюсь от посещения меню конфигурации, отвечая No, на следующий вопрос и попадаю в меню sysinstall. Жму на кнопку Exit Install. В появившемся окне подтверждаю свой выбор, нажимая кнопку Yes. Достаю диск и нажимаю OK.

Компьютер уходит на перезагрузку и после этого мы увидим загрузку FreeBSD и приглашение к началу работы в виде строки login:

2. В серверной холодно и шумно – перейдем в кабинет (Настройка удаленного доступа)

Я подумал что было бы хорошо поскорее убраться от сюда к себе в кабинет и управлять сервером удаленно. Для этого мне необходимо настроить сеть, создать пользователя и запустить демон SSH. Заходим в систему под пользователем root. Теперь настроим сеть. Необходимо узнать как FreeBSD назвал интерфейс сетевой карты компьютера, для этого наберем

# ifconfig

и увидим все доступные интерфейсы. Мой назван ae0 и так как у меня в сети есть DHCP сервер, я просто говорю ему получить настройки от DHCP, добавив в файл /etc/rc.conf строку ifconfig_ae0=”DHCP”.

# echo 'ifconfig_ae0="DHCP"' >> /etc/rc.conf

И за одно назовем наш компьютер localhost.

# echo 'hostname="localhost"' >> /etc/rc.conf

Следующим шагом будет создание пользователей. Подумаем. Мне будет нужен доступ по SSH к серверу и по FTP к сайту. Художник тоже захочет доступ по FTP к сайту. Значит нужно создать двух пользователей минимум.
Поехали.

Набираем

# adduser

и заполняем поля:
Username: sb (имя пользователя для входа)
Full name: Belov Sergey (полное имя пользователя)
Дальше оставляем все поля пустыми, т.е. оставляем так, как предлагает FreeBSD.
После вводим пароль.
Следующий вопрос пропускаем – Enter.
Видим заполненную анкету пользователя и соглашаемся, набирая Yes. Add another user? (yes/no) отвечаем No.

Теперь по аналогии нужно добавить пользователя для художника и займемся запуском SSH и FTP.

Мы не будем вручную запускать эти два демона, это сделает сама FreeBSD после того как мы добавим в файл /etc/rc.conf строки sshd_enable=”YES” и ftpd_enable=”YES”.

# echo 'sshd_enable="YES"' >> /etc/rc.conf 
# echo 'ftpd_enable="YES"' >> /etc/rc.conf

Еще нам нужно отредактировать файл /etc/group для того чтобы пользователь sb мог подключиться к машине по SSH.

# ee /etc/group

После этого добавим пользователя sb в группу wheel. Найдите в файле строку wheel:*:0:root и отредактируйте ее чтобы получилось так

wheel:*:0:root,sb

Перезагрузим машину и если все сделано правильно, должны запуститься SSH и FTP, а так же заработать сеть и интернет.

# reboot

В процессе загрузки я увидел какие то странные рисунки инопланетян и это говорит о том что SSH заработал кроме того строки “Starting sshd” и “Starting ftpd” подтверждают мои догадки.

И так, «Предварительная настройка» завершена. Осталось лишь проверить сеть и узнать IP адрес компьютера в локальной сети. Заходим под root и выполняем ifconfig

# ifconfig ae0

В поле inet я могу увидеть IP адрес который DHCP присвоил моему ПК 192.168.51.61. Записываю его на листик бумаги и для полной уверенности в работе сети делаю ping.

# ping ya.ru

Яндекс ответил – значит, все получилось. Жмем CTRL+C для прерывания работы программы ping и пишем exit.

# exit

Иду курить и перемещаюсь в кабинет.

3.Установка MySQL

Теперь с другого рабочего места я могу спокойно управлять нашим веб – сервером через SSH, для этого я буду использовать PUTTY. Устанавливаю подключение с типом SSH на хост 192.168.51.61 порт 22 и захожу в систему под пользователем sb. Сразу хапаю себе права root

$ su

Далее нужно обновить порты. Там мы найдем то что нам нужно. Я делаю это в 3 шага

# portsnap fetch

Ждем.

# portsnap extract

Ждем =)

# portsnap update

Ну на последней операции ждать долго не нужно и это радует. Теперь поищем нашу MySQL в портах. Для этого пишем

# cd /usr/ports/databases 
# ls | grep mysql | grep -server

Ну вот, у меня mysql55-server последняя, буду ставить ее. Для этого продолжаем

# cd mysql55-server 
# make install clean

Мы видим окно опций для пакета mysql-server 5.5.12. Ни чего не меняя жмем OK.

Сразу скажу, что установка MySQL будет самой длинной и примерно займет 10 минут. Курим, но не долго - будут появляться еще опции, на которые придется обратить внимание, но менять мы тоже ни чего не будет, поэтому OK везде.

Установка закончена?

Теперь необходимо установить базы, это обычно делалось так:

# mysql_install_db

но почему в версии 5.5 это выдает FATAL ERROR: Could not find ./bin/my_print_defaults который исправно лежит в /usr/local/bin =). Это лечиться легко – делаем так

# cd /usr/local
# ; mysql_install_db

Далее необходимо выдать права пользователю и группе mysql на доступ к базам:

# chown mysql /var/db/mysql
# chgrp mysql /var/db/mysql

Добавим строку mysql_enable=”YES” в /etc/rc.conf для автоматического старта сервера.

# echo 'mysql_enable="YES"' >> /etc/rc.conf

И перезагрузим машину

# reboot

После перезагрузки мы должны увидеть строку Starting mysql и никаких ошибок ниже. Если все хорошо заходим в систему и установим пароль для root

# mysqladmin -u root password 123

На этом мы пока оставим MySQL в покое и перейдем к следующему шагу.

4.Установка Apache

Снова заходим в порты и смотрим доступные версии apache.

# cd /usr/ports/www/
# ls | grep apache

У меня последняя apache22. Дальше делаем по аналогии с mysql

# cd apache22 
# make install clean

В опциях пакета apache 2.2.18 я ставлю крестик напротив MYSQL и убираю крестик напротив IPV6. Жму OK. Опции других пакетов я оставлю, пожалуй, по умолчанию. По завершению установки давайте подкрутим кое чего в файле /usr/local/etc/apache22/httpd.conf но сперва сделаем копию этого файла.

# cd /usr/local/etc/apache22/
# cp httpd.conf https.sample

Теперь откроем его

# ee httpd.conf

и найдем строку

#ServerName www.example.com:80

Приведем ее к такому виду (обратите внимание на убранный символ # в начале строки – обязательно снимите комментарий)

ServerName localhost

Сохраняем файл. Добавляем Apache в «автозапуск»

# echo 'apache22_enable="YES"' >> /etc/rc.conf

И рестарт!

# reboot

Если все успешно, мы можем с любой локальной машины в браузере набрать адрес сервера и увидеть веб-страницу с текстом “It works!”.

Если этого не произошло то попробуйте найти ошибку при запуске в ручную воспользовавшись командами:

# apachectl start
# apachectl restart
# apachectl stop

Так же попробуйте выполнить команду

# kldload accf_http

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

5.Установка PHP

Вот мы и добрались до установки последнего из основных элементов нашего сервера. PHP как все остальное мы будем ставить из портов. Для этого делаем

# cd /usr/ports/lang
# ls |grep php

Последняя версия php52 и расширения для него php52-extensions

# cd php52
# make install clean

В опциях пакета php 5.2.17 отмечаю APACHE и продолжаю установку остальные пакеты не трогаю как обычно =).
Ждем.

Теперь установим расширение для PHP. Заходим

# cd /usr/ports/lang/php52-extensions

Делаем

# make install clean

И в опциях пакета отмечаем то что нам нужно. Я начал листать с конца списка и отметил: SOCKET, PDF ,MYSQL, MSSQL, FTP, FILEINFO
В опциях пакета png 1.4.5 отмечаю APNG
В опциях пакета php52-aqlite 5.2.17 отмечаю UTF8 остальные пакеты оставляю «как есть».

Ну вот, с PHP разобрались – идем дальше.

6.Установка phpMyAdmin

phpMyAdmin является удобным инструментом для управления базами MySQL. Это последнее что мы будем устанавливать и далее нас ждет настройка и проверка того что мы слепили.
Для установки phpMyAdmin заходим

# cd /usr/ports/databases

делаем

# ls | grep phpmyadmin

У меня доступна phpmyadmin211 – поставим ее

# cd phpmyadmin211
# make install clean

Опции пакетов не меняем, везде жмем OK.
Ждем окончания установки. Вот и все. Самая долгая часть подошла к концу. Нам осталось только настроить все это на «совместную деятельность» и можно начинать работу над нашим сайтом.

7.Окончательная настройка

Что нам осталось сделать и что уже сделано?

  1. MySQL установлен и настроен.
  2. Apache установлен и работает.
  3. PHP установлен но его нужно прикрутить к Apache.
  4. phpMyAdmin установлен но его тоже нужно прикрутить к Apache.
  5. Художник установлен и работает но и его тоже нужно прикрутить к нашему серверу по FTP как и меня.

Начнем с пункта 3. Нам необходимо сообщить Apache что файлы .php необходимо открывать через интерпретатор php. Откроем файл конфигурации Apache и добавим туда несколько строк.

# ee /usr/local/etc/apache22/httpd.conf

Находим строку <ifmodule mime_module> и в конце этого блока перед строкой </ifmodule> допишем две строки

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Теперь найдем строку

DirectoryIndex index.html

в блоке <ifmodule dir_module> </ifmodule> и допишем туда index.php чтоб Apache знал что index файл в директории может быть еще и php. Так же можно туда дописать index.htm. У меня получилось так:

DirectoryIndex index.html index.php index.htm

Теперь не выходя из файла, добавим туда связь с phpMyAdmin. Нам нужно чтоб Apache знал где находиться phpMyAdmin и разрешал доступ к ней пользователям. Так же нам необходимо создать Alias чтоб мы могли попадать в phpMyAdmin из адресной строки например так http://192.168.51.61/pma.

Найдем в файле секцию <ifmodule alias_module=""> </ifmodule> и в нее добавим такую строку

Alias /pma "/usr/local/www/phpMyAdmin211/"

И последнее что мы добавим это:


   AllowOverride None
   Options None
   Order allow,deny
   Allow from all

Сохраняем файл и выходим. Выполняем

# apachectl configtest

И если появилась строка “Syntax OK” значит файл мы заполнили правильно.

Теперь добавим доступ по FTP себе и художнику. Создаем файл где откроем доступ пользователям

# touch /etc/ftpchroot

Откроем доступ себе добавив туда строку

# echo 'sb /usr/local/www/apache22/data/' >> /etc/ftpchroot

Откроем доступ художнику

# echo 'hd /usr/local/www/apache22/data/' >> /etc/ftpchroot

Выставим права на директорию

# chmod 777 /usr/local/www/apache22/data

Теперь настроим phpMyAdmin и на этом наш крестовый поход окончен. Заходим

# cd /usr/local/www/phpMyAdmin211

Заменяем файл конфигурации предложенным шаблоном

# cp config.sample.inc.pnp config.inc.php

Открываем в редакторе

# ee config.inc.php

В строке

$cfg['blowfich_secret'] = ''

вписываем пароль к базе вот так

$cfg['blowfich_secret'] = '123'

Сохраняем файл и перезагружаем машину

# reboot

Чтобы проверить работу нашего сервера заходим из браузера 192.168.51.61/pma
Вы должны увидеть интерфейс phpMyAdmin. Вводим в поля логин и пароль root/123 и если попадаем в консоль управления базами данных, то все компоненты нашего сервера работают исправно.

Далее убедимся что доступ по FTP пользователям sb и hd открыт. Через любой FTP клиент установим подключение к серверу 192.168.51.61.

 

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

http://www.mysql.ru/docs/
http://www.php.net/manual/en/
http://httpd.apache.org/docs/2.0/ru/
http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/

 

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru yandex.ru

При цитировании, копировании, клонировании материалов с сайта целиком или частично, ссылка на страницу, откуда был скопирован материал, обязательна! При нарушении данных условий прошу незамедлительно удалить со своих ресурсов скопированный материал. Администрация сайта.

Комментариев: 4
    

    Комментариев: 4

    •  AT90 | 15 ноября 2013 в 21:00:03 (ссылка)

      Спасибо за статью! Очень помогла при изучении php и mysql

    •  alex | 24 января 2014 в 20:56:40 (ссылка)

      Зачем все время перезагружать машину???

      мы же не в виндусе...

      достаточно рестартовать нужные сервисы.

    •  Dmitriy | 15 февраля 2014 в 05:53:38 (ссылка)

      хотелось бы немного добавить к статье:

      1) При установке баз данных на mysql могут не помочь действия, описанные в статье. Если ошибка продолжает сыпаться вводим команды

      # cd /usr/local
      # ./bin/mysql_install_db —datadir=/var/db/mysql —user=mysql

      2) Когда конфигурируем apache вернее прописать после блока

      AllowOverride None
      Options None
      Requare all granted

      Запись такого же вида, толко для phpMyAdmin

      AllowOverride None
      Options None
      Requare all granted
    •  e | 10 августа 2014 в 15:29:22 (ссылка)

      Starting with version PHP55-5.5.10 for Apache24 on FreeBSD 9+ is necessary to include the module *ports/www/mod_php55*

      Settings (make config) both ports/lang/php55 and *ports/www/mod_php55* should be the same.

      Then just build ports/lang/php55-extensions

      http://stackoverflow.com/questions/22802213/freebsd-9-2-apache24-php55-5-5-10-apache-is-not-loading-the-php-extensions

    Оставьте комментарий!

    Используйте нормальные имена

    Вы можете войти под своим логином или зарегистрироваться на сайте.

    (обязательно)