понедельник, 14 января 2013 г.

Поднимаем веб-сервер на виртуальной машине

Установка веб-сервера будет производиться на VitrualBox, в качестве операционной системы будем использовать Debian 6.0.6.
1. Скачиваем VirtualBox тут.
Либо устанавливаем с репозиториев Debian, просто введите в терминале:
$ sudo apt-get install virtualbox

2. Пока только скачиваем Debian (о скачивании и установке Debian можно прочесть здесь).

3. Открываем наш VirtualBox и создаем новую виртуальную машину, выставляем необходимые параметры и т. д.

Пример параметров моей виртуальной машины:
Имя: Debian_Server
Тип: Linux
Версия: Debian
Объем оперативной памяти: 512 mb
Жесткий диск: vdi, динамический, 30 gb
Подключенные носители: контроллер IDE — образ с Debian, контроллер SATA — наш жесткий диск.
Остальные параметры пока не трогаем.

4. Запускаем нашу виртуальную машину и устанавливаем Debian.

5. Debian установили, перезагружаемся и логинимся (можно под рутом).
Перед нами полноценная, рабочая ОС.

6. Первым делом установим службу SSH для удаленного доступа к компьютеру:
# apt-get install ssh 
символ # означает, что действия мы выполняем с правами суперпользователя.

7. Мы убедились, что ОС установилась правильно, теперь отключаем виртуальную машину для того, чтобы настроить параметры сети в VirtualBox:
# shutdown -h now 
параметр -h (halt) выключение, now — сейчас.

8. Заходим в настройки виртуальной машины и в разделе «Сеть» выбираем тип подключения «Сетевой мост». 
Подтверждаем нажатием ОК.

9. Снова запускаем нашу виртуальную машину. Параметры сети мы выставили, теперь ее надо настроить:
# ifconfig 
нас интересует блок eth0, так как в параметрах сети VirtualBox я выбрал eth0.
пример:

Ваш ip-адрес показан после inet addr: например inet addr: 192.168.0.7, запомните его.

Для того, чтобы удаленно управлять сервером, нужно настроить ssh.
Так как у меня роутер (D-link), то мне необходимо пробросить 22-ой порт для SSH. Для этого нужно залогиниться в админку роутера и добавить виртуальный сервер. 
Гуглите на тему «проброс портов роутер 'имя вашего роутера'".
Вот инструкция на русском языке для роутеров D-link.
Это возможно только тогда, когда вы имеете так называемый "белый" адрес, об этом Вы можете узнать у своего провайдера.

Я же покажу свои параметры: 

Получается вот такая штука (добавили наш сервер в виртуальный список серверов роутера): 
На этом настройка сети закончена.

10. «Каркас» сервера у нас готов, теперь надо сделать из него полноценный веб-сервер.
Будем использовать сервер LAMP.

Устанавливаем apache2 и php5:
# apt-get install apache2 php5 libapache2-mod-php5 

Проверяем наш сервер. В браузере компьютера пишем адрес вашего сервера, пример:
http://192.168.0.7 

Сервер функционирует. У нас там пока ничего нет, поэтому идем дальше.

11. Перезагрузим наш сервер apache2:
# /etc/init.d/apache2 restart

12. Проверяем работоспособность php.
Каталогом нашего сайта является /var/www/ 
В нем будет храниться все что нам нужно для сервера.

Создадим элементарную страницу html с текстом «This is a test page»:
# nano /var/www/test.html 
и пишем туда:
<html><body><h1>This is my test page!!!<h1>
<p>And this is a second line of my page :)<p>
</body></html> 


Сохраняем: Ctrl+O и выходим: Ctrl+X из nano.

Запускам наш сервер в браузере (в моем случае):
http://192.168.0.7/test.html
Работает.

Еще одна проверка (теперь файл с расширением php):
# nano /var/www/test2.php
пишем туда:
<?php
   phpinfo();
?> 
Сохраняем.
Запускаем:
http://192.168.0.7/test2.php 

13. Теперь нужно управлять нашим сервером с клиента (основной ОС). Нам нужно установить доступ по SSH.
Заходим на клиентской машине в mc. 
Жмем F9
В меню «Левая панель» выбираем Shell-соединение.
Вводим имя машины, пример: [email protected] 
Жмем Enter.

Далее вас попросят подтвердить свое решение и ввести пароль.
После того, как вы ввели пароль, вы можете управлять файлами вашего сервера: 

14. Теперь мы можем скидывать файлы с машины клиента на машину сервера. 
Пробуем: 


Наш файл photo.jpg, нужно скопировать в каталог /var/www/ нашего сервера.
Для этого в левой вкладке открываем директорию /var/www/ в правой каталог с нашим файлом. Жмем F5. Подтверждаем. 
Все, теперь файл у нас на сервере.

15. Файл у нас есть, теперь выложим его на нашей страничке test3.php:
# nano /var/www/test3.php 
пишем туда:
<?php
echo «This is my first photo on this page (;»;
echo «img src='/photo.jpg'>»;
?> 

либо, как пример применения переменной:
<?php
$a = «img src='/photo.jpg'>»;
?>
<?php
echo «This is my first photo on this page (;»;
echo $a;
?>


Запускаем (результат вывода должен быть одинаковым):
http://192.168.0.7/test3.php 

16. Установим mySQL:
# apt-get install mysql-server mysql-client php5-mysql 
во время установки появится окно настройки mySQL-server, необходимо ввести пароль:
и подтвердить его: 

17. Устанавливаем phpMyAdmin:
# apt-get install phpmyadmin 
в ходе установки, будет предложено выбрать дефолтный сервер, с помощью пробела
выбираем apache и жмем Enter.

Настройка база данных, соглашаемся:

Выставляем пароли: 


Подтверждаем: 

18. Редактируем конфиг apache2: 
# nano /etc/apache2/apache2.conf 
с помощью клавиши PageDown двигаемся в самый конец файла и прописываем строку:
Include /etc/phpmyadmin/apache.conf 

Перезапускаем apache:
# /etc/init.d/apache2 restart 

19. Теперь мы имеем возможность зайти на phpmyadmin:
Пишем в браузере:
http://192.168.0.7/phpmyadmin/ 

В строке пользователь, пишем: root, в строке пароль: ваш пароль.
Имеем вот такое дело:
На этом, пожалуй, базовая установка и настройка сервера LAMP окончена.

12 комментариев:

ins1de комментирует...

Автор красаучек, развернул тоже самое на убунтосервере.

Анонимный комментирует...

Здорово! Доступно и понятно.
Для новичка немного недосёк какой пароль вводить "17. Устанавливаем phpMyAdmin.....Выставляем пароли:". Пароль дебиан-рут, или новый создаю? Также "19. Теперь мы имеем возможность зайти на phpmyadmin". Это штука дает регистрировать пользователей, которые могут создавать свои странички на моем сервере, или рассматривается создание какой-то-там базы данных, к которой прикручивается вэб-интерфейс и теперь все те, кто работают с моим вэб-интерфейсом могут обращаться к этому серверу? А файлы базы (люди набирают данные) в каком каталоге/файле создаются?
Прошу извинить за "смешные" вопросы.
Было бы интересно продолжение вида "создаем телефонную книжку", которую могут заполнять все пользователи, использующие вэб-интерфейс (тупо браузер) заполняя "базу" созданного нами сервера. Чтобы видеть практическое применение. Вместо "книжки" каждый изобретет свое хитроумное детище , но механизм передачи данных клиент-сервер хотелось бы увидеть на самом простом. Если не сложно, пожалуйста!
Дмитрий.

Amet Umerov комментирует...

>Для новичка немного недосёк какой пароль вводить
Новый.
>Было бы интересно продолжение вида "создаем телефонную книжку", которую могут заполнять все пользователи, использующие вэб-интерфейс (тупо браузер) заполняя "базу" созданного нами сервера.
Это очень просто, на php сделать за 5 минут. Гулить очень просто. Просто создаём форму и POST-запросом отправляем инфу в нашу БД.
>или рассматривается создание какой-то-там базы данных, к которой прикручивается вэб-интерфейс и теперь все те, кто работают с моим вэб-интерфейсом могут обращаться к этому серверу?
Ага

Анонимный комментирует...

Теперь понятно. А в гугле они сразу к делу приступают и не понять, с какой целью все мутится.
Ну поставил сервер и что дальше, зачем он нужен?
Разрабатывая локальную базу данных, необходимо, чтобы 10 человек как-то сбрасывали в центральную базу все свои данные. Это можно прикрутить через импорт/экспорт (например, база написана на FoxPro). Сервер позволяет обойтись без этой приблуды. Минус в том, что если упадет сервер (всякое бывает), пропадут все данные базы. Если упадет комп одного из набиральщиков, пропадет лишь его работа. Тут можно порекомендовать сбрасывать файл общей базы с сервера каждому набиральщику данных.

Спасибо, статья отличная.

Анонимный комментирует...

шаги 13-15 и 19 не проходят нормально, на шаге 19 вообще предлагает сменить имя ибо чего то там ему не подходит...
Что делать?

Amet Umerov комментирует...

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

Анонимный комментирует...

ладно... но все таки что делать? у меня убунту. мс отказівается заходить да и на myadmin тоже не заходит - еррор...

Анонимный комментирует...

воот, а как сделать теперь чтоб он по имени на страницу переходил, а не по ip?

Amet Umerov комментирует...

В hosts прописать имена.

Анонимный комментирует...

Скажите а как теперь сделать так что бы можно с любого компьютера через инет заходить на сайт?

Amet Umerov комментирует...

Для этого вам нужен внешний IP-адрес, желательно статический.
Если сидите за роутером, то необходимо также пробросить порты.

Анонимный комментирует...

Спасибо, помог, коротко и по делу!