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

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

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

    grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

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

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

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