набор плагинов, для 0.4.x

Есть как платные, так и нет.
  • Allows users to create Counter-Strike mixes
  • Custom Block Manager for LiveStreet/ACE
  • Allows users to display their own Google Adsense ads in their topics
  • Alternative navigation
  • Attachments
  • Blog Autoconnect plugin
  • Belcam
  • Birthday Block
  • Chat plugin
  • Change Date
  • Comments on static pages
  • Livestreet Company Plugin
  • LiveStreet Engine Social Networking
  • Delayed post
  • Statistic plugin
  • Gravatar
  • Groups
  • Livestreet Ideal Interface
  • Image Preview
  • Livestreet Job Plugin
  • Mini Flv player
  • FindPresent
  • Seolib
  • LS Ads
  • LsBlocks
  • Index page title changer
  • My Stuff
  • NiceURL
  • Note
  • Only personal topics in user`s profile
  • Livestreet Image Gallery
  • Game Servers
  • Events: Events, Directory Places
  • Comments Edit
  • Microblog Plugin
  • Purse+Tasks
  • Torrent
  • Mixes module
  • QIP Smiles
  • Questions
  • RusUrls
  • Similar topics
  • Sitemap
  • Skin Switch
  • Contacts fields
  • Discussion Stream
  • All tags
  • Teams
  • Textarearesize
  • Preview-image for topic
  • Topic loader
  • Block TV
  • Livestreet Userhacks Plugin
  • Weather
  • XText

Скачать:

Поддомены для юзеров и коллективных блогов под 0.5

  • Все посты располагаются в субдоменах
  • Ссылки из заголовков топиков с главной страницы, rss, прямого эфира, топа, хороших и тд ведут на полный текст, располагающийся в субдомене
  • Ссылки из пользовательских профилей ведут на профили друзей, а не на их блоги, например, user.site.ru/profile;
  • Ссылки из списка блогов и из пользовательских профилей (состоит/администрирует) ведут на субдомены, являющимися коллективными блогами.
  • по адресу user.site.ru показываем публикации (блог пользователя), а не его профиль;
  • по адресу blog.site.ru показываем непосредственно сам коллективный блог;
  • ссылки на субдомены, для которых нет алиасов среди блогов и пользователей, переадресовываются на основной домен и по ним выводится ошибка 404;
  • обеспечение предупреждения коллизий путём проверки существования алиасов при регистрации пользователей и создания коллективных блогов.

Прежде всего нужно настроить DNS и параметры хостинга:
Для настройки DNS вам нужно привязать все поддомены к основному сайту. Для этого направьте wildcard домен вида *.site.ru на IP-адрес основного домена site.ru. Далее, вам нужно поставить обработку всех поддоменов вашего основного домена аккаунтом вашего основного домена. Например, если вы используете apache, то вам нужно прописать синоним для имени хоста директивой ServerAlias *.site.ru.

Если в plugins есть доступ на запись веб-серверу, то плагин сам создаст файл /plugins/subdomains/config.local.php и пропишет там ваш текущий домен в качестве базового. В этом случае больше никаких действий по установке предпринимать не требуется, ваш
плагин установлен. Если же после активации возникли проблемы с отображением сайта, то пропишите базовый домен вашего сайта в файле /plugins/subdomains/config.php таким образом: $config['main_domain'] = 'mysite.ru';
В настройках /plugins/subdomains/config/config.php есть список имён поддоменов $config['forbidden_subdomains'], которые запрещено регистрировать пользователям. Пользователи с такими логинами и блоги с такими URL регистрироваться не будут. Можете убрать или добавить необходимые домены по вашему желанию. Также при активации плагин проверяет наличие пользователей с логинами, совпадающими с URL блогов, и со списком запрещённых субдоменов. В том случае, если плагин таковые находит, он выводит соообщение об ошибке и запрещает активацию. Для продолжения активации вы можете либо переименовать пользователей/блоги, либо убрать соответствующие домены в списке запрещённых доменов.

Скачать

Сравнение панели Яндекс.Вебмастер и Google Wеbmaster

Все вебмастера, которые имеют один или несколько сайтов, пользовались панелями самых крупных и значимых поисковых систем – Яндекс.Вебмастер и Google Webmaster. Именно о них и пойдет речь в данной статье. Я постараюсь описать все доступные фукнции, рассказать об их важности, полезности, сравнить эти две панели и, наконец, решить, что использовать лучше.

Читать дальше →

Книга по заработку на AdSense

SEO


СОДЕРЖАНИЕ:
  • Предисловие
  • Глава 1. Ищем нишу под AdSense
  • Глава 2. Поиск ключевых слов
  • Глава 3. Создание контента
  • Глава 4. Шаблон с наибольшим CTR
  • Глава 5. Продвижение и заработок
  • Глава 6. 7-дневный марафон
  • Глава 7. Создание бизнеса
Книга весит 2,4 Мб, состоит с 53 страниц


Скачать тут.

Основные системные показатели на PHP

Рассматриваться будет работа на Ubuntu Server. Под другие nix-системы тоже должно работать, но, возможно, с доработками. Windows серверы не рассматриваются вовсе.
Все решения сделаны «в лоб», без изысков и фанатичной минимализации/оптимизации. Я использовал jQuery для того, чтобы получить json посредством Ajax, и вывести его на страницу. Примеры простые, и могут быть переделаны под любой другой способ передачи/вывода.

1. Загрузка CPU
Начнем с самого сложного. Сложного потому, что мне не сразу удалось найти способ получения информации о загрузке процессора, а впоследствии, и не сразу найти способ ее обрабатывать. Первой мыслью была «использовать exec(»top -n 1")", однако top не писал в стандартный вывод, а сохранение его (вывод) в файл на диск через '>', приводило к появлению огромного количества 'мусора', что сильно затрудняло последующий парсинг. В итоге, все свелось к чтению нужных файлов в виртуальной файловой системе, подключенной в /proc. Файл, в котором хранится информация о текущем использовании процессора называется /proc/stat. По сути, это не файл, а точка доступа к структурам данных ядра, но нам это знать не обязательно, потому что нам будет достаточно прочитать содержимое, а сделать это можно, как и в случае с простым файлом, через file(). Теперь можно привести кусочек кода, который эту информацию достает. После него я объясню, что было сделано, и зачем.
$file=file("/proc/stat");
$tmp=explode(" ",$file[0]);
$cpu1=$this->session->userdata("cpu1");
$cpu2=$this->session->userdata("cpu2");
$cpu3=$this->session->userdata("cpu3");
$cpu4=$this->session->userdata("cpu4");
$cpu=(100/($tmp[5]-$cpu4))/(($tmp[2]-$cpu1)+($tmp[3]-$cpu2)+($tmp[4]-$cpu3))*100;
       
$this->session->set_userdata(array("cpu1"=>$tmp[2],"cpu2"=>$tmp[3],"cpu3"=>$tmp[4],"cpu4"=>$tmp[5]));

Объяснение начнем с содержимого файла:
> cat /proc/stat
cpu  2255 34 2290 22625563 6290 127 456 0 0
cpu0 1132 34 1441 11311718 3675 127 438 0 0
cpu1 1123 0 849 11313845 2614 0 18 0 0
intr 114930548 113199788 3 0 5 263 0 4 [... еще куча цифр ...]
...

В первой строчке /proc/stat содержится информация о количестве потраченного процессором времени (усредненное для всех ядер/потоков) на выполнение (по порядку): процессов пользователя, высокоприоритетных процессов пользователя, системных процессов, простоя, ожидания ввода/вывода, аппаратных и программных прерываний. В следующих строках, начинающихся на 'cpu', приведены те же данные для каждого ядра/потока в отдельности. В нашем случае вся интересующая информация содержится в первой строке, поэтому дальше разбирать файл не будем.
В приведенном кусочке кода так же есть сохранение этих данных в сессию CodeIgniter. Это сделано для того, чтобы определять разницу (дельту) между текущими и предыдущими значениями показателей. Загрузка процессора представляет собой отношение дельты простоя к сумме дельт затрат на процессы. Другими словами, мы сравниваем количество простоя и работы с момента последнего запроса. Естественно, чем реже будут происходить эти запросы, тем сильнее будет усреднено значение загрузки процессора за это время.

2. Оперативная память
Информацию о количестве свободной оперативной памяти можно найти в файле /proc/meminfo:
> cat /proc/meminfo
MemTotal:        2052604 kB
MemFree:          246012 kB
Buffers:          792332 kB
Cached:           584716 kB
...

Отсюда мы будем брать две первые строчки, и извлекать из них цифры:
$file=file("/proc/meminfo");
$memory["total"]=substr($file[0],strpos($file[0]," "),strrpos($file[0]," ")-strpos($file[0]," "));
$memory["free"]=substr($file[1],strpos($file[1]," "),strrpos($file[1]," ")-strpos($file[1]," "));

Этот и последующие кусочки кода будут проще первого, и обширные пояснения им не потребуются. Здесь, например, все очевидно — мы просто «вырезаем» число, расположенное между двумя пробелами, для первой и второй строчки соответственно.

3. Swap file
Тут еще проще — берем строчку из /proc/swaps:
> cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda1                               partition       7811064 2732    -1
...

В нем перечислены все подключенные своп-файлы, их типы, объемы и занятое место. Нам просто надо «выдернуть» нужные цифры из нужных строк. В моем случае своп один, и строчку я обрабатываю одну:
$file=file("/proc/swaps");
$tmp=explode("\t",substr($file[1],strpos($file[1],"partition")));
$swap["total"]=$tmp[1];
$swap["free"]=$tmp[1]-$tmp[2];

Здесь пояснения тоже не нужны.

4. Жесткие диски
В моем примере будет приведен код, который извлекает информацию о количестве свободного места на дисках, точки монтирования которых находятся в /mnt. Ухищрения типа чтения и парсинга файлов из /proc здесь использовать не будут — для этой цели достаточно стандартных disk_free_space() и disk_total_space():
$drives=array();
if($dir=opendir("/mnt")){
  while(false !== ($file = readdir($dir))) {
    $arr=array();
    if(($file!=".")&&($file!="..")){
      $arr["path"]="/mnt/".$file;
      $arr["free"]=disk_free_space("/mnt/".$file);
      $arr["total"]=disk_total_space("/mnt/".$file);
      $drives[]=$arr;
    }
  }
}

5. Uptime
В качестве небольшого бонуса получим и продолжительность работы системы с последнего запуска:
$uptime=exec("uptime");
$uptime=explode(",",substr($uptime,strpos($uptime,"up")+3));
$time=explode(":",$uptime[1]);
$uptime=$uptime[0]." ".$time[0]." hours ".$time[1]." minutes";

Совсем банальный подход — вызов exec(), и форматирование результата.

Вывод
Мы смогли получить всю интересующую нас информацию — о заполненности жестких дисков, о загрузке процессора, о состоянии памяти и свопа и даже о продолжительности работы сервера. Как выводить эту информацию, каждый может придумать сам, в зависимости от требований. Я же поделюсь способом, который использую сам.
Сперва я собираю полученные данные в ассоциативный массив и вывожу его как json:
$result["cpu"]=$cpu;
$result["memory"]=$memory;
$result["swap"]=$swap;
$result["uptime"]=$uptime;
json_encode($result);

На выходе получается следующее:
{"uptime":"34 days   5 hours 45 minutes","cpu":1.7361111111111,"memory":{"total":"2052604","free":"191424"},"swap":{"total":"7811064","free":7808332}}

И, уже в браузере, я работаю с результатом при помощи jQuery:
var json=$.parseJSON(data);
$("#systemInfo").html("CPU: "+json.cpu+"<br />Memory free "+json.memory.free+" / "+json.memory.total);


cadedic.ru ООО Стратос



Тут есть интересная вещь, как ресселинг VDS.


Как локация, для обычного шаред хостинга. Это Канада. Т.е. любой adult разрешен. Остальное как везде.
VDS создаются или в Германии, или в Канаде.

Подробнее:
  • ISP manager панель, дается легко, оплата включена в стоимость.
  • Дополнительные ip = есть. дешевые.
  • Резервное копирование = есть. бесплатное еженедельное копирование на сторонний сервер.
  • Отношение к абузам = на порно норм, на варез средне. на все остальное плохое. хотя все по законодательству Канады. часть абуз уже мимо, ибо не рашка ;)
  • Тех поддержка — базовое администрирование. остальное платное.
  • Отношение к ддосу — как везде. vds заддосить при желании легко можно.
  • Способы оплаты — практически все электронные деньги. лучше всего QIWI, остальное это robox. карточки, мастеркард/виза нормально. безнал принимают, с ЮЛ работают.

Еще один хостинг под бэкапы backup4e.com

Работа с файлами осуществляется по протоколам: FTP и SFTP

Наши тарифы (за месяц):
  • Backup 4GB 1$
  • Backup 10GB 1.99$
  • Backup 30GB 4.99$
  • Backup 50GB 7.99$
  • Backup 70GB 9.99$
  • Backup 120GB 12.99$
  • Backup 180GB 14.99$
  • Backup 350GB 19.99$
  • Backup 450GB 24.99$
  • Backup 600GB 29.99$
  • Backup 1000GB 44.99$

Действуют скидки при оплате:
  • при оплате на 3 мес 10%
  • при оплате на 6 месяцев 20%
  • при оплате на 12 месяцев 30%

Что интересно, этот хостинг, просто делает вам аккуант в ISP manager, с ограничениями. Именно для бекапов. Поэтому связка с любыми ISP панелями, просто идеальна. И цены, копеечные ;)

301 редирект – корректная переадресация через htaccess и php header

Простой редирект (в файле .htaccess или httpd.conf для Apache):
Redirect 301 / http://www.you.com/new.htm

где:
Redirect 301 — это инструкция, говорящая что страница перемещена
/ — означает, что все с верхнего уровня сайта, включая все подкаталоги, будет переадресовано
www.you.com/new.htm — новая страница или сайт (не забывайте поставить последний "/", если переадресация идет на сайт).

Чтобы переадресовать только страницу, сохранив PR старой страницы:
Redirect 301 /old/old.htm http://www.you.com/new.htm

где:
/old/old.htm — путь и имя старой страницы

Аналогичный синтаксис для переадресации сайта:
RedirectPermanent / http://www.you.com/


Пример переадресации каталога:
RedirectPermanent /old-directory http://www.domain.com/new-directory/

Например, зашедших в test переадресуем на www.test.com, остальных на enter.test.com (порядок следования записей важен):
Redirect permanent /test    http://www.test.com/
Redirect permanent /        http://enter.test.com/


Использование mod_rewrite (прописывается в файле .htaccess):
Ставшая классической задача слияния имена сайта с www и без него, решается так:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^yoursite\.com
RewriteRule ^(.*)$ http://www.yoursite.com/$1 [R=permanent,L] . 

или альтернативный синтаксис:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Обозначение [R=301,L] означает: перенаправить клиента и отправить ему код статуса 301 (R=301) и сделать это правило последним (L).

Редирект старого домена на новый:
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

Например, если необходимо чтобы вместо rewrite.htm загружался файл rewrite.html, добавьте в .htaccess:
RewriteEngine   on
RewriteBase     /
RewriteRule     ^rewrite\.htm$  rewrite.html [R=permanent]

Для замены всех .htm файлов .html файлами:
RewriteEngine  on
RewriteBase     /
RewriteRule     ^(.*)\.htm$  $1.html [R=permanent]

Редирект на PHP:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.newdomain.ru/newdir/newpage.htm");
exit();
?>

Лучше указать HTTP/1.1, так как более старые не поддерживают виртуальный хостинг. Не забудьте, что до вызова header, ничего не должно выводиться (например, echo или print). Поэтому этот код лучше ставить в начало php-скрипта. Более полный вариант php редиректа с сохранением передаваемой страницы и параметров вызова:
<?
$ref=$_SERVER['QUERY_STRING'];
if ($ref!='') $ref='?'.$ref;
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://newdomain.com/'.$ref);
exit();
?>

Редирект на ASP
<%@ Language=VBScript %>
<% 
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "http://www.new-url.com"
response.end
%>

Редирект на ASP.NET
<script runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.new-url.com");
}
</script>

Редирект на ColdFusion
<.cfheader statuscode="301" statustext="Moved permanently">
<.cfheader name="Location" value="http://www.new-url.com">

Редирект с помощью meta refresh
<meta http-equiv='refresh' content='0; url=http://newdomain.com'>

где 0 — задержка переадресации в секундах, newdomain.com -страница, куда переадресуем. Некоторые старые браузеры не поддерживают meta refresh со значением 0, для совместимости можно установить ненулевой значение, хотя, на мой взгляд это уже не актуально. Такой редирект не сможет склеить ваши сайты (с www и без) и передать PR, так как игнорируется поисковыми системами. Он возвращает код 200 OK, что соответствует обычной странице. Эта техника популярна у спамеров, поэтому ее стоит применять только для страниц, которые не будут индексироваться.
Редирект с помощью JavaScript
Варианты переадресации на JavaScript чаще реализуются с использованием функции setTimeout('функция', задержка).
Например, автоматически сделать Click на кнопке «Submit» формы «searchform» через 0.1 сек после загрузки кода:
setTimeout('document.forms["searchform"].Submit.click()', 100);

На кнопку «Submit» можно повесить любое действие, например, открыть новый url в этом окне. Кстати такое редиректы чаще встречаются при организации Дорвеев (DorWay) — браузер Пользователя будет переадресован на другую страницу, а поисковый робот, который «не понимает» JavaScript, будет индексировать эту страницу, недоступную пользователю. На ней дорвейщики размещают текст, напичканный «нужными» ключевыми словами.
Чтобы просто переадресовать на другую страницу можно вставить после один из вариантов кода на JavaScript:
В последнем случае уже нельзя будет вернуться на страницу выполнившую переадресацию, так как ее адрес стирается из history, что нередко и нужною. Если нужна задержка по времени, можно оформить location=«www.newdomain.com»; в виде функции и вставить ее в setTimeout('функция()', задержка_в_мсек); Редирект на JavaScrupt не является 301 редиректом и не передаст PR страницы, не сможет обеспечить ее склейку.
Отметим дополнительно некоторые особенности редиректов:
  • Методы редиректа с .htaccess работают только на Linux серверах, имеющих Apache с включенным модулем Mod-Rewrite.
  • Использование .htaccess создает дополнительную нагрузку на сервер Apache, более эффективно прописывать те же команды в его конфигурационном файле hpptd.conf, но, как правило, к нему нет доступа у вебмастера.
  • 301 редирект, позволяет сберечь трафик и передать PR страницы для поисковых систем (для Google точно).
  • процесс склейки и передачи PR занимает длительное времени — до нескольких месяцев и также зависит от поисковой системы, поэтому не удаляйте старую страницу или сайт, пока не произойдет окончательный перенос.
  • некоторые поисковые системы требуют для склейки сайтов дополнительных настроек, например, для Яндекса нужно дополнительно прописывать robots.txt

Установка cs 1.6 сервера на Linux

  • Создание сервера CS 1.6 и его настройки
  • Создание сервера сounter-strike 1.6 в Linux
  • Установка сервера counter strike 1.6 (Linux)
  • Установка сервера CS 1.6 на Linux

Установку будем производить на операционной системе CentOS 6.0. Перед установкой сервера counter-strike 1.6 имеем чистую систему, как раз после установки. Единственное, были выполнены команды:
yum update
yum install mc

Создадим папку где будем хранить весь исходный материал для серверов
[root@cs hdd2]# mkdir source

Скачаем hldsupdatetool.bin
[root@cs hdd2]# wget http://www.steampowered.com/download/hldsupdatetool.bin

Даём нужные права на файл:
[root@cs hdd2]# chmod +x hldsupdatetool.bin

Запускаем hldsupdatetool.bin
[root@cs hlds]# ./hldsupdatetool.bin
-bash: ./hldsupdatetool.bin: /lib/ld-linux.so.2: bad ELF interpreter: Нет такого файла или каталога
[root@cs hlds]#

У меня возникла ошибка. Решил её установкой:
[root@cs hlds]# yum install ld-linux.so.2
Пробуем снова
[root@cs hlds]# ./hldsupdatetool.bin

На вопрос отвечаем «YES»
Enter 'yes' to accept this agreement, 'no' to decline: yes

Выдало ошибку: «sh: uncompress: команда не найдена»
Enter 'yes' to accept this agreement, 'no' to decline: yes
sh: uncompress: команда не найдена
tar: Это не похоже на tar-архив
tar: Завершение работы с состоянием неисправности с из-за возникших ошибок
[root@cs hlds]# 

Решаем её следующим образом:
[root@cs hlds]#ln -s /usr/bin/gunzip /usr/bin/uncompress

Пробуем снова:
[root@cs hlds]# ./hldsupdatetool.bin

Если увидим ниже написанное, то все ок.
Enter 'yes' to accept this agreement, 'no' to decline: yes
extracting steam.tar.Z...done

Проверяем, появились ли нужные нам файлы:
[root@cs hlds]# ls
hldsupdatetool.bin  readme.txt  steam

Обновляемся, причем нас попросят это сделать два раза:
[root@cs hlds]# ./steam
Checking bootstrapper version ...
Getting version 45 of Steam HLDS Update Tool
Downloading. . . . . . . . . . . .
Steam Linux Client updated, please retry the command
[root@cs hlds]#
[root@cs hlds]# ./steam
Checking bootstrapper version ...
Getting version 45 of Steam HLDS Update Tool
Downloading. . . . . . . . . . . .
Steam Linux Client updated, please retry the command
CAsyncIOManager: 0 threads terminating.  0 reads, 0 writes, 0 deferrals.
CAsyncIOManager: 21 single object sleeps, 0 multi object sleeps
CAsyncIOManager: 0 single object alertable sleeps, 0 multi object alertable sleeps
[root@cs hlds]#

Создаем файл, через который будем в дальнейшем обновлять сервер:
[root@cs hlds]# touch update.sh

Даем нужные права на файл:
[root@cs hlds]# chmod +x update.sh

Записываем необходимое для обновления в файл:
[root@cs hlds]# echo ./steam -command update -game cstrike -dir . > update.sh

Проверяем:
[root@cs hlds]# cat update.sh
./steam -command update -game cstrike -dir .
[root@cs hlds]#

Скачиваем (обновляем) сервер:
[root@cs hlds]# ./update.sh
Checking bootstrapper version ...
Updating Installation
No installation record found at .
No installation record found at .
No installation record found at .
Checking/Installing 'Counter-Strike Base Content' version 35

0.16%   downloading ./cstrike/cl_dlls/client.dll
0.16%   downloading ./cstrike/classes/ak47.res
0.16%   downloading ./cstrike/classes/arctic.res
0.16%   downloading ./cstrike/classes/aug.res
0.16%   downloading ./cstrike/classes/autoselect_ct.res
0.16%   downloading ./cstrike/classes/autoselect_t.res
0.16%   downloading ./cstrike/classes/awp.res
0.16%   downloading ./cstrike/classes/cancelbutton.res
0.16%   downloading ./cstrike/classes/default.res
0.16%   downloading ./cstrike/classes/defuser.res
0.16%   downloading ./cstrike/classes/deserteagle.res
0.16%   downloading ./cstrike/classes/elites.res
0.16%   downloading ./cstrike/classes/equipment.res

Ждем пока скачается
99.06%  downloading ./valve/valve.rc
99.06%  downloading ./valve/valvecomm.lst
100.00% downloading ./valve/xeno.wad

Connection Reset, errno 104 "Connection reset by peer"
CAsyncIOManager: 0 threads terminating.  0 reads, 0 writes, 0 deferrals.
CAsyncIOManager: 76 single object sleeps, 0 multi object sleeps
CAsyncIOManager: 0 single object alertable sleeps, 0 multi object alertable sleeps
[root@cs hlds]#

Создадим скрипт для запуска-проверки сервера:
[root@cs hlds]# chmod +x start.sh
[root@cs hlds]# vi start.sh

Содержимое файла «start.sh»
#!/bin/bash
echo «Starting CS:1.6»
sleep 1
./hlds_run -binary ./hlds_i686 -game cstrike -secure -console -pingboost 1 +exec server.cfg -verify_all +port 27015 +maxplayers 22 +map de_dust2 +ip 0.0.0.0

Запускаем
[root@cs hlds]# ./start.sh
Starting CS:1.6
Auto-restarting the server on crash

Console initialized.
scandir failed:/hdd2/source/hlds/./valve/SAVE
scandir failed:/hdd2/source/hlds/./platform/SAVE
Protocol version 48
Exe version 1.1.2.6/Stdio (cstrike)
Exe build: 16:56:12 Mar  8 2010 (4883)
STEAM Auth Server
couldn't exec listip.cfg
couldn't exec banned.cfg
Server IP address 0.0.0.0:27015
scandir failed:/hdd2/source/hlds/./valve/SAVE
scandir failed:/hdd2/source/hlds/./platform/SAVE
[S_API FAIL] SteamAPI_Init() failed; unable to update local steamclient. Continuing with current version anyway.

scandir failed:/hdd2/source/hlds/./valve/SAVE
scandir failed:/hdd2/source/hlds/./platform/SAVE
[S_API FAIL] SteamAPI_Init() failed; unable to update local steamclient. Continuing with current version anyway.

couldn't exec listip.cfg
couldn't exec banned.cfg
scandir failed:/hdd2/source/hlds/./valve/SAVE
scandir failed:/hdd2/source/hlds/./platform/SAVE
[S_API FAIL] SteamAPI_Init() failed; unable to update local steamclient. Continuing with current version anyway.

Connection to Steam servers successful.
   VAC secure mode is activated.
Птн Сен  2 07:22:45 NOVST 2011: Server Quit

[root@cs hlds]#

Исправляем ошибки:
couldn't exec listip.cfg

Создаем файл в listip.cfg папке cstrike:
[root@cs hlds]# touch cstrike/listip.cfg

Ошибка
couldn't exec banned.cfg

Создаем файл в banned.cfg папке cstrike:
[root@cs hlds]# touch cstrike/banned.cfg

Ошибка
scandir failed:/hdd2/source/hlds/./valve/SAVE

Создаем папки valve/SAVE в корне сервера
[root@cs hlds]# mkdir valve/SAVE

Ошибка
scandir failed:/hdd2/source/hlds/./platform/SAVE

Создаем папки platform/SAVE в корне сервера
[root@cs hlds]# mkdir platform
[root@cs hlds]# mkdir platform/SAVE

Пробуем запустить снова:
[root@cs hlds]# ./start.sh
Starting CS:1.6
Enabling debug mode
./hlds_run: line 134: gdb: команда не найдена
Please install gdb first.

Исправляем ошибку:
[root@cs hlds]# yum install gdb

Проверяем:
[root@cs hlds]$ ./start.sh
Starting CS:1.6
Enabling debug mode
Auto-restarting the server on crash

Console initialized.
Protocol version 48
Exe version 1.1.2.6/Stdio (cstrike)
Exe build: 16:56:12 Mar  8 2010 (4883)
STEAM Auth Server
Server IP address 0.0.0.0:27015
[S_API FAIL] SteamAPI_Init() failed; unable to update local steamclient. Continuing with current version anyway.

[S_API FAIL] SteamAPI_Init() failed; unable to update local steamclient. Continuing with current version anyway.

[S_API FAIL] SteamAPI_Init() failed; unable to update local steamclient. Continuing with current version anyway.

Connection to Steam servers successful.
   VAC secure mode is activated.

Пользователь для сервера
Создадим пользователя от которого будем управлять и запускать сервер:
[root@cs hlds]# useradd gsrv

Установим пароль для пользователя «gsrv»:
[root@cs hlds]# passwd gsrv
Смена пароля для пользователя gsrv.
Новый пароль :
Повторите ввод нового пароля :
passwd: все токены проверки подлинности успешно обновлены.
[root@cs hlds]# 

Передаем права пользователю gsrv
[root@cs hlds]# chown -R gsrv:gsrv source/

Дальше все действия будем выполнять от пользователя gsrv
[root@cs hdd2]# su gsrv
[gsrv@cs hdd2]$


Настройка IPTABLES
Создадим файл
[root@cs rc.d]# vi /etc/rc.d/rc.fw

со следующим содержимым:
#! /bin/sh
WAN_IF="eth0"
WAN_IP="ИП_АДРЕС_ВАШЕГО_СЕРВЕРА"

LO_IF="lo"
LO_IP="127.0.0.1"
LO_MASK="255.0.0.0"
LO_NET="$LO_IP/$LO_MASK"

SERV_PORT="27015:27025"
SHH_PORT="22"

IPT="/sbin/iptables"
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -X
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -A INPUT -i $LO_IF -j ACCEPT
$IPT -A OUTPUT -o $LO_IF -j ACCEPT
$IPT -A INPUT -p ICMP --icmp-type 8 -j ACCEPT
$IPT -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p TCP --dport 22 -j ACCEPT
$IPT -A INPUT -p tcp --dport 27015 -j ACCEPT
$IPT -A INPUT -p udp --dport 27015 -j ACCEPT

[root@cs rc.d]# chmod +x rc.fw

[root@cs init.d]# yum install screen