Май 2014 —

Статья написана как полное руководство по одному из возможных вариантов настройки веб сервера на CentOS от начала и до конца, со всеми подводными камнями, на устранение которых человеку не знакомому с Linux, может понадобиться много времени. Сервер предполагается на Apache+PHP+Postgres, кому нужна MySQL без труда смогут найти руководство в интернете, Postgres все таки менее популярен, а поэтому чуть посложнее. Кроме возможной пользы для других, планирую и сам пользоваться своим руководством чтобы вспомнить моменты которые напрягли при настройки CentOS и быстро разворачивать сервера на CentOS по мере необходимости, поэтому любые и советы и дополнения приветствуются!


Почему CentOS ?, тут тоже все просто так как я не работал ни с одной версией Linux, выбирал лучшую из доступных под мои требования, а требования простые раз это сервер, то нужна максимальная стабильность ну и бесплатность, а CentOS это операционная система корпоративного класса созданная на основе платной Red Hat Linux и в отличии от Fedora без всяких экспериментов только проверенные и надежные технологии от Red Hat.
IP-адрес_сервера/test.php информацию о php, если она есть значит все хорошо.

Postgres
Теперь с установкой Postgres сделаем немного посложнее. В официальном репозитории CentOS, находиться старая версия Postgres 8.3, по опыту работы с postgres скажу что у меня с ней были проблемы, поэтому советую ставить более новую версию.
Оригинальное руководство на английском тут

Для начала выключаем SELinux
# vi /etc/sysconfig/selinux
И устанавливаем переменную SELinux=disabled
SELinux это система контроля доступа в Linux, она помешала мне соединиться с Postgres, в оригинальном английском руководстве об этом ни слова.
Уже после написания статьи настраивал CentOS на другом сервере и соеденения с Postgres прошли нормально и без выключения SELinux, поэтому просто имейте ввиду если Postgres не работает возможно дело в SELinux.

Теперь скачаем данные о репозитории Postgres с официального сайта.
# wget http://yum.pgrpms.org/9.2/redhat/rhel-6-x86_64/pgdg-centos92-9.2-6.noarch.rpm

Если ничего не качает установите прогу wget (yum install wget)
Устанавливаем репозиторий чтобы можно было поставить Postgres через yum
# rpm -ivh pgdg-centos92-9.2-6.noarch.rpm

После чего ставим клиент сервер для Postgres
# yum install postgresql92 postgresql92-server
нажимая Y там где это нужно
Инициализируем БД
# service postgresql-9.2 initdb
И стартуем
# service postgresql-9.2 start
добавим Postgres в автозагрузку
# chkconfig postgresql-9.2 on

Теперь нужно создать пользователя для Postgres
# su postgres
# psql -dpostgres

должна появится надпись postgres=# вначале строки, значит мы залогинены под этим пользователем в БД.
После чего создаем супер пользователя и пароль
# CREATE role opensourcedbms LOGIN PASSWORD 'opensourcedbms' SUPERUSER;
После чего выходим
# \q

Теперь нужно сделать стандартные настройки Postgres
# vi /var/lib/pgsql/9.2/data/postgresql.conf
Расскоментируем строку #listen_addresses = ‘localhost’ и изменим ее на #listen_addresses = ‘*’
И настроим файл pg_hba.conf
# vi /var/lib/pgsql/9.2/data/pg_hba.conf
Я для проверки работы БД оставляю раскомментированными такие строки
Host all all 0.0.0.0/0 trust
Host all all ::1/128 trust
То есть коннект принимается с любых адресов и без пароля, потом не забудьте это исправить.
После настройки советую изменить trust на md5, пускать только локальные подключения к базе и в виде исключения прописать ваш IP адрес с которого можно подключатся к базе и удаленно, если IP динамический и нужно прямое подключение к базе то оставьте 0.0.0.0/0

После чего
# service postgresql-9.2 restart

И если у вас запущем фаервол нужно добавить в него такую запись
# vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT

Хотя я для начала советую просто сделать
# service iptables stop
Чтобы выключить его совсем.

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

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

Теперь осталось только связать Postgres c PHP
# yum install php-pgsql

после чего перезапускаем веб сервер и базу данных
# service httpd restart
# service postgresql-9.2 restart
И в нашем файле test.php который мы создали ранее должна появиться информация о Postgres.

FTP
Теперь поставим FTP для доступа к файлам на нашем сервере.
# yum install vsftpd
# chkconfig vsftpd on
# service vsftpd start

Думаю эти три строчки понятны, я расскажу о том как создать пользователя для фтп и назначить ему папку не по умолчанию, именно назначение папки почему то неправильно описано в статьях что я читал по настройке vsftpd.
# adduser ftpuser1
# passwd ftpuser1

Создаем пользователя и пароль.
Открываем файл со всеми пользователями CentOS
# vi /etc/passwd
Находим там ftpuser1 и меняем там папку на свое усмотрение
После чего перезагружаем vsftpd и проверяем.
Смена стандартной папки для ftp пользователя мне например пригодилась чтобы заливать файлы по ftp сразу в директорию вебсервера
Конфигурация vsftpd находиться в /etc/vsftpd.conf, описывать не буду у каждого она индивидуальная но по умолчанию все работает.
Можно только сразу выключить доступ анонимов по ftp
anonymous_enable:no

SFTP
SFTP более безопасный аналог FTP, я о нем узнал недавно но во всех нужных мне прогах его поддержка уже давно есть
Так что если вам не нужен именно FTP, советую сразу настроить передачу файлов на сервер по SFTP

В моей системе даже ставить ничего не пришлось сделал просто
# service sshd start
# chkconfig sshd on

Обратите внимание как примерно должна выглядеть запись о пользователе в /etc/passwd
sftpuser:x:500:500::/var/www/html:/bin/bash

в конце должна стоять запись /bin/bash
это запись говорит о том какой шелл будет доступен для sftpuser

Так же не забудьте разблокировать 22 порт в фаерволе если он заблокирован

Графика
Теперь хотелось бы сказать как поставить графический интерфейс на CentOS, если у вас такого нет.
#yum groupinstall «X Window System» «Desktop» «Desktop Platform» «Fonts»
И запуск
# startx
Чтобы выйти из графического интерфейса наберите
# telinit 3
Обратите внимание команда с пробелом!

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

Дополнительные мелкие полезности, планирую обновлять:
# yum search file_name
Поиск файла в репозитории CentOS

# find /* -iname 'file_name'
Поиск расположения файла на локальном компьютере

# ls
# ls –l
Показывает содержание текущего каталога

# system-config-firewall
фаервол в графике можно удобно поставить галки на те сервисы которым разрешено выходить в интернет, иногда требуется установка из репозитория.

Что такое WTware?

Для кого WTware?
Зачем использовать терминалы?
Почему WTware лучше других?Купить аппаратный тонкий клиент от IBM (HP, WYSE и т.д.)
Установить Windows 98 и запустить клиента службы терминалов от Microsoft
Поставить DOS и запустить клиента DOSRDP от Terminalsoft
Поставить DOS или Linux и запустить ICA-клиента от Citrix
Поставить Linux и запустить бесплатного клиента службы терминалов (rdesktop)
Использовать бесплатные решения для бездисковых терминалов (Thinstation или PXES)
Использовать WTware

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

LiveStreet - это бесплатный(GPLv2)движок для социальных сетей на основе блогов. 

Движок написан на PHP5 и использует в качестве хранения данных реляционую базу данных MySql. Внутреняя архитектура построена на принципе MVC(модель-вид-контроллер) с применением объектно ориентированного программирования.
Вообще движок построен на ядре собственного фреймворка, используя который можно достаточно просто разработать любой сайт. Но это больше касается программистов PHP :) Для них, кстати, на сайте проекта есть документация по ядру.

Основные возможности:

  • Полная поддержка кодировки UTF-8
  • Ведение персональных блогов
  • Возможность создания коллективных блогов
  • Система рейтингов блогов, топиков, комментариев, пользователей
  • Система голосования за блоги, топики, комментарии, пользователей
  • Возможность добавлять топики в избранное
  • Автоподстановка тегов
  • Коллективная внутренняя почта
  • Система контроля доступа(ACL) к разным возможностям сети(создание блога, возможность голосования и т.п.)
  • Возможность создать закрытый сайт
  • Система инвайтов
  • Топики-ссылки
  • Топики-опросы
  • Администрирование своих блогов
  • Назначение модераторов блогов
  • Настройки оповещений на емайл
  • Инсталлятор
  • Система плагинов
  • Функционал закрытых блогов и приглашений
  • Возможность добавлять комментарии в избранное
  • Система управления блоками(sidebar) через конфиги
  • Система управления CSS и JS файлами — слияние и сжатие
  • Функционал удаления блогов с возможностью переноса топиков в другой блог
  • Анти-спам система — ограничивает по времени создание топиков, комментов, писем

Требованя к хостингу для установки LiveStreet:

  • PHP5 и расширением mbstring для корректной работы с кодировкой UTF-8
  • Базой данных MySQL5 с типом таблиц InnoDB(хотя будет работать и на MyISAM)
  • Веб-сервер Apache с модулем mod_rewrite.

Процесс установки:

  • Скачать со страницы http://livestreet.ru/page/download/
  • Разархивировать в нужный каталог вашего сайта
  • Зайти по адресу http://ваш_сайт_на_ls/install/
  • Следовать инструкциям установщика
  • Настройки находятся в файле /config/config.php. Для их изменения желательно переопределять эти настройки в файле config.local.php

Сайт проекта - http://livestreet.ru