Автор Тема: Веб-серверы. ALT Linux 7.0 Server - лабораторные работы  (Прочитано 16916 раз)

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 967
    • Пошаговые инструкции
    • Email
Apache2  Первоначальная установка. Запуск статической страницы

Apache2 Запуск PHP скриптов.

Веб-сервер Nginx. Первоначальная установка.

Использование nginx и php5-fpm для запуска PHP скриптов

Форум phpBB  на nginx и php5-fpm.

Архивирование, аварийное восстановление и перенос сайтов на PHP

Веб-сервер и домашние каталоги пользователей.

Виртуальный хостинг на Apache2

Nginx и Apache2

Виртуальный хостинг на  Nginx



Apache2  Первоначальная установка. Запуск статической страницы

Видеоролик можно скачать по адресу:
http://salomatin.ru/httpd-L1.ogv
http://youtu.be/qWAkkE8COvI

В файле /etc/httpd2/conf/sites-available/default.conf найдите и поправьте параметр RewriteCond %{HTTPS} != on на off.

Шаг № 1:
В /etc/httpd2/conf/sites-available/default.conf  находим строку:
DocumentRoot "/usr/share/doc/indexhtml/ "заменяем или комментируем, т.е. ставим перед ней знак # и пишем свою:
DocumentRoot "/var/www/html/"или другую, какую вам надо. Размещаете туда свой сайт. В этом же файле находите строку:
<Directory "/usr/share/doc/indexhtml/">заменяете
<Directory "/var/www/html/">
Шаг № 2: В /etc/httpd2/conf/include/Directory_html_default.conf  дописываете в строку
Options Includes FollowSymLinks MultiViewsслово Indexes и получаете
Options Indexes Includes FollowSymLinks MultiViews
Шаг № 3: (не обязателен)
Для того чтобы не терять возможность читать документацию вставляем в самый конец
 /etc/httpd2/conf/sites-available/default.conf
Alias /doc "/usr/share/doc/indexhtml/"
<Directory "/usr/share/doc/indexhtml/">
Include conf/include/Directory_html_default.conf
</Directory>

Шаг № 4: запускаем apache2
[root@server ~]#service httpd2 start


заходим по адресу http://192.168.0.1 и видим тестовую страницу   It Works
или новую, которую разместили сами в каталог /var/www/html/

заходим по адресу http://192.168.0.1/doc и видим документацию.
« Последнее редактирование: 27.04.2014 20:21:47 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 967
    • Пошаговые инструкции
    • Email
Apache2 Запуск PHP скриптов.
 

Видеоролик можно скачать по адресу:
http://salomatin.ru/httpd-L2.ogv
http://youtu.be/8Hl7pqorqgM

создаем файл:

[root@server ~]# cat >> /var/www/html/index.php
<?php phpinfo(); ?>
нажимаем Ввод
сохранить (ctrl+d)
в каталоге  /var/www/html/ появился файл index.php всего с одной строкой
<?php phpinfo(); ?>
заходим по адресу http://192.168.0.1/index.php и видим вывод полученный после исполнения команды PHP, где PHP выводит нам всю информацию о себе. Номер версии и так далее.
« Последнее редактирование: 14.06.2013 20:21:54 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 967
    • Пошаговые инструкции
    • Email
Веб-сервер Nginx. Первоначальная установка.

Видеоролик можно скачать по адресу:
http://salomatin.ru/httpd-L3.ogv
http://youtu.be/4G1U1p-ybso


Останавливаем Apache2, так как он занимает порт  80.

[root@server ~]#service httpd2 stop
Шаг №1: Ставим Nginx

[root@server ~]#apt-get install nginx

Шаг №2: Запускаем Nginx

Редактируем file /etc/nginx/nginx.conf находим

include /etc/nginx/sites-enabled.d/*.conf;
заменяем на

include /etc/nginx/sites-available.d/*.conf;
Редактируем file /etc/nginx/sites-available.d/default.conf ставим реальный IP-адрес
Строка 2:
listen  192.168.0.1:80;
В районе 29 строки  вставляем

location ~* ^.+\.(ogv|iso|html)$ {
root /var/www/html;
}


Запускаем Nginx

[root@server ~]#service nginx restart
заходим по адресу http://192.168.0.1 и видим тестовую страницу It Works
или новую, которую разместили сами в каталог /var/www/html/

Статические файлы *.ogv *.iso *.html либо любые другие *.jpg добавляются через вертикальную черту в
location ~* ^.+\.(ogv|iso|html|jpg)$ {

Добавляем и тестируем: Например ris.jpg  смотрим http://192.168.0.1/ris.jpg
« Последнее редактирование: 14.06.2013 20:24:43 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 967
    • Пошаговые инструкции
    • Email
Использование nginx и php5-fpm для запуска PHP скриптов

Видеоролик можно скачать по адресу:
http://salomatin.ru/httpd-L4.ogv
http://youtu.be/n93I5ZqKdvM



Шаг №1: Ставим php5-fpm

[root@server ~]#apt-get install php5-fpm-fcgi

В file /etc/nginx/sites-available.d/default.conf еще добавляем

location ~ \.php$ {
root /var/www/html;
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
}

location ~ /\.ht {
deny all;
}

Перезапускаем Nginx
[root@server ~]#service nginx restart
Перезапускаем php5-fpm
[root@server ~]#service php5-fpm restart
помним, что в предыдущей лабораторной работе в каталоге  /var/www/html/ появился файл index.php всего с одной строкой
<?php phpinfo(); ?>

заходим по адресу http://192.168.0.1/index.php и видим вывод полученный после исполнения команды PHP, где PHP выводит нам всю информацию о себе. Номер версии и так далее. А также показывает какой web сервер открыл информационную страничку. 


« Последнее редактирование: 14.06.2013 20:27:51 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 967
    • Пошаговые инструкции
    • Email
Движки  PHP на примере:


Видеоролик можно скачать по адресу:
http://salomatin.ru/httpd-L5.ogv
http://youtu.be/QA2lTJtF6-8

Форум phpBB

На nginx и php5-fpm.

скачиваем из инета скрипт phpBB, у меня он получился в таком виде phpbb-3.0.11-ru.zip

размещаем архив в каталоге /var/www/html и распаковываем его командой

[root@server html]#unzip phpbb-3.0.11-ru.zip

устанавливаем права

[root@server ~]#chown -R _php_fpm:_webserver /var/www/html/phpBB3
Заходим по адресу http://192.168.0.1/phpBB3/index.php

На Apache2

Останавливаем nginx, так как он занимает порт  80.

[root@server ~]#service nginx stop
запускаем Apache2

[root@server ~]#service httpd2 start
устанавливаем права

[root@server ~]#chown -R apache2:apache2 /var/www/html/phpBB3
[root@server ~]#chmod -R 660 /var/www/html/phpBB3
[root@server ~]#chmod -R u+X /var/www/html/phpBB3

Заходим по адресу http://192.168.0.1/phpBB3/index.php
« Последнее редактирование: 14.06.2013 20:31:25 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 967
    • Пошаговые инструкции
    • Email

Архивирование, аварийное восстановление и перенос сайтов на PHP

на примере Joomla

Видеоурок можно скачать по адресу:
http://salomatin.ru/109.ogv





Шаг №1:  Останавливаем работу сайта
[root@server ~]#service httpd2 stopШаг №2:  Создаем архивы ( на примере Joomla)
заходим в каталог /var/www/html/
[root@server ~]#tar -cvf - joomla | gzip -c > joomla1.tar.gzСоздаем архив базы данных. Выгрузить базу MySQL можно командой:
[root@server ~]# mysqldump -u root -p vova_joomla > joomla1.sqlспросит пароль рута или новый, если поменяли

Шаг №3:  Запускаем работу сайта
[root@server ~]#service httpd2 startКопируем  в надежное место
joomla1.tar.gz
joomla1.sql

Восстановление:

Шаг №1:   Восстанавливаем базу данных

На новом сервере лучше предварительно выполнить урок № 7 и проверить работу скрипта.

Чтобы загрузить базу, нужно сначала создать пустую, а для надёжности предварительно удалить старую:
[root@server ~]#mysql -u root -pспросит пароль рута
mysql> drop database if exists vova_joomla;
mysql> create database vova_joomla;
mysql> quit
а затем в неё загрузить данные:
[root@server ~]#mysql -u root -p vova_joomla < joomla1.sqlспросит пароль рута

Шаг №2:  Восстанавливаем каталог Joomla

размещаем архив joomla1.tar.gz в каталоге /var/www/html/  и распаковываем его командой
[root@server ~]#tar -zxvf joomla1.tar.gzудаляем из каталога архив
проверяем права, если что подправляем
[root@server ~]#chown -R apache2:apache2 /var/www/html/joomla
[root@server ~]#chmod -R 660 /var/www/html/joomla
[root@server ~]#chmod -R u+X /var/www/html/joomla
в нашем примере этого делать не пришлось

Проверяем работу сайта.
Сайт восстановлен.
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 967
    • Пошаговые инструкции
    • Email
Веб-сервер и домашние каталоги пользователей.

Видеоурок можно скачать по адресу:
http://salomatin.ru/106.ogv


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

Это может заинтересовать школы, Так каждый класс и даже каждый ученик, может размещать свои сайты и веб-страницы. Управление таким сайтом осуществляется по личному логину и паролю пользователя и  не нужны права администратора.

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

В apache2 все изначально настроено и реализовано через каталог public_html.

Если рядовой пользователь своими правами в домашней директории создаст каталог public_html, то он автоматически становиться видимым для всеобщего обозрения.

Для этого достаточно набрать адрес сервера, с именем пользователя, используя знак "~" .
Например:
http://школьный_сервер/~ivanov
http://школьный_сервер/~class10a

Шаг № 1:  Создаем пользователя

Заходим веб-браузер Mozilla https://192.168.0.1:8080

Центр управления системой >> Пользователи >> Новая учётная запись: >> заполняем окно | pavel |
>>Создать>>


Шаг №2: включаем пользователя в группу apache2  и даем право доступа
Переходим в директорию /home затем
[vova@server ~]# chown pavel.apache2 pavel
[vova@server ~]#chmod g+rx pavel
Шаг №3: Пользователь pavel в своей домашней директории и создает там каталог public_html, куда размещает свою страничку и целый веб-сайт. 

Все.

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

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

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

Шаг №4:  Создаем локального пользователя
[vova@server ~]# adduser class10a
[vova@server ~]# passwd class10a
[vova@server ~]#chmod g+rx class10a


Шаг №5: включаем пользователя в группу apache2 и даем право доступа. Переходим в директорию /home затем
[vova@server ~]# chown class10a.apache2 class10a
« Последнее редактирование: 26.06.2014 20:31:14 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 967
    • Пошаговые инструкции
    • Email


Виртуальный хостинг на Apache2

Видеоурок можно скачать по адресу:
http://salomatin.ru/110.ogv




Виртуальный хостинг - это когда веб-запросы приходят на один IP - адрес, но под разными именами.
Например,  DNSы salomatin.ru  и ivaniov.ru посылают на 81.81.81.81., а apache сам решает в какой каталог одного сервера направлять эти запросы. 

Шаг 1: Регистрируем домены на один IP адрес
Вообще то надо регистрировать где-нибудь в nic.ru, но мы для тестирования, чтобы не привлекать  DNSы,  создадим временные домены host1; host2; host3
на своем рабочем настольном компьютере допишем в файл  (как это делать в виндос не знаю)
от рута:
[vova@server ~]#cat >>/etc/hosts
192.168.0.1   host1
192.168.0.1   host2
192.168.0.1   host3
сохранить (ctrl+d)
заходим в директорию
/etc/chroot.d
и исполняем
[vova@server ~]#./resolv.allтестируем  со своего рабочего настольного компьютера от имени простого пользователя
ping host1
ping host2
ping host3
должны попадать на  IP школьного сервера

Шаг 2: Разрешаем загружать виртуальные сайты:

В file /etc/httpd2/conf/sites-start.d/000-default.conf
ports_all=yes
default=yes
vhosts=no
редактируем последнюю строку
vhosts=yesДля применения изменений запускаем
# a2chkconfig
Шаг 3: Прописываем виртуальные хосты

в файле /etc/httpd2/conf/sites-available/vhosts.conf дописываем

<VirtualHost *:80>
#ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/vhosts/host1
ServerName host1
#ServerAlias http://www.host1
ErrorLog /var/log/httpd2/host1-error_log
CustomLog /var/log/httpd2/host1-access_log common
</VirtualHost>
#
<VirtualHost *:80>
#ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/vhosts/host2
ServerName host2
#ServerAlias http://www.host2
ErrorLog /var/log/httpd2/host2-error_log
CustomLog /var/log/httpd2/host2-access_log common
</VirtualHost>
#
<VirtualHost *:80>
#ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/vhosts/host3
ServerName host3
#ServerAlias http://www.host3
ErrorLog /var/log/httpd2/host3-error_log
CustomLog /var/log/httpd2/host3-access_log common
</VirtualHost>

Шаг 4: Создаем домашние каталоги виртуальных хостов

в /var/www/vhosts создаем три каталога host1; host2; host3, в которых размещаем разные тестовые веб-страницы.

Заходим со своего рабочего настольного компьютера
http://host1
http://host2
http://host3
и в каждом видим свою тестовую страницу.
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 967
    • Пошаговые инструкции
    • Email
Nginx и Apache2

Видеоролик можно скачать по адресу:
http://salomatin.ru/httpd-L9.ogv
http://youtu.be/A0dVvtGxE0k

схема называется фронтэнд + бэкенд (frontend + backend)

Nginx принимает соединение от клиента и открывает соединение к Apache. Последний выполняет свою работу, отдает свой ответ nginx и Apache освобождает ресурсы. Далее nginx отдает контент клиенту. Виртуальные хосты и все другие настройки Apache работаю как и прежде.


Переключаем Apache2 для получения запросов от Nginx

В file /etc/httpd2/conf/ports-available/http.conf находим и запрещаем Apache2 слушать внешние 80 порты, разрешая локальный 80

#Listen 12.34.56.78:80
###Listen 80
Listen 127.0.0.1:80

перегружаем Apache2

[root@server ~]#service httpd2 restart
Запускаем Nginx

Редактируем file /etc/nginx/nginx.conf находим

include /etc/nginx/sites-enabled.d/*.conf;
заменяем

include /etc/nginx/sites-available.d/*.conf;
Редактируем file /etc/nginx/sites-available.d/default.conf ставим реальный IP-адрес

listen  192.168.0.1:80;

в строках

 proxy_redirect off;                            #убираем комментарий
 proxy_set_header Host $host;                   #убираем комментарий
 proxy_set_header X-Real-IP $remote_addr;       #убираем комментарий
 proxy_set_header X-Forwarded-For $remote_addr; #убираем комментарий
 proxy_pass http://127.0.0.1:80;                #это изменили



Если вы продолжаете по лабораторным работам, то для открытия php скриптов необходимо отключить исполнение скриптов в  nginx

##location ~ \.php$ {
##root /var/www/html;
#try_files $uri =404;
#include /etc/nginx/fastcgi_params;
#fastcgi_pass unix:/var/run/php5-fpm/php5-fpm.sock;
#fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
#}

#location ~ /\.ht {
#deny all;
#}

Запускаем Nginx

[root@server ~]#service nginx restart

Открываем http://192.168.0.1 и видим It works!

Дополнение:

Логи nginx записывает в файл /var/log/nginx/access.log , а в логи apache вместо реальных IP-адресов падает всегда один и тот же адрес - 127.0.0.1. Если мы все-таки хотим видеть там реальные адреса, то эта проблема решается установкой модуля rpaf, который будет складывать в лог IP-адреса, переданные через заголовки X-*.

Установим модуль:

[root@server ~]#apt-get install apache2-mod_rpaf
Включаем модуль:

[root@server ~]#a2enmod rpaf
И перезапускаем apache2:

[root@server ~]#service httpd2 restart
смотрим /var/log/httpd2/access_log

127.0.0.1 - - [24/Feb/2012:18:51:02 +0600] "GET /images/vkontakte.png HTTP/1.0" 304 -

192.168.56.1 - - [24/Feb/2012:18:53:58 +0600] "GET / HTTP/1.0" 304 -

192.168.56.1 - - [24/Feb/2012:18:53:58 +0600] "GET /index.css HTTP/1.0" 304 -
« Последнее редактирование: 14.06.2013 20:33:33 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Salomatin

  • Модератор
  • *****
  • Сообщений: 967
    • Пошаговые инструкции
    • Email
Виртуальный хостинг на  Nginx

на входе сервера 80 порт слушает  Nginx и в зависимости от имени, по которому обратился клиент с запросом  Nginx отправляет его на локальный Apache2  по адресу 127.0.0.1:80, как в предыдущем примере, либо на любой из виртуальных серверов, у нас это например  192.168.56.3, либо вообще на реальный сервер в локальной сети.

Все что нужно это скопировать  /etc/nginx/sites-available.d/default.conf в файл , например,
 /etc/nginx/sites-available.d/salomatin.conf
любое название, *.conf  и разместить рядом в одном каталоге

Отличия только в строчках
server_name
и
proxy_pass http://127.0.0.1:80/;
Какое имя напишите, то и будет Nginx ждать в запросе клиента
какой IP адрес укажите, туда и будет посылать на исполнения запроса.

Пример с рабочего сервера
server {
<------>listen  94.24.254.74:80;
<------># can't use wildcards in first server_name
<------>server_name salomatin.ru www.salomatin.ru;

<------>location / {
<------>    root /var/www/html;

<------><------># autoindex off;
<------><------># autoindex_exact_size on;
<------><------># autoindex_localtime off;

<------><------># expires off;

<------><------># cooperate with mod_realip in apache-1.3 or mod_rpaf in apache-2.x
<------><------><------>proxy_redirect off;
<------><------><------>proxy_set_header Host $host;
<------><------><------>proxy_set_header X-Real-IP $remote_addr;
<------><------><------>proxy_set_header X-Forwarded-For $remote_addr;
<------><------><------>proxy_pass http://172.16.8.231:80/;

И таких файлов *.conf у вас может быть сколько угодно.
« Последнее редактирование: 04.05.2013 22:09:54 от Salomatin »
Хочешь понять сам, объясни другому.
"Если уже все испробовал и ничего не помогает - почитай инструкцию"

Оффлайн Yaroslavskiy

  • Давно тут
  • **
  • Сообщений: 80
Прочитал Apache2  Первоначальная установка. Запуск статической страницы и выполнил все как написано, но ничего не изменилось. Установлен Alt Linux 7.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 6 271
  • Sunny 273 RUS crew
"ps ax|grep http" что показывает ? И "netstat -apn|grep http".

Но, честно говоря, я не сторонник исправлять конфигурацию по-умолчанию, как тут написано. Когда-то я свою инструкцию тут писал, правда для бранча p6, и не так подробно. На первый взгляд, в p7 без изменений.
« Последнее редактирование: 04.07.2014 11:01:37 от asy »

Оффлайн Yaroslavskiy

  • Давно тут
  • **
  • Сообщений: 80
Цитировать
"ps ax|grep http" что показывает ? И "netstat -apn|grep http".


Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 6 271
  • Sunny 273 RUS crew
А картинкой зачем ? Надо было текст скопировать, да вставить.

Что касается картинки. У Вас IPv6 на самом деле, или это Апач только на IPv6 повис почему-то и, потому, с IPv4 адресов недоступен ?

Оффлайн Yaroslavskiy

  • Давно тут
  • **
  • Сообщений: 80
Скорей всего это только Апач, т.к. сервер нормально пингуется из локальной сети и выполняет роль контроллера домена. Проблемы только с Апачем.
Кстати я и по вашей статье попробовал - результата понятно нет.

Почему-то не работает ethtool
« Последнее редактирование: 08.07.2014 11:06:10 от Yaroslavskiy »