LXF167:Рубрика сисадмина
Olkol (обсуждение | вклад) (→Open Build Service) |
Olkol (обсуждение | вклад) (→Среда разработки) |
||
(не показаны 13 промежуточных версий 1 участника) | |||
Строка 22: | Строка 22: | ||
''Многие разработчики портируют свой код на несколько платформ через этот сервис от SUSE.'' | ''Многие разработчики портируют свой код на несколько платформ через этот сервис от SUSE.'' | ||
− | [[Файл:LXF167.sysadmin.obsscr_opt.jpeg| | + | [[Файл:LXF167.sysadmin.obsscr_opt.jpeg|450px|center|thumb| ]] |
Постоянные читатели этой рубрики помнят, как я сетовал на трудности разработки учебных программ из-за разветвления технологий в дистрибутивах Linux. Рост количества версий, дистрибутивов и аппаратных платформ создает трудности и для разработчиков программ, желающих сделать свои приложения доступными максимальному числу пользователей в виде готовых пакетов. Теоретически это означает сборку программ для довольно большого количества дистрибутивов, большинства из которых скорее всего даже нет на вашем компьютере. Если вы разработчик и оказались в такой ситуации, взгляните на Open Build Service [Сервис открытых сборок] от SUSE (http://openbuildservice.org). Это проект openSUSE, переделанный в 2005 году из внутренней системы сборки SUSE. Вкратце, вы загружаете исходный код проекта на сервис, выбираете платформы, для которых нужны сборки, нажимаете кнопку и ждете, пока задания на сборку не попадут в один из 400 «слотов сборки». По окончании процесса вы получите несколько небольших репозиториев с готовыми пакетами и ссылками на них, и пользователи смогут установить эти пакеты в своих дистрибутивах с помощью обычных утилит управления пакетами. | Постоянные читатели этой рубрики помнят, как я сетовал на трудности разработки учебных программ из-за разветвления технологий в дистрибутивах Linux. Рост количества версий, дистрибутивов и аппаратных платформ создает трудности и для разработчиков программ, желающих сделать свои приложения доступными максимальному числу пользователей в виде готовых пакетов. Теоретически это означает сборку программ для довольно большого количества дистрибутивов, большинства из которых скорее всего даже нет на вашем компьютере. Если вы разработчик и оказались в такой ситуации, взгляните на Open Build Service [Сервис открытых сборок] от SUSE (http://openbuildservice.org). Это проект openSUSE, переделанный в 2005 году из внутренней системы сборки SUSE. Вкратце, вы загружаете исходный код проекта на сервис, выбираете платформы, для которых нужны сборки, нажимаете кнопку и ждете, пока задания на сборку не попадут в один из 400 «слотов сборки». По окончании процесса вы получите несколько небольших репозиториев с готовыми пакетами и ссылками на них, и пользователи смогут установить эти пакеты в своих дистрибутивах с помощью обычных утилит управления пакетами. | ||
Строка 40: | Строка 40: | ||
Обычно у динамического сайта есть база данных на стороне сервера. Например, зайдя на nationalrail.co.uk, сначала вы увидите более или менее статическую страницу, где можно ввести место назначения и время отправления поездки. После нажатия на кнопку Go [Найти] откроется следующая страница с расписанием поездов, и она по большей части генерируется на лету с помощью обращения к базе данных на сервере. Это классическая трехуровневая архитектура: первый уровень – уровень представления, это интерфейс, который собирает информацию у пользователя и показывает ему результат. Средний уровень – уровень бизнес-логики, на нем находится вся логика приложения. Например, если вам нужно узнать расписание поездов от Лидса до Лутона, и вам нужны только «самые быстрые поезда» (поезда, которые не опережаются другими поездами), то чтобы это узнать, придется кое-что вычислить. Это называется «бизнес-логикой». Наконец, на уровне сервера размешаются данные – в данном случае, база данных расписаний поездов. Это три уровня архитектуры, предоставляемые стеком LAMP, хотя, как показывает мой рисунок, четкой связи между L, A, M и P и тремя уровнями архитектуры нет. | Обычно у динамического сайта есть база данных на стороне сервера. Например, зайдя на nationalrail.co.uk, сначала вы увидите более или менее статическую страницу, где можно ввести место назначения и время отправления поездки. После нажатия на кнопку Go [Найти] откроется следующая страница с расписанием поездов, и она по большей части генерируется на лету с помощью обращения к базе данных на сервере. Это классическая трехуровневая архитектура: первый уровень – уровень представления, это интерфейс, который собирает информацию у пользователя и показывает ему результат. Средний уровень – уровень бизнес-логики, на нем находится вся логика приложения. Например, если вам нужно узнать расписание поездов от Лидса до Лутона, и вам нужны только «самые быстрые поезда» (поезда, которые не опережаются другими поездами), то чтобы это узнать, придется кое-что вычислить. Это называется «бизнес-логикой». Наконец, на уровне сервера размешаются данные – в данном случае, база данных расписаний поездов. Это три уровня архитектуры, предоставляемые стеком LAMP, хотя, как показывает мой рисунок, четкой связи между L, A, M и P и тремя уровнями архитектуры нет. | ||
− | + | [[Файл:LXF167.sysadmin.obsscr_opt2.jpeg.png |400px|left|thumb|> Создание типичной трехуровневой web-архитектуры с помощью стека LAMP. ]] | |
Эту серию мы начнем с установки CentOS 6.2. Мы установим и настроим компоненты стека A, M и P и среду разработки. По ходу дела мы познакомимся с базами данных и языком SQL (Structured Query Language – язык структурированных запросов), освоим HTML, хотя бы немного, и изучим PHP настолько, чтобы выполнить задачу. Настоятельно рекомендую установить CentOS (например, в виртуальную машину) и следовать за мной. | Эту серию мы начнем с установки CentOS 6.2. Мы установим и настроим компоненты стека A, M и P и среду разработки. По ходу дела мы познакомимся с базами данных и языком SQL (Structured Query Language – язык структурированных запросов), освоим HTML, хотя бы немного, и изучим PHP настолько, чтобы выполнить задачу. Настоятельно рекомендую установить CentOS (например, в виртуальную машину) и следовать за мной. | ||
Строка 69: | Строка 69: | ||
7. Include conf.d/*.conf | 7. Include conf.d/*.conf | ||
+ | {{Врезка|right|Ширина=40%|Заголовок=Устранение ошибок |Содержание=Конечно, при первом запуске сервис будет работать отлично, и вы сможете отправиться на прогулку и посчитать барашков в небе. Но в случае проблем, вот что стоит проверить: | ||
+ | |||
+ | » Запущен ли сервис? (ищите его командой grep в выводе ps -ef) | ||
+ | |||
+ | » Открыт ли нужный порт(ы) сервиса? (на этот вопрос ответит lsof -i) | ||
+ | |||
+ | » Открыт ли порт в брандмауэре? (запустите iptables -L или воспользуйтесь утилитой systemconfig- firewall) | ||
+ | |||
+ | » Появляются ли в лог-файле какие-то сообщения при запуске сервиса или при попытке обращения к нему? | ||
+ | |||
+ | }} | ||
8. LogLevel warn | 8. LogLevel warn | ||
Строка 79: | Строка 90: | ||
12. MinSpareServers 5 | 12. MinSpareServers 5 | ||
+ | |||
13. MaxSpareServers 20 | 13. MaxSpareServers 20 | ||
Строка 96: | Строка 108: | ||
Этого файла настройки вполне достаточно для наших текущих потребностей, поэтому запустим сервис: | Этого файла настройки вполне достаточно для наших текущих потребностей, поэтому запустим сервис: | ||
− | # service httpd start | + | # service httpd start |
Сделаем так, чтобы сервер запускался при загрузке системы: | Сделаем так, чтобы сервер запускался при загрузке системы: | ||
− | # chkconfig httpd on | + | # chkconfig httpd on |
Просто чтобы убедиться, что это работает, создадим немного контента в виде файла /var/www/html/greet.html со следующим содержимым: | Просто чтобы убедиться, что это работает, создадим немного контента в виде файла /var/www/html/greet.html со следующим содержимым: | ||
Строка 108: | Строка 120: | ||
Да, строго говоря, здесь нужно было указать правильные HTML-тэги: <head>, <body> и другие, но браузер прекрасно справится с выводом этой простой строки текста. Создав этот файл, откройте браузер и перейдите на http://localhost/greet.html –должна открыться страница «Hello World!». Если ее нет, во врезке есть несколько советов по устранению ошибок. | Да, строго говоря, здесь нужно было указать правильные HTML-тэги: <head>, <body> и другие, но браузер прекрасно справится с выводом этой простой строки текста. Создав этот файл, откройте браузер и перейдите на http://localhost/greet.html –должна открыться страница «Hello World!». Если ее нет, во врезке есть несколько советов по устранению ошибок. | ||
− | Документация | + | ===Документация=== |
Если открыть адрес httpd://localhost/manual, вы должны перейти на «домашнюю страницу» онлайн-документации. На ней вы найдете набор руководств и инструкций с массой перекрестных ссылок, а также подробный список всех директив конфигурации. | Если открыть адрес httpd://localhost/manual, вы должны перейти на «домашнюю страницу» онлайн-документации. На ней вы найдете набор руководств и инструкций с массой перекрестных ссылок, а также подробный список всех директив конфигурации. | ||
+ | {{Врезка|right|Ширина=40%|Заголовок=Устранение ошибок |Содержание= | ||
+ | Если ваш сервер Apache не работает, вот несколько вещей, которые имеет смысл проверить: | ||
+ | *Запущен ли демон? Команда ps -ef grep httpd должна вывести один процесс httpd, запущенный от имени root, и восемь, запущенных от имени apache. | ||
+ | *Слушает ли демон? Команда lsof -i tcp:80 должна вывести тот же набор процессов, слушающих на выделенном порту. | ||
+ | *Появляется при попытке открыть сайт запись в лог-файле доступа (/var/log/httpd/access_log) или в лог-файле ошибок (/var/log/httpd/error_log)? | ||
+ | }} | ||
Откуда все это берется? Если вы выведете список файлов пакета httpd-manual – | Откуда все это берется? Если вы выведете список файлов пакета httpd-manual – | ||
− | # rpm -ql httpd-manual | + | # rpm -ql httpd-manual |
то увидите, что пакет размещает множество своих файлов в каталоге /var/www/manual. На первый взгляд это неправильно, потому что этот каталог находится не в корневом каталоге сервера DocumentRoot (/var/www/html) и, вероятно, недоступен. Что же происходит? Оказывается, что пакет httpd-manual добавил и файл настройки /etc/httpd/conf.d/manual.conf. В нем задается алиас: | то увидите, что пакет размещает множество своих файлов в каталоге /var/www/manual. На первый взгляд это неправильно, потому что этот каталог находится не в корневом каталоге сервера DocumentRoot (/var/www/html) и, вероятно, недоступен. Что же происходит? Оказывается, что пакет httpd-manual добавил и файл настройки /etc/httpd/conf.d/manual.conf. В нем задается алиас: | ||
Строка 123: | Строка 141: | ||
localhost/manual/bind.html с файлом /var/www/manual/bind.html. | localhost/manual/bind.html с файлом /var/www/manual/bind.html. | ||
− | Можно мне на букву “P”? | + | ===Можно мне на букву “P”?=== |
Итак, часть «A» стека LAMP установлена и работает. Посмотрим на “P”. Все необходимое опять же есть в репозиториях CentOS, поэтому установка проста: | Итак, часть «A» стека LAMP установлена и работает. Посмотрим на “P”. Все необходимое опять же есть в репозиториях CentOS, поэтому установка проста: | ||
− | # yum install php | + | # yum install php |
Наша конечная цель – написать на PHP серверную часть нашего web-приложения, но скрипты на PHP можно запускать и отдельно, как скрипты на Perl или скрипты Bash. Начнем с “Hello world” в виде отдельного скрипта: | Наша конечная цель – написать на PHP серверную часть нашего web-приложения, но скрипты на PHP можно запускать и отдельно, как скрипты на Perl или скрипты Bash. Начнем с “Hello world” в виде отдельного скрипта: | ||
− | #!/usr/bin/php | + | #!/usr/bin/php |
<?php echo “Hello World\n”; ?> | <?php echo “Hello World\n”; ?> | ||
Строка 143: | Строка 161: | ||
Пакет php, который мы только что установили, содержит файл /etc/httpd/conf.d/php.conf. Помните, как я говорил, что httpd страдает болезнью «точка-d»? У нее есть и премущество: при установке пакета он может просто добавить файл настройки в каталог conf.d, и сервер подхватит его. Разумеется, чтобы изменения вступили в силу, нужно перезапустить сервис: | Пакет php, который мы только что установили, содержит файл /etc/httpd/conf.d/php.conf. Помните, как я говорил, что httpd страдает болезнью «точка-d»? У нее есть и премущество: при установке пакета он может просто добавить файл настройки в каталог conf.d, и сервер подхватит его. Разумеется, чтобы изменения вступили в силу, нужно перезапустить сервис: | ||
− | # service httpd restart | + | # service httpd restart |
+ | {{Врезка|left |Ширина=50%|Заголовок=HTML-редакторы |Содержание= Существует множество открытых редакторов HTML. В них есть горячие клавиши для ввода структурных элементов HTML, дополнение тэгов и атрибутов и предварительный просмотр страниц. Рекомендую Quanta Plus. В CentOS его можно установить всего одной командой – а именно, следующей: | ||
+ | |||
+ | # yum install kdewebdev | ||
+ | |||
+ | Так как это утилита KDE (а CentOS основан на Gnome), заодно притянется несколько зависимостей – библиотек поддержки KDE. | ||
+ | }} | ||
В этом файле php.conf настраивается использование модуля php в Apache; он включает директиву LoadModule для установки модуля apache-mod_php5 и директиву AddHandler, которая связывает обработчик скриптов PHP с файлами .php. Теперь наш сайт может обрабатывать динамически генерируемый контент с помощью PHP. Вот пример, похожий на сайт www.whattimeisit.com, о котором я говорил ранее. В нем используется более полный набор тэгов HTML: | В этом файле php.conf настраивается использование модуля php в Apache; он включает директиву LoadModule для установки модуля apache-mod_php5 и директиву AddHandler, которая связывает обработчик скриптов PHP с файлами .php. Теперь наш сайт может обрабатывать динамически генерируемый контент с помощью PHP. Вот пример, похожий на сайт www.whattimeisit.com, о котором я говорил ранее. В нем используется более полный набор тэгов HTML: | ||
Строка 180: | Строка 204: | ||
Если вы и вправду следите за моим рассказом (а мне хотелось бы думать, что такие люди есть), вы можете подумать, что мы не достигли почти ничего. Но по сути мы достигли многого. Мы убедились, что и сервер Apache, и интерпретатор PHP работают, и что с помощью PHP мы можем генерировать динамическое содержимое. | Если вы и вправду следите за моим рассказом (а мне хотелось бы думать, что такие люди есть), вы можете подумать, что мы не достигли почти ничего. Но по сути мы достигли многого. Мы убедились, что и сервер Apache, и интерпретатор PHP работают, и что с помощью PHP мы можем генерировать динамическое содержимое. | ||
− | Среда разработки | + | ===Среда разработки=== |
Это Linux, и поэтому для разработки динамических сайтов вам нужен только текстовый редактор, например, старый добрый Vi. Но существуют и открытые среды разработки, которые повысят вашу продуктивность. Одна из них – Eclipse, среда разработки, поддерживающая множество языков за счет большого набора модулей расширения. Вот как ее установить: | Это Linux, и поэтому для разработки динамических сайтов вам нужен только текстовый редактор, например, старый добрый Vi. Но существуют и открытые среды разработки, которые повысят вашу продуктивность. Одна из них – Eclipse, среда разработки, поддерживающая множество языков за счет большого набора модулей расширения. Вот как ее установить: | ||
Строка 195: | Строка 219: | ||
$ tar xvf ~/Downloads/eclipse-SDK*.tar.gz | $ tar xvf ~/Downloads/eclipse-SDK*.tar.gz | ||
+ | {{Врезка|left |Ширина=98%|Заголовок=Контроль доступа |Содержание= | ||
+ | |||
+ | В Apache можно управлять доступом на разных уровнях. Вот пример ограничения доступа к части сайта компьютерам из заданного диапазона IP-адресов (вероятно, локальная сеть): | ||
+ | |||
+ | <Directory /var/www/html/private> | ||
+ | |||
+ | order deny,allow | ||
+ | |||
+ | deny from all | ||
+ | |||
+ | allow from 192.168.1.0/24 | ||
+ | |||
+ | </Directory> | ||
+ | |||
+ | Обратите внимание на контейнер <Directory>. Можно управлять доступом и на уровне пользователей, заставляя их вводить имя и пароль для доступа к определенным частям сайта. Также можно создать защищенный сайт, использующий протокол HTTPS. С помощью самоподписанного сертификата это довольно просто.}} | ||
Теперь можно запустить eclipse с командной строки: | Теперь можно запустить eclipse с командной строки: | ||
Строка 212: | Строка 251: | ||
» Примите лицензионное соглашение и нажмите Finish [Готово] | » Примите лицензионное соглашение и нажмите Finish [Готово] | ||
− | Через месяц мы погрузимся в тайны HTML и напишем настоящее web-приложение для обработки данных, отправленных с формы. Увидимся! | | + | '''Через месяц мы погрузимся в тайны HTML и напишем настоящее web-приложение для обработки данных, отправленных с формы. Увидимся!''' | |
− | + | ||
− | + |
Текущая версия на 08:09, 9 ноября 2018
|
|
|
Содержание |
[править] По рецептам доктора Брауна
Эзотерическое системное администрирование из причудливых заворотов кишок серверной
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
[править] Open Build Service
Многие разработчики портируют свой код на несколько платформ через этот сервис от SUSE.
Постоянные читатели этой рубрики помнят, как я сетовал на трудности разработки учебных программ из-за разветвления технологий в дистрибутивах Linux. Рост количества версий, дистрибутивов и аппаратных платформ создает трудности и для разработчиков программ, желающих сделать свои приложения доступными максимальному числу пользователей в виде готовых пакетов. Теоретически это означает сборку программ для довольно большого количества дистрибутивов, большинства из которых скорее всего даже нет на вашем компьютере. Если вы разработчик и оказались в такой ситуации, взгляните на Open Build Service [Сервис открытых сборок] от SUSE (http://openbuildservice.org). Это проект openSUSE, переделанный в 2005 году из внутренней системы сборки SUSE. Вкратце, вы загружаете исходный код проекта на сервис, выбираете платформы, для которых нужны сборки, нажимаете кнопку и ждете, пока задания на сборку не попадут в один из 400 «слотов сборки». По окончании процесса вы получите несколько небольших репозиториев с готовыми пакетами и ссылками на них, и пользователи смогут установить эти пакеты в своих дистрибутивах с помощью обычных утилит управления пакетами.
Сборка в OBS не ограничена дистрибутивами SUSE – список поддерживаемых платформ обширен и включает множество версий Debian, Fedora, RedHat, CentOS, Mandriva и Ubuntu. Чтобы вы представляли его масштаб, сейчас сервис содержит 28 600 проектов с 18 9197 пакетами в 42 693 репозиториях, и им пользуются 34 029 подтвержденных разработчиков.
У сервиса есть и web-интерфейс, и утилита командной строки osc. Исходный код OBS открыт (под GPL2), и это альтернатива сервису, размещенному на серверах SUSE – загрузив и скомпилировав программу из исходников или воспользовавшись развертываемой системой (в виде образа VMware или Live CD), вы сможете установить сервис и работать с ним локально. Это хороший вариант для тех, кто не хочет выдавать исходные коды программы и приложение в открытый доступ.
[править] Стек LAMP
Знаменитая четверка из мира открытого ПО, LAMP содержит все необходимое для управления коммерческим сайтом. Первая из четырех статей в серии.
LAMP – пожалуй, одна из самых известных аббревиатур в мире открытого ПО, но если вы ее не слышали, то L – это Linux, A – Apache, M – MySQL, а P – хм... это зависит от того, кого вы спрашиваете. Большинство, наверное, скажут «PHP», но Perl и Python тоже часто используются для написания скриптов на сервере. Вместе эти четыре технологии позволяют создавать надежные динамические сайты на основе исключительно свободных программ с открытым исходным кодом.
Что такое «динамический» сайт? Ну, изначально содержимое сайтов было статическим. Например, люди писали свои исследовательские отчеты в виде web-страниц, а web-сервер доставлял их в браузер. При каждом посещении страницы вы видите одно и то же, если, конечно, кто-то не зашел и не отредактировал ее. На динамическом сайте, напротив, по крайней мере часть содержимого создается на лету, обычно с помощью кода (на стороне сервера), который каким-то образом связан с web-страницей. Простой пример – страница www.whattimeisit.com, которая сообщает текущее время и является истинно динамической, т. е. вы не видите одно и то же каждый раз, когда открываете ее (мне приходит на ум старый скетч из «Шоу тупиц» [радиопередача BBC, выходившая в 1951 – 1960 г., – прим. пер.], в котором Эклс [Eccles] записал время на листке бумаги, чтобы потом с ним сверяться).
[править] Трехуровневая архитектура
Обычно у динамического сайта есть база данных на стороне сервера. Например, зайдя на nationalrail.co.uk, сначала вы увидите более или менее статическую страницу, где можно ввести место назначения и время отправления поездки. После нажатия на кнопку Go [Найти] откроется следующая страница с расписанием поездов, и она по большей части генерируется на лету с помощью обращения к базе данных на сервере. Это классическая трехуровневая архитектура: первый уровень – уровень представления, это интерфейс, который собирает информацию у пользователя и показывает ему результат. Средний уровень – уровень бизнес-логики, на нем находится вся логика приложения. Например, если вам нужно узнать расписание поездов от Лидса до Лутона, и вам нужны только «самые быстрые поезда» (поезда, которые не опережаются другими поездами), то чтобы это узнать, придется кое-что вычислить. Это называется «бизнес-логикой». Наконец, на уровне сервера размешаются данные – в данном случае, база данных расписаний поездов. Это три уровня архитектуры, предоставляемые стеком LAMP, хотя, как показывает мой рисунок, четкой связи между L, A, M и P и тремя уровнями архитектуры нет.
Эту серию мы начнем с установки CentOS 6.2. Мы установим и настроим компоненты стека A, M и P и среду разработки. По ходу дела мы познакомимся с базами данных и языком SQL (Structured Query Language – язык структурированных запросов), освоим HTML, хотя бы немного, и изучим PHP настолько, чтобы выполнить задачу. Настоятельно рекомендую установить CentOS (например, в виртуальную машину) и следовать за мной.
LAMP так широко используется, что во многих дистрибутивах Linux можно установить его одним щелчком мыши. Например, в Ubuntu есть команда tasksel – она устанавливает заданные наборы программ для указанной рабочей загрузки сервера и формирует задание LAMP, устанавливающее весь стек одной командой. Другой пример: если вы планируете размещать сайт на «облаке» AWS, откройте мастер создания новой системы [New Instance], выберите вкладку Community AMIs [Образы сообщества] и введите “LAMP” в строку поиска. Вы увидите более 200 предоставленных сообществом образов, в основном на базе Ubuntu или CentOS. Но установка компонентов стека по отдельности позволит лучше понять, что происходит, поэтому так и поступим.
Начнем с Apache. Он есть в стандартных репозиториях CentOS, и установить его легко:
- yum install httpd
Появится несколько зависимостей, в основном для поддержки среды времени выполнения Apache. Вам также может понадобиться документация, которая, оказывается, в отдельном пакете:
- yum install httpd-manual
Главный файл конфигурации Apache – /etc/httpd/conf/httpd.conf. Рассмотрим основные директивы (учтите, что это не полный файл, а номера строк добавлены для ссылок).
1. ServerRoot “/etc/httpd”
2. Listen 80
3. User apache
4. Group apache
5. LoadModule auth_basic_module modules/mod_auth_basic.so
6. LoadModule auth_digest_module modules/mod_auth_digest.so
7. Include conf.d/*.conf
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
8. LogLevel warn
9. DocumentRoot “/var/www/html”
10. <IfModule prefork.c>
11. StartServers 8
12. MinSpareServers 5
13. MaxSpareServers 20
14. ServerLimit 256
15. MaxClients 256
16. MaxRequestsPerChild 4000
17. </IfModule>
В строке 1 задается расположение файлов настройки, лог-файлов и файлов ошибок сервера. Вообще-то /etc – совсем не подходящее место для лог-файлов, и вы обнаружите, что /etc/httpd/logs – на самом деле символическая ссылка на /var/log/httpd, это более общепринятый каталог для лог-файлов. В строке 2 указан номер прослушиваемого порта. Разумеется, это порт 80 – стандартный порт HTTP. В строках 3 и 4 задаются пользователь и группа, от имени которых будет запускаться сервер (учетная запись “apache” была добавлена во время установки пакета). На самом деле механизм более сложный: при запуске сервера первоначальный (родительский) процесс выполняется от имени root, чтобы можно было подключиться к порту 80 (в UNIX и Linux порты с номером меньше 1024 являются «привилегированными»: подключаться к ним может только процесс, запущенный от имени root). Затем родительский процесс создает несколько дочерних процессов для обработки запросов, и эти процессы опускают свой уровень привилегий до обычного пользователя, заданного в директивах “User” и “Group”. Специалисты по безопасности назвали бы это «принципом наименьших привилегий».
В строках 5 и 6 показаны только две из большого количества строк, в которых загружаются модули Apache. Исполняемый файл apache содержит лишь минимальный набор модулей (определенный парнями в CentOS при его сборке), и большая часть функциональности Apache обеспечивается этими динамически загружаемыми модулями. Строка 7 – пример того, что я обычно называю здесь «болезнью .d»; она велит серверу также прочитать все файлы настройки в /etc/httpd/conf.d. Позже мы рассмотрим пример использования этой возможности. В строке 8 определяется уровень журналирования – в журнал записываются сообщения только уровня “warn [предупреждения]” и выше. В строке 9 задается каталог верхнего уровня, содержащий обслуживамый контент. Наконец, строки с 10 по 17 связаны с настройкой производительности. Чтобы гарантировать немедленный ответ при поступлении запроса, Apache старается поддерживать пул запасных процессов, готовых к обработке новых запросов. Эти параметры управляют размером пула. Обратите внимание на робкую попытку воспользоваться синтаксисом XML с открывающим и закрывающим тэгами. Другие примеры этих директив контейнера мы увидим позже.
Этого файла настройки вполне достаточно для наших текущих потребностей, поэтому запустим сервис:
# service httpd start
Сделаем так, чтобы сервер запускался при загрузке системы:
# chkconfig httpd on
Просто чтобы убедиться, что это работает, создадим немного контента в виде файла /var/www/html/greet.html со следующим содержимым:
Hello World!
Да, строго говоря, здесь нужно было указать правильные HTML-тэги: <head>, <body> и другие, но браузер прекрасно справится с выводом этой простой строки текста. Создав этот файл, откройте браузер и перейдите на http://localhost/greet.html –должна открыться страница «Hello World!». Если ее нет, во врезке есть несколько советов по устранению ошибок.
[править] Документация
Если открыть адрес httpd://localhost/manual, вы должны перейти на «домашнюю страницу» онлайн-документации. На ней вы найдете набор руководств и инструкций с массой перекрестных ссылок, а также подробный список всех директив конфигурации.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Откуда все это берется? Если вы выведете список файлов пакета httpd-manual –
# rpm -ql httpd-manual
то увидите, что пакет размещает множество своих файлов в каталоге /var/www/manual. На первый взгляд это неправильно, потому что этот каталог находится не в корневом каталоге сервера DocumentRoot (/var/www/html) и, вероятно, недоступен. Что же происходит? Оказывается, что пакет httpd-manual добавил и файл настройки /etc/httpd/conf.d/manual.conf. В нем задается алиас:
Alias /manual /var/www/manual
(На самом деле эта строка сложнее. Она хитро разбирает регулярное выражение с тэгами, чтобы выбралась документация на нужном языке. Но и упрощенный вариант, приведенный выше, будет работать отлично.) Именно этот алиас связывает адрес вроде http:// localhost/manual/bind.html с файлом /var/www/manual/bind.html.
[править] Можно мне на букву “P”?
Итак, часть «A» стека LAMP установлена и работает. Посмотрим на “P”. Все необходимое опять же есть в репозиториях CentOS, поэтому установка проста:
# yum install php
Наша конечная цель – написать на PHP серверную часть нашего web-приложения, но скрипты на PHP можно запускать и отдельно, как скрипты на Perl или скрипты Bash. Начнем с “Hello world” в виде отдельного скрипта:
#!/usr/bin/php
<?php echo “Hello World\n”; ?>
Первая строка – обычная «шапка», которая сообщает Linux, какой интерпретатор использовать. Учтите: чтобы интерпретатор выполнил код во второй строке, его нужно заключить в тэги <?php ...?>. Все, что вне этих тэгов, будет просто копироваться в стандартный вывод. Поэтому создайте файл greet.php с указанным содержимым, затем сделайте его исполняемым и запустите:
$ chmod u+x greet.php
$ ./greet.php
Пакет php, который мы только что установили, содержит файл /etc/httpd/conf.d/php.conf. Помните, как я говорил, что httpd страдает болезнью «точка-d»? У нее есть и премущество: при установке пакета он может просто добавить файл настройки в каталог conf.d, и сервер подхватит его. Разумеется, чтобы изменения вступили в силу, нужно перезапустить сервис:
# service httpd restart
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
В этом файле php.conf настраивается использование модуля php в Apache; он включает директиву LoadModule для установки модуля apache-mod_php5 и директиву AddHandler, которая связывает обработчик скриптов PHP с файлами .php. Теперь наш сайт может обрабатывать динамически генерируемый контент с помощью PHP. Вот пример, похожий на сайт www.whattimeisit.com, о котором я говорил ранее. В нем используется более полный набор тэгов HTML:
<html>
<head>
<title> What time is it?</title>
</head>
<body>
The time is:
<?php
date_default_timezone_set(“UTC”);
echo date(“F j, Y, g:i a”);
?>
</body>
</html>
Обратите внимание, что, как и в отдельном скрипте на PHP, мы должны заключить код PHP в тэги <?php ...?>, чтобы он был обработан. Для проверки создайте файл /var/www/html/time.php с указанным содержимым и откройте в браузере адрес http:// localhost/time.php. Затем добавьте код
phpinfo();
в тэгах php. Обновите страницу в браузере, и вы должны увидеть множество аккуратно оформленных параметров, относящихся к сборке PHP и рабочей среде.
Если вы и вправду следите за моим рассказом (а мне хотелось бы думать, что такие люди есть), вы можете подумать, что мы не достигли почти ничего. Но по сути мы достигли многого. Мы убедились, что и сервер Apache, и интерпретатор PHP работают, и что с помощью PHP мы можем генерировать динамическое содержимое.
[править] Среда разработки
Это Linux, и поэтому для разработки динамических сайтов вам нужен только текстовый редактор, например, старый добрый Vi. Но существуют и открытые среды разработки, которые повысят вашу продуктивность. Одна из них – Eclipse, среда разработки, поддерживающая множество языков за счет большого набора модулей расширения. Вот как ее установить:
» Откройте www.eclipse.org.
» Щелкните по ссылке “Download Eclipse [Загрузить Eclipse]” и выберите Eclipse Classic. Если у вас 32-битная система, убедитесь, что вы выбрали 32-битную версию.
» Загрузите и сохраните файл – его название будет напоминать такое: eclipse-SDK-4.2.1-linux-gtk.tar.gz.
» Откройте терминал, перейдите в свой домашний каталог и распакуйте загруженный архив, примерно так:
$ cd
$ tar xvf ~/Downloads/eclipse-SDK*.tar.gz
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Теперь можно запустить eclipse с командной строки:
$ cd eclipse
$ ./eclipse
Можно добавить иконку запуска eclipse на рабочий стол или на верхнюю панель. А можно установить модуль PHP для eclipse:
» В меню Help [Справка] eclipse выберите Install New Software [Установка новых программ].
» В окне Available Software [Доступные программы] выберите juno из выпадающего списка Work with: [Работает с:].
» Откройте категорию Programming Languages [Языки программирования] и выберите PHP Development Tools [Средства разработки PHP].
» Примите лицензионное соглашение и нажмите Finish [Готово]
Через месяц мы погрузимся в тайны HTML и напишем настоящее web-приложение для обработки данных, отправленных с формы. Увидимся! |