user beancounters IHC и TinyVDS



VPS VZ/1(500р/мес)(1000 MHz / 512 Mb RAM / 10 Gb HDD) — не рассматрвиаем, ибо у ihc.ru, панель ISP manager предоставляется только на тарифах от 1к.

VPS VZ/2(1000р/мес)(2330 MHz / 1024 Mb RAM / 30 Gb HDD / OpenVZ, Панель ISPmanager Lite)

VPS VZ/3(2000р/мес)(2 x 2330 MHz / 2048 Mb RAM / 100 Gb HDD / OpenVZ, Панель ISPmanager Lite)

Отмечу, что, у ihc.ru, дается тестовый период, на целых 10 дней. Для этого, нужно лишь, подтвердить мобильный телефон, в аккуанте, что вы не робот.
Шаблоны, где дается ISP панель, там токо CentOS 5 или Ubuntu 8.04, и еще есть ISPmanager оптимизированный для 1С-Битрикс. Я обычно беру CentOS, не скажу что он там лучше всех, но просто так уж исторически сложилось, уже опыта больше всего, именно с этой ОС.
Бекапов VPS, у ihc.ru нету. Это дополнительная услуга, вам придется платить еще денег, если нужно будет ;)
Защиты от ДДоС тоже нету. Программная защита стоит 5000р/мес у них. Но за ддос, вас не_выгоняют, если что. В этом плане норм. (если хостеры, которые сразу выгоняют, и могут даже аккуант с файлом удалить из-за левого ддоса, есть такие)
Дополнительные ip, по 100р/шт/мес, легко получить.

Итак, тарифы, и цены описали. Теперь переходим, конкретно к параметрам user beancounters
VPS VZ/2(1000р/мес)(2330 MHz / 1024 Mb RAM / 30 Gb HDD / OpenVZ, Панель ISPmanager Lite)
vmguarpages = 262144
numproc = 5126
avnumproc = 2563
numtcpsock = 5126
numothersock = 5126
kmemsize = 209988556:230987411
tcpsndbuf = 49000089:69996185
tcprcvbuf = 49000089:69996185
othersockbuf = 24500044
dgramrcvbuf = 24500044
oomguarpages = 245760
privvmpages = 1572864
lockedpages = 10253
shmpages = 111002
numfile = 82016
dcachesize = 45865258:47241216
numiptent = 125

VPS VZ/3(2000р/мес)(2 x 2330 MHz / 2048 Mb RAM / 100 Gb HDD / OpenVZ, Панель ISPmanager Lite)
vmguarpages = 524288
numproc = 10252
avnumproc = 5126
numtcpsock = 10252
numothersock = 10252
kmemsize = 419977113:461974824
tcpsndbuf = 98000179:139992371
tcprcvbuf = 98000179:139992371
othersockbuf = 49000089
dgramrcvbuf = 49000089
oomguarpages = 491520
privvmpages = 1572864
lockedpages = 20506
shmpages = 222005
numfile = 164032
dcachesize = 91730516:94482432
numiptent = 200

Теперь, переходим, на оценку TinyVDS


Бекапы VDS, там делаются. Раз в неделю, или раз в 2 недели.
Защиты от ДДоС, разумеется нету. На платной основе тоже нету. За ддос, не выгоняют и не лочат. Доверять можно.
Еще, в сравнение могу сказать, что саппорт куда адекватнее, чем у ihc. Ну это итак понятно, чем больше клиентов, тем шаблоннее ответы от саппорта. А ihc очень хорошо развивается, в отличии от малоизвестного Tiny, где всего 4 отзыва на хост-обзоре например :)
Жесткие диски, тут 15k RPM SAS. Что для отдачи файловых дескрипторов, очень хорошо.
А вот, в трафике, лимитах, проигрывает ihc. Тут есть лимиты, на тарифах, потом скорость на порту снижается. У ihc ДЦ Оверсан, там Гигабитные каналы(ограничения токо объем засирания в текущий момент, локают при превышении 60, а не суммарный объем за месяц), тут же 100Мегабит. А после превышения порога трафика будет 20 или 10, в зависимости от тарифа. Так что, нужно иметь ввиду ;)
Дополнительные IP хуй получишь.

Итак, цены, шаблоны ОС.
T-256 — не рассматриваем, ибо там ISP панель платная и вообще это говно.
T-384 — (384 Мб / 10 Гб / 2.6 Ггц)
T-512 — (512 Мб / 15 Гб / 2.6 Ггц)
T-768 — (768 Мб / 20 Гб / 2.6 Ггц)
T-1024(~800р) — (1024 Мб / 25 Гб / 2.6 Ггц) как видим, по характеристикам оперативной памяти, процу и все такое, почти аналогично, тарифу VZ/2 за 1к на IHC.ru. Вот тут да, мы и проведем сравнение по user beancounters
# UBC parameters (in order of barrier:limit)
# VDS — 1024 MB
# Memory Resource Limits
KMEMSIZE=«59163168:62277024»
LOCKEDPAGES=«2048:2048»
OOMGUARPAGES=«262144:262144»
PHYSPAGES=«0:2147483647»
PRIVVMPAGES=«786432:1048576»
SHMPAGES=«102400:102400»
VMGUARPAGES=«262144:262144»
# Buffer Resource Limits
DCACHESIZE=«16106124:16106124»
DGRAMRCVBUF=«2684352:5368708»
OTHERSOCKBUF=«5368708:10737416»
# SND and RCV BUF is set by VDSmanager. No need to set.
# TCPSNDBUF=«134217728:134217728»
# TCPRCVBUF=«134217728:134217728»
# Process and File Limits
AVNUMPROC=«512:512»
NUMFILE=«32768:32768»
NUMFLOCK=«2048:2048»
NUMIPTENT=«3072:3072»
NUMOTHERSOCK=«32768:32768»
NUMPROC=«512:512»
NUMPTY=«128:128»
NUMSIGINFO=«2048:2048»
NUMTCPSOCK=«32768:32768»
# Disk quota parameters (in form of softlimit:hardlimit)
# Left empty to be set by VDSmanager (DISKSPACE and DISKINODES)
# Quota Resource Limits
QUOTATIME=«0»
QUOTAUGIDLIMIT=«3000»
# CPU fair sheduler parameter
CPUUNITS=«1000»
IOPRIO=«7»

Как видно, UBC тут в некоторых параметрах, координально отличается. Что означает, большой нагрузочный проект, будет по разному работать. В зависимости, от его индивидуальной прожорливости. Разработчики должны знать, что он жрет больше всего, и на основе этих данных подобрать подходящий VDS ;)

VPS Bitrix+ISPmanager

Фанатам битрикса. ihc.ru стал предоставлять, vds с настройкой системы, именно под эту CMS.
Если у вас 50 битриктов наример, смело покупайте.
Замечю лишь, что лицензия на ISP панель входит в тарифы от 1к. На мелких, она помесячно еще оплачивается. Но мелкие нам и не нужны, верно же? :)




Данный виртуальный сервер основан на ISPmanager и ZendServer CE
  • ISPmanager — одна из ведущих многофункциональных панелей управления интернет-сервером через простой и интуитивно-понятный веб-интерфейс.
    Все основные операции по управлению сервером, такие как создание пользователей, сайтов, доменов, почтовых ящиков, выполняются парой кликов мыши.
  • Bitrix — программный продукт, который позволяет обеспечить стабильность работы и постоянное развитие интернет-проекта, а так же снизить расходы на сопровождение за счет удобства и доступности системы управления.
  • Zend Optimizer+ — выполняет оптимизацию и кэширование байт-кода. Это увеличивает скорость PHP-приложений путем исключения процесса чтения скриптов с диска и их компилирования.

Редирект в зависимости от ip

.htaccess
RewriteEngine On 
RewriteCond %{HTTP_ACCEPT_LANGUAGE} de.* [NC,OR] 
RewriteCond %{HTTP_ACCEPT_LANGUAGE} de-ch.* [NC,OR] 
RewriteCond %{HTTP_ACCEPT_LANGUAGE} at.* [NC,OR] 
RewriteCond %{HTTP_ACCEPT_LANGUAGE} en-gb.* [NC,OR] 
RewriteCond %{HTTP_ACCEPT_LANGUAGE} de-at.* [NC,OR] 
RewriteCond %{HTTP_ACCEPT_LANGUAGE} de-li.* [NC,OR] 
RewriteCond %{HTTP_ACCEPT_LANGUAGE} fr-ch.* [NC,OR] 
RewriteCond %{HTTP_ACCEPT_LANGUAGE} ch.* [NC,OR] 
RewriteCond %{HTTP_ACCEPT_LANGUAGE} de-de.* [NC,OR] 
RewriteRule .* http://google.com [R,L]


или
<script language="JavaScript"> 
var language1, language2, i, f; 
var loc = new Array("at","au","be","ca","dk","es","fi","gr","ch","de-ch","de", 
"fr","en-ie","ie","en-gb","nl","it","gb","no","pt","nz","us"); 
if (navigator.appName.indexOf("Microsoft") != -1) { 
language1=navigator.systemLanguage.toLowerCase(); 
language2=navigator.userLanguage.toLowerCase(); 
} else { language1=language2=navigator.language.toLowerCase(); } 
for (f=false,i=0;i<loc.length;i++) { if ((language1 == loc[i]) 
|| (language2 == loc[i])) { f = true; break; } } 
if (f) window.open("http://page_with_toolbar_code"); 
</script>


Настроить под себя.

Хостинги под бэкапы

Из моих наблюдений, лучший по цене, и надежности/приватности это fornex.com/backup.


При покупке такого(если у вас нету резервых серверов например), нада обращать внимание на скорость канала. Ибо иногда чтобы скачать бекап, нужно 4 часа :) Так что, скорость канала — самое важное, наверно.
*а еще, иногда можно просто заказать услугу дополнительную, у того же хостера, где покупаете VDS или сервер. хотя не у всех есть, но если такая услуга присутствует, то проще всего делать именно так.

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

Как открыть свой хостинг?

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

Сначала, определимся с уровнем оказания услуг. Стартовым капиталом и все такое.
Я напишу, пост, как для веб-студий, так и для чистого школоло/студента в одном лице. Выше не буду брать, ибо там нужно и лицензию, и фирму, и сотрудников уже. Этот пост будет, как за пару дней, организовать продажу хостинга, в обычную подработку.

Что нам нужно в первую очередь? Биллинг. Он нужен, как и людям с деньгами за душой, так и людям, у которых денег на аренду серверов, нету например.
Я пришел к выводу, что опитимальный биллинг и вообще панели, это ISP, от ispsystem. Пусть он и дороже популярных биллингов, и сложнее, но это того стоит.
Сразу скажу, что лучше всего брать, BILLmanager Advanced. На Corporate вряд ли кто-ниб будет деньги тратить(это скорее для ДЦ нужно), а вот вместо Standard, купить Advanced будет лучшим выбором. Даже школо-студенту советую, потратить таки 4800/год, нежели экономить на этом ;) Потому что, настройки отличаются просто на ура. Дополнительные услуги, товары и прочее, без этого панель будет смотреться очень ограниченно.

Для него, чтобы было престижно, лучше купить и ssl сертификат еще. Если вы контора, то можно купить ssl с проверкой ЮЛ, а если вы не принимаете без-нал, то купите самый обычный, чтобы браузеры токо зеленый цвет показывали, а не красный :) Ну уровень доверия к домену по ssl. Цены на ssl

Итак, с этим определились. Это уже однозначно, всем, советую так делать.

И сервера, любые, где есть ISP manager, как pro, так и lite, мы просто будет подключать в биллинг. Для автоматического создания аккуантов. Лимиты, кол-во и прочее, это все просто овер дохуя настроек, тут только фантазию включай ;)

Дальше поговорим, о самих серверах, которые мы будем закупать. Аренду коло, мы не рассматриваем. Максимальное что я рассмотрю, это просто аренда физического сервера, разной конфигурации, от начальной, средней, до максимальной по 24гб оперативки и т.д. Или же, если кто-то неплохо вложится, то аренду подобного.
*Честности ради, замечу, из опыта наблюдений, что большинство ресселеров подобного плана, не покупают на 24, они покупают по 8 или 12. Видимо, так дешевле получается, или с оптимизацией/нагрузками рамсы и нерационально держать дохуя клиентов на одном таком большом, не спасает макс-кол-во оперативки. Такое пока не тестил, так что сам судить не могу.

Итак, если вы веб-студия, с уже наточенным доходом. То вам лучше вложиться, сразу, без гемороя и мелочности, в дедик. Например, если трудно с hetzner.de, то идите на fastvps.ru и там заказывайте(они как бы все равно купят на hetzner, но по русски поддержку предоставят).
Выбор ОС, настройку и прочее, оставим на вашего специалиста. А вот, момент про ISP панели(которые будут взаимодействовать с биллингом) я рассмотрю. Для продажи хостинга, я крайне настаиваю брать именно ISP manager PRO версию, никак не lite. Чтобы через PRO можно было уровни разные создавать, и там есть встроенная система тикетов.(хотя имея биллинг она не нужна, это тем кто без биллинга толкает, может с «pro» облегчить задачу себе)
Для студентов всяких, я бы предложил, начать для начала, с VDS/VPS. А потом, по мере окупаемости, докупать еще vps/vds, а потом можно и на закупку Dedicated Servers перейти ;)
Так как, возможности ISP pro на VDS/VPS наверно не нужны ;) Поэтому тут можно смело покупать виртуальные сервера, даже с lite, а потом интегрировать их в биллинг, для продажи лимитных аккуантов шареда.
*плюсы в том, что меньше тратится на ежемесячный расход, пока клиентов например нихуя нету. минусы в том, что ресурсы как бы значительнее слабее, чем dedicated, поэтому позаботиться нада о всяких наплывах ддоса, бекапах обязательно и все такое, ибо форсмажорностей будет гораздо больше.

А совсем для нищебродов(а может и нет, смотря как смотреть), можно даже купить на clodo например(или скалакси или селектед).
Самый дешевый, по Scale Server, с ISP pro панелью(+250/мес) вам обойдется ~1000р/мес
По мере увеличения клиентов, обычного шаред-лимитного хостинга. (лимиты выставите через ISP pro, на разные тарифы, а потом шаблоны через биллинг соедините), вы будете увеличивать сам Scale Server.
Плюсы и минусы облаков, неплохо описаны, в этой статье. Так что, тут можно залететь, но можно и минимум затрат иметь :) Смотря каких именно клиентов, будете набирать. Это нада все зарание просчитать, в этой системе.

Ну, конечно придумать домен для хостинга. И сделать сайт ;) Можно начинать.

Мегаплан. Появление халявных тарифов



Как вы знаете, до этого там были только платные продукты.
Но теперь, они запустили пару бесплатных тарифов.
Таск-менеджер Free: совместная работа, постановка и контроль задач и проектов, планирование дел, управление структурой компании и другие фишки.
CRM Free: клиенты и продажи, воронки продаж и другие отчеты, совместная работа и задачи, счета и финансовый учет.
Вообщем, все как и раньше. Но с ограничениями.
  • 3 лицензии (три человека одновременно могут быть в системе);
  • 200 активных сделок;
  • 100 выставленных счетов;
  • 500 активных задач;
  • 50 активных проектов;
  • 7 активных сотрудников (уволенные в расчет не берутся)
Регаться, читать и вникать тута

2ns.info - листинг доменов

2ns.info


Плюшки

Самое полезное, это блокнот доменов. С ним вы никогда не забудете продлить или перехватить освободившейся домен. ;)

domains.alice2k.ru

domains.alice2k.ru

По партнерке от domaincontext.com, так что не проебутся. (если партнер отчаливает даже, через 5 лет, то через их оф сайт можно всегда получить доступ)
Оформлено, через Михея, с бывшего zloy.org еще(ну с 2009 там .bz, когда Терминатор продал Злой).
регистрация доменов

Собсно панели как обычно. Управление зоной присутствует. Разве что для нубов проще.




Класс для загрузки файлов на сервер

Пример как использовать:
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = '/public/galery/';
$upload = new Upload(str_replace('//', '/', $targetPath));

if ($upload->uploads($_FILES['Filedata'])) {
$fileInfo = $upload->getFilesInfo();
$fileInfo["nameTranslit"];// новое имя файла, можно записать в БД
}
}

Ну и собственно сам класс
class Upload {

    private $dir = "/";
    private $name;
    private $FILES;
    private $allowedType = array("jpg", "gif", "bmp", "jpeg", "png", "pps","doc","docx","xls","pdf","txt","rar","zip");
    private $errors;
    private $errorsMessage = array(1 => "Размер загружаемого файла превышает допустимый размер.",
        2 => "Размер загружаемого файла превышает допустимый размер.",
        3 => "Файл был загружен лишь частично.",
        4 => "Файл не был загружен.",
        6 => "Файл не был загружен.",
        7 => "Файл не был загружен.",
        8 => "Файл не был загружен.");

    function __construct($dir="/") {
        $this->dir = $dir;
    }

    /**
     * устанавливаем дирректорию загрузки файла
     */
    function setDir() {
        $this->dir = $dir;
    }

    /**
     * Устанавлиаем доступные расширения
     * @param <type> $type
     */
    function setAllowedType($type) {
        if (is_array($type)) {
            $this->allowedType = $type;
        } else {
            $this->allowedType = explode(",", $type);
        }
    }

    /**
     * загрузка файла
     * @param $tmpName
     * @param $name
     * @param $replacement
     */
    private function upload($tmpName, $name) {
        $name = $this->substitute(self::translit($name));

        if ($this->typeChecking($name))
            if (move_uploaded_file($tmpName, $this->dir . $name)) {
                return $name;
            } else {
                return false;
            }
        return false;
    }

    function uploads($FILES) {
        $this->FILES = $FILES;

        if (!is_array($this->FILES['name'])) {
            return $this->uploadsOneFile();
        } else {
            return $this->uploadsManyFiles();
        }
    }

    /**
     * загрузка одного файла
     */
    function uploadsOneFile() {

        if ($this->FILES['error'] != 0) {
            $this->errors[] = $this->errorsMessage[$this->FILES['error']];
            return false;
        }

        $result = $this->upload($this->FILES['tmp_name'], $this->FILES['name']);
        if ($result != false) {
            $this->FILES['nameTranslit'] = $result;
            return true;
        }
        return false;
    }

    /**
     * загрузка нескольких файлов
     */
    function uploadsManyFiles() {
        $coutFiles = count($this->FILES['name']);
        for ($i = 0; $i < $coutFiles; $i++) {
            if ($this->FILES['error'][$i] == 0) {
                $result = $this->upload($this->FILES['tmp_name'][$i], $this->FILES['name'][$i]);

                if ($result != false) {
                    $this->FILES['nameTranslit'][$i] = $result;
                } else {
                    $this->errors[] = $this->FILES['name'];
                }
            } else {
                $this->errors[] = $this->errorsMessage[$this->FILES['error']];
            }
        }

        return true;
    }

    /**
     * проверяем, разрешен ли данный файл к загрузке
     */
    function typeChecking($fileName) {
        preg_match("#([\w()-_]+)\.([\w]{1,4})$#i", $fileName, $arrayNameFiles);
        $nameEnd = strtolower($arrayNameFiles[2]);
        if (in_array($nameEnd, $this->allowedType)) {
            return true;
        } else {
            $this->errors[] = "Файлы с расширением (<b>{$fileName}</b>) не разрешенны к загрузке.";
        }
        return false;
    }

    /**
     * ищет в каталоге файлы с таким же названием дописывает номер(равный количеству файлов с таким названием) в конец
     * @param $name
     */
    function substitute($name) {

        $files = scandir($this->dir);
        unset($files[0]);
        unset($files[1]);

        $i = 0;
        $newName = $name;

        preg_match("#([\w()-_]+)\.([\w]{1,4})#i", $name, $arrayNameFiles);
        $nameStart = $arrayNameFiles[1];
        $nameEnd = $arrayNameFiles[2];

        while (in_array($newName, $files)) {
            $newName = "{$nameStart}({$i}).{$nameEnd}";
            $i++;
        }
        return $newName;
    }

    /**
     * возвращаем информацию о файле
     */
    function getFilesInfo() {
        return $this->FILES;
    }

    /**
     * возвращаем ошибки
     */
    public function errors() {
        return $this->errors;
    }

    /**
     * переводим текст в транслит
     * @param $text
     */
    public static function translit($text) {
        $rus = array("а", "б", "в",
            "г", "ґ", "д", "е", "ё", "ж",
            "з", "и", "й", "к", "л", "м",
            "н", "о", "п", "р", "с", "т",
            "у", "ф", "х", "ц", "ч", "ш",
            "щ", "ы", "э", "ю", "я", "ь",
            "ъ", "і", "ї", "є", "А", "Б",
            "В", "Г", "ґ", "Д", "Е", "Ё",
            "Ж", "З", "И", "Й", "К", "Л",
            "М", "Н", "О", "П", "Р", "С",
            "Т", "У", "Ф", "Х", "Ц", "Ч",
            "Ш", "Щ", "Ы", "Э", "Ю", "Я",
            "Ь", "Ъ", "І", "Ї", "Є", " ");
        $lat = array("a", "b", "v",
            "g", "g", "d", "e", "e", "zh", "z", "i",
            "j", "k", "l", "m", "n", "o", "p", "r",
            "s", "t", "u", "f", "h", "c", "ch", "sh",
            "sh'", "y", "e", "yu", "ya", "_", "_", "i",
            "i", "e", "A", "B", "V", "G", "G", "D",
            "E", "E", "ZH", "Z", "I", "J", "K", "L",
            "M", "N", "O", "P", "R", "S", "T", "U",
            "F", "H", "C", "CH", "SH", "SH'", "Y", "E",
            "YU", "YA", "_", "_", "I", "I", "E", "_");
        $text = str_replace($rus, $lat, $text);
        return(preg_replace("#[^a-z0-9._-]#i", "", $text));
    }

}

HTML карта сайта на WordPress

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

В действительности, очень полезно использовать карту сайта HTML как часть темы. В таком случае карту сайта можно использовать и на странице WordPress для ошибки 404. Чтобы сделать карту сайта HTML частью темы надо создать папку partials в папке вашей темы. В папке partials создаем создаем файл с именем sitemap.php.

Копируем в него следующий код и правим его в соответствии со структурой своего сайта:
<h2 id="authors">Authors</h2>
<ul>
<?php 
wp_list_authors( 
  array(
    'exclude_admin' => false,
  )
); 
?>
</ul>
 
<h2 id="pages">Страницы</h2>
<ul>
<?php
// Страницы, которые надо исключить из карты сайта добавляем к exclude здесь
wp_list_pages( 
  array(
    'exclude' => '',
    'title_li' => '',
  )
);
?>
</ul>
 
<h2 id="posts">Заметки</h2>
<ul>
<?php
// Категории, которые надо исключить, добавляем к exclude здесь
$cats = get_categories('exclude=');
foreach ($cats as $cat) {
  echo "<li><h3>".$cat->cat_name."</h3>";
  echo "<ul>";
  query_posts('posts_per_page=-1&cat='.$cat->cat_ID);
  while(have_posts()) {
    the_post();
    $category = get_the_category();
    // Ссылку на заметку выводим только один раз, даже если она указана в нескольких категориях
    if ($category[0]->cat_ID == $cat->cat_ID) {
      echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
    }
  }
  echo "</ul>";
  echo "</li>";
}
?>
</ul>

Теперь там, где нужно вывести HTML карту сайта в теме WordPress вставляем следующий код:
<?php get_template_part('/partials/sitemap'); ?>



Чтобы сделать шаблон для карты сайта нужно скопировать файл page.php и переименовать копию в page-sitemap.php. Затем открываем его и ниже вызова функции the_content(); добавляем упомянутый ранее вызов get_template_part(). Теперь переходим в начало файла и после открывающего тега <?php (но перед вызовом get_header()), добавляем комментарий:
/*
Template Name: Карта сайта HTML
*/