| |||||||
| Регистрация | Правила форума | Доска почета | Пожертвования | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
| Perl Perl-кодинг, советы и т.п. |
![]() |
| | LinkBack | Опции темы | Опции просмотра |
| | #11 (permalink) | |||||||||||||||||||||||
| Злой Админ |
Из этого получается что ты пишешь не панельку, а просто вебморду. Хостинг-панель не должна зависеть от сервайсов. Т.е. должен быть один родительский демон, который уже судоит свой обработчик по типe апача под тем пользователем, под которым залогинился. Т.е. у тебя: 1) некий демон panel запущеный от daemon:daemon, который слушает некий порт, и по httpS отдает тебе страничку логина. 2) По успешной авторизации (сверка логина/пароля с бд/ "/etc/shadow" / ещечтото) спавнит чайлда с помощью su -u login -p passwd 3) Чайлд, не что иное как панель для хостинга. Т.е. это отдельный демон который управляется по httpS Вот немного теории. Пока хватит) Если чего, еще что-нить подскажу ![]() | |||||||||||||||||||||||
| | |
| | #12 (permalink) | |||||||||||||||||||||||
| Пользователь Регистрация: 13.05.2008
Сообщений: 68
Вы сказали Спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
![]() | я хотел спросить про ньюанс про аккаунты ftp чтобы добавить аккаунт надо добавить пользоватея в систему! и права надо поставить для него, но просто апаче работать не будет тогда на тех файлх от другого пользователя который положет файлы? или будет? ============================== примрено подробно как я хотел сделать: 1) регистрируеться просто ник и пароль (работает примерно как это сессии , то есть видно кто зашел и что у него есть) 2) дальше заходит юзер добавляет сайт, пишет в поле nameserver, нажимет кнопку далее, в этом же скрипте генериться пользователь который будет в системе условно из случайных чисел (для безопасности), записывает все это в таблицу, помечает в один столбик, типо что сайт не добавлен еще! 3) в cron загружаеться через 10 мин скрипт от рута который смотрет стобец в котором отмечены добавленые и не добавленные сайты, если есть не добавленные - добавляет (содает каталог вносит в таблицу с которой работает apache + OutOfOrder.cc :: mod_vhost_dbi Documentation) и в конце отмечает как добавленные) 4) если нужно изменить, то изменяет вносится напрямую в бд, перет тем пересматриваеться регулярное выражение чтобы глюков не было с апачем 5) изменение проверки разные и т.д. во всех модулях 5) добавляет пользователя ftp к каталогу на котором сайт работает и т.д. и БД в MySQL и PostgreSQL 6) Просмотр логов postfix,proftp,apache, все логи занес в mysql, типо постранично выводиться, графики строит и т.д. 7) cron и т.д. 8) dns(bind) + mysql 9) email (таблица с под postfxiadmin) 10) и т.д и т.д. это всё работает от web пользователя системе, если надо что-то выполнить от рута, то через sudo как вариант. Проблема в том что программа статистики AWStats и другие работать не будут елси логи будут в БД? (но если логи тарить все время, раз в сутки, будет ли эта программа работаеть или надо тарить раз в месяц надо что программа статистики работала?) появился вопрос ставить ли apache + mod_vhost_dbi + mod_log_sql не плохо выглядет и на 2.2.8 работает или использовать текстовый файл?? как аналоги работают?? вот как раз недавно нашел модуль Apache::Admin::Config - A module to read/write Apache like configuration files - search.cpan.org тоже самое про bind, или тут все равно пускай в бд стоит? схема нормальная или нет?
если нужно от рута что-то запустить, то как тогда? Последний раз редактировалось CISCO, 19.08.2008 в 05:44. | |||||||||||||||||||||||
| | |
| | #13 (permalink) | ||||||||||||||||||||||||||||||||||||||||||||||
| Злой Админ |
читай пункт 2 В том, что ты описал есть один очень большущий баг.. Твоя т.н. панель будет зависить от апача. Вот простой пример. Когда ты добавил что-нить в конфиг апача, его необходимо рестартонуть. Даже при грацефул рестарте все сесии обнуляются. А теперь представь себе свою панель на тазике с 100 пользователями. Один из них редактирует виртуал-хост, и апач перезагружается. Следовательно все, что делали остальные 99 пользователей будет похерено. И что же это тогда за панель?
Все-таки тебе прийдется делать так как я описал (если хочешь сделать что-то толковое). Я тебе назову хотя бы одну такую панель написаную на перле (со вставками шелл-скриптов). Cpanel. Там демон. И он не зависит ни от аапча ни от другого какого-нибудь предоставляемого сервиса. Хотя делай как хочешь. | ||||||||||||||||||||||||||||||||||||||||||||||
| | |
| | #16 (permalink) |
| Пользователь Регистрация: 13.05.2008
Сообщений: 68
Вы сказали Спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
![]() | а как его правильно перегрузить apache22? в мануалах написано через грацефул! (apache очень извесный, если бы можно было, то поставили бы так чтобы сессии не обрывались...) так эта cpanel панель бинарная чтоли, после установке там исходного кода не видно? если кто-то может посомтреть как apache22 перегружаеться в сpanel, ispmeneger или в аналогичных? UPD: Код: # /usr/local/etc/rc.d/apache22 graceful это apachectl graceful разрывает ![]() Последний раз редактировалось CISCO, 21.08.2008 в 06:03. |
| | |
| | #18 (permalink) |
| Пользователь Регистрация: 13.05.2008
Сообщений: 68
Вы сказали Спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
![]() | Код: #!/bin/sh
#
# $FreeBSD: ports/www/apache22/files/apache22.sh.in,v 1.5 2007/09/18 20:03:15 clement Exp $
#
# PROVIDE: apache22
# REQUIRE: LOGIN cleanvar
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable apache22:
# apache22_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable apache22
# apache22_profiles (str): Set to "" by default.
# Define your profiles here.
# apache22limits_enable (bool):Set to "NO" by default.
# Set it to yes to run `limits $limits_args`
# just before apache starts.
# apache22_flags (str): Set to "" by default.
# Extra flags passed to start command.
# apache22limits_args (str): Default to "-e -C daemon"
# Arguments of pre-start limits run.
# apache22_http_accept_enable (bool): Set to "NO" by default.
# Set to yes to check for accf_http kernel
# module on start up and load if not loaded.
. /etc/rc.subr
name="apache22"
rcvar=`set_rcvar`
start_precmd="apache22_precmd"
restart_precmd="apache22_checkconfig"
reload_precmd="apache22_checkconfig"
reload_cmd="apache22_graceful"
graceful_cmd="apache22_graceful"
gracefulstop_cmd="apache22_gracefulstop"
configtest_cmd="apache22_checkconfig"
command="/usr/local/sbin/httpd"
_pidprefix="/var/run/httpd"
pidfile="${_pidprefix}.pid"
required_files=/usr/local/etc/apache22/httpd.conf
[ -z "$apache22_enable" ] && apache22_enable="NO"
[ -z "$apache22_profiles" ] && apache22_profiles=""
[ -z "$apache22_flags" ] && apache22_flags=""
[ -z "$apache22limits_enable" ] && apache22limits_enable="NO"
[ -z "$apache22limits_args" ] && apache22limits_args="-e -C daemon"
[ -z "$apache22_http_accept_enable" ] && apache22_http_accept_enable="NO"
apache22_accf() {
retcode=0
if checkyesno apache22_http_accept_enable
then
/sbin/kldstat -v | grep accf_http 2>&1 > /dev/null
retcode=${?}
if [ ${retcode} -ne 0 ]
then
/sbin/kldload accf_http 2> /dev/null
retcode=${?}
fi
else
apache22_flags="${apache22_flags} -DNOHTTPACCEPT"
fi
[ ${retcode} -ne 0 ] && echo "Unable to load accf_http module"
return ${retcode}
}
load_rc_config $name
if [ -n "$2" ]; then
profile="$2"
if [ "x${apache22_profiles}" != "x" ]; then
pidfile="${_pidprefix}.${profile}.pid"
eval apache22_configfile="\${apache22_${profile}_configfile:-}"
if [ "x${apache22_configfile}" = "x" ]; then
echo "You must define a configuration file (apache22_${profile}_configfile)"
exit 1
fi
required_files="${apache22_configfile}"
eval apache22_enable="\${apache22_${profile}_enable:-${apache22_enable}}"
eval apache22_flags="\${apache22_${profile}_flags:-${apache22_flags}}"
eval apache22_http_accept_enable="\${apache22_${profile}_http_accept_enable:-${apache22_http_accept_enable}}"
eval apache22limits_enable="\${apache22limits_${profile}_enable:-${apache22limits_enable}}"
eval apache22limits_args="\${apache22limits_${profile}_args:-${apache22limits_args}}"
apache22_flags="-f ${apache22_configfile} -c \"PidFile ${pidfile}\" ${apache22_flags}"
else
echo "$0: extra argument ignored"
fi
else
if [ "x${apache22_profiles}" != "x" -a "x$1" != "x" ]; then
for profile in ${apache22_profiles}; do
echo "===> apache22 profile: ${profile}"
/usr/local/etc/rc.d/apache22 $1 ${profile}
retcode="$?"
if [ "0${retcode}" -ne 0 ]; then
failed="${profile} (${retcode}) ${failed:-}"
else
success="${profile} ${success:-}"
fi
done
exit 0
fi
fi
if [ "${1}" != "stop" ] ; then \
apache22_accf || apache22_flags="${apache22_flags} -DNOHTTPACCEPT"
fi
apache22_requirepidfile()
{
if [ ! "0`check_pidfile ${pidfile} ${command}`" -gt 1 ]; then
echo "${name} not running? (check $pidfile)."
exit 1
fi
}
apache22_checkconfig()
{
if test -f /usr/local/sbin/envvars
then
. /usr/local/sbin/envvars
fi
echo "Performing sanity check on apache22 configuration:"
eval ${command} ${apache22_flags} -t
}
apache22_graceful() {
apache22_requirepidfile
echo "Performing a graceful restart"
eval ${command} ${apache22_flags} -k graceful
}
apache22_gracefulstop() {
apache22_requirepidfile
echo "Performing a graceful stop"
eval ${command} ${apache22_flags} -k graceful-stop
}
apache22_precmd()
{
apache22_checkconfig
if checkyesno apache22limits_enable
then
eval `/usr/bin/limits ${apache22limits_args}` 2>/dev/null
else
return 0
fi
}
extra_commands="reload graceful gracefulstop configtest"
run_rc_command "$1" GPLHost:>_ Web hosting open source (GPL) control panel download areas бесплатные и для freebsd я нашел только 3-4 штуки Последний раз редактировалось CISCO, 23.08.2008 в 08:18. |
| | |
| | #19 (permalink) |
| Пользователь Регистрация: 13.05.2008
Сообщений: 68
Вы сказали Спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
![]() | подскажите пожалуйста, кто добавлял, как лучше всего добавить еще один аккаунт ftp? я вот пробую не получаеться!! то есть в одном каталоге два пользователя работать не хотят! нужно сделать просто еще один каталог, чтобы он был подкаталогом /home/usr0/usr1/ ? proftp+ MySQL и pureftp + MySQL, видел везде есть неограниченное количество аккаунтов для ftp, в общем не знаю как лучше сделать чтобы было больше одного аккаунта!! нужно добавлять пользователя в систему чтобы сделать еще один аккаунт!? Код: INSERT INTO `users_table` VALUES(2, 'wowa','d4gfhf', 'ftp', '1000', '1000', '/usr/users/wowa', '/sbin/nologin',0,0,0,0) как на других панелей делаеться? как тут сделать чтобы было несколько аккаунтов ftp? Последний раз редактировалось CISCO, 26.08.2008 в 07:26. |
| | |