Хабрапривет! Совсем недавно я начал заниматься системным администрированием, около 2 месяцев назад. По этому сразу прошу прощение за реализованные странным образом алгоритмы и, наверно, не «совсем» профессионально написан код. Хочу показать вам свое творение, и поинтересоваться нужно ли его развивать. Хотя на самом деле это не CP а сплошной быдлокод, никому не нужен, под хабракат тоже заглядывать не стоит.
Панель первоначально задумывалась для личного пользование, но потом я решил показать ее другим. Так что извиняйте, установочного скрипта не будет, чтобы попробовать надо будет все делать ручками, по инструкции которую я предоставлю ниже.
Панель работает на отдельном порту с использованием SSL. Тестировалась на FreeBSD 8.1-RELEASE i386. Для работы Recens CP необходим Apache 2.2 и suPHP.
Приступим к настройке.
- Желательно создать нового юзера в системе (командой adduser), с отдельным домашним каталогом. У меня это /home/recens
- Скачать (sourceforge.net/projects/recens/files/recens-beta.zip/download) и распаковать архив в каталог public_html
- Панель работает с ipfw и исполняет разные команды нуждающиеся в супер юзере, следовательно надо сделать:
chown -R root:wheel /usr/home/recens/data/public_html
- Также необходимо изменить конфиг suPHP. Находим строчки в /usr/local/etc/suphp.conf:
; Minimum UID min_uid=80 ; Minimum GID min_gid=80
и меняем их на
; Minimum UID min_uid=0 ; Minimum GID min_gid=0
Настройка web-сервера
Далее необходимо настроить Apache. Открываем httpd.conf Добавляем строчку listen:Listen 2012
В виртуальные хосты прописываем (/extra/httpd-vhosts.conf):
Предварительно надо cгенерировать server.crt и server.key для поддержки SSL. Сделать это можно с помощью примерно такой команды:<VirtualHost *:2012> Options +ExecCGI SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile "/home/recens/data/server.crt" SSLCertificateKeyFile "/home/recens/data/server.key" ServerName servername.com DocumentRoot "/usr/home/recens/data/public_html" suPHP_UserGroup root wheel CustomLog "/usr/home/recens/data/logs/recens-access.log" combined ErrorLog "/usr/home/recens/data/logs/recens-error.log" ServerAlias www.servername.com ServerAdmin admin@servername.com AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml AddType application/x-httpd-php-source .phps </VirtualHost>
Дальше необходимо добавить информацию о директиве в /extra/httpd-userdir.conf или непосредственно в httpd.conf:openssl req -new -newkey rsa:1024 -nodes -keyout server.crt -x509 -days 500 \ -subj /C=RU/ST=Msk/L=Msk/O=My\ Inc/OU=Sale/CN=bla/emailAddress=usr@dom.ru \ -out server.crt
После чего сделать<Directory "/home/recens/data/public_html"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
apachectl graceful
- Recens CP использует СУБД MySQL, а значит надо не забыть импортировать структуру БД. Находится она в файле recens.sql. Импортировать можно с помощью PhpMyAdmin. После импорта будет создан пользователь Admin с паролем password. Сразу же, по окончанию установки обязательно нужно сменить пароль!
IPFW
Я использую правила ipfw для сбора примитивной статистики. Чтобы их установить выполните от root'а:
ipfw add 10 count tcp from any to me dst-port 80
ipfw add 20 count tcp from me 80 to any
Cron
Чтобы все работало необходимо добавить в /etc/crontab следующею строчку:
*/5 * * * * root /usr/local/bin/php /home/paketik/data/public_html/recens/cron.php > /dev/null
Приступим к правке конфига config.php.
define("DEBUGMODE",1);
define("DBHOST","localhost");
define("DBUSER","recens");
define("DBPASS","megapass");
define("DBNAME","recens");
define("TBLPREFIX","rec_");
- DEBUGMODE — 1/0 включить или отключить вывод ошибок в браузер
- DBHOST — хост для коннекта к БД.
- DBUSER — пользователь для коннекта к БД.
- DBPASS — пароль пользователя БД.
- DBNAME — имя базы
- TBLPREFIX — используемый префикс для таблиц.
Больше ничего можно не трогать. Зайдя по адресу https ://vashdomain. com:2012/ Вы должны увидеть следующее:
После логона (Admin:password) сразу идем в настройки (Other — > Settings) и ставим приличный пароль. На вкладке Dashboard, поле "Current system user" должно быть "root".
Немножко о возможностях
Вкладка Dashboard
- General info — Общая информация о системе (Загрузка системы, информация о HDD, аптайм, текущий пользователь)
- Last logged into Recens — Последние входы в контрольную панель. Первый столбец — идентификатор того, успешной ли была попытка входа. Если ip-адрес подсвечен красным, значит он не совпадает с текущим.
- Banned ips in IPFW — Здесь отображаются забаненные ip фаерволом (у меня установлен sshit, который отправляет туда всех брутеров ssh)
- Opened ports — Текущие открытые порты
Вкладка Statistic
- HTTP traffic in — Весь входящий трафик на 80 порт за последний час
- HTTP traffic out — Весь исходящий трафик с 80 порта за последний час
- HDD usage — Диаграмма использования HDD
- RAM usage — Диаграмма задействованной виртуальной памяти на данный момент
- CPU usage — Загрузка процессора на данный момент
Вкладка Tools -> Service manager
Это веб-интерфейс для управления сервисами. Основные возможности — перезагрузка, остановка, старт сервиса.
Вкладка Security
- Failed logins — Можно посмотреть всю историю неудачных входов с детализациею для IP, User-Agent и Login.
- User manager — Изменения пользователей. Можно отключить пользователя поставив ему статус Active «0»
- Firewall list rules — Просмотр правил IPFW
- Firewall add rule — Редактор IPFW
Вкладка Other
- Settings — Изменение настроек для текущего пользователя
- Languages — установка language-packs
Скриншоты:
В следующей версии (если будет поддержка пользователей) планируется:
- Файловый менеджер
- Вход по системным аккаунтам
- Всякие настройки для сервисов
- Больше статистики
P.S. Допиливать еще и допиливать.
P.P.S Блог CMS, более удачного не нашел, если что — намекните куда переносить.