Linux甚の専甚゜ヌスサヌバヌの構成、パヌト2


投皿


Team Fortress 2の蚘録は、サヌバヌ偎ではプレヌダヌの最終ラむフの蚘録を䜜成する機䌚であり、クラむアント偎ではそれを衚瀺、線集、保存、および公開する機䌚です。 SourceTVの拡匵です。


゚ントリは、サヌバヌのコマンドラむンで明瀺的に蚱可され、マップがロヌドされる前に実行される構成ファむルに含たれお構成されおいる必芁がありたす。 さらに、プレヌダヌにレコヌドを返すようにWebサヌバヌを事前に構成する必芁がありたす。


Webサヌバヌのセットアップ


わかりやすくするために、DNSに別のreplay.example.orgサブドメむンを䜜成し、/ var / www / replay.example.orgディレクトリを䜜成し、䟿宜䞊、ログを個別のファむルに蚘録し、ゲヌムナヌザヌにそれらを読み取れるようにしたす。


ルヌトからディレクトリを䜜成し、所有者ゲヌムゲヌムず暩限曞き蟌みを行うゲヌムナヌザヌに、残りWebサヌバヌに-読み取りを蚭定したす。 たた、䟿宜䞊シンボリックリンクを䜜成するこずもできたす。 このWebサヌバヌは䞡方のゲヌムサヌバヌに共通ですが、それぞれが個別のディレクトリを䜿甚しお゚ントリをアップロヌドしたす。


# mkdir -p /var/www/replay.example.org/{htdocs/server1,htdocs/server2,log} # chown -R game:game /var/www/replay.example.org # chmod -R 755 /var/www/replay.example.org # ln -s /var/www/replay.example.org/log /home/game/log/www-replay 

この構成では、デフォルトで、すべおのWebサヌバヌログには所有者nginxadmおよび640のアクセス蚱可がありたす。぀たり、通垞のナヌザヌにはアクセスできたせん。 この堎合、これを修正したす。


  # touch /var/www/replay.example.org/log/{access,error}.log # chmod 644 /var/www/replay.example.org/log/*.log 

したがっお、ナヌザヌはゲヌムのログを読み取るこずができたす。 しかし、最初のロヌテヌションたでのみです。 これも修正したす。 /etc/logrotate.dディレクトリで、nginxファむルをsrcds-nginxにコピヌし、その䞭のログぞのパスを指定し、 create 640 nginx adm 、アクセスマスクを640から644に修正したす。


srcds-nginx
 #/etc/logrotate.d/srcds-nginx /var/www/stat.example.org/log/*.log /var/www/fastdl.example.org/log/*.log /var/www/replay.example.org/log/*.log { daily missingok rotate 52 compress delaycompress notifempty create 644 nginx adm sharedscripts postrotate if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid` fi endscript } 

ここでは、ロヌテヌションパスで、HLstatsX統蚈サヌバヌずFast Downloadサヌバヌからのログを含むディレクトリも指定したした。


ルヌトから、Webサヌバヌ構成ファむル/etc/nginx/conf.d/replay.example.org.confを䜜成したす。


replay.example.org.conf
 # /etc/nginx/conf.d/replay.example.org.conf server { server_name replay.example.org; listen 80; root /var/www/replay.example.org/htdocs; disable_symlinks on; autoindex off; access_log /var/www/replay.example.org/log/access.log main; error_log /var/www/replay.example.org/log/error.log warn; } 

もちろん、これはやや簡略化されたバヌゞョンです。 この堎合、Webサヌバヌはゲヌムサヌバヌず同じコンピュヌタヌ䞊にあり、むンタヌネット䞊で1぀のチャンネルを共有しおいるため、レコヌドをアップロヌドするためのチャンネル幅に远加の制限を芏定するこずは理にかなっおいたす。 ただし、高速ダりンロヌド蚭定ずは異なり、リファラヌに远加のチェックをむンストヌルする必芁はありたせん。


replay.example.org.conf呌び出しをメむンファむル/etc/nginx/nginx.confに曞き蟌みたすただない堎合。次に、構成をテストし、nginxを再起動したす。


  # nginx -t # systemctl reload nginx 

私たちはゲヌムナヌザヌずしお継続したす。


ゲヌムサヌバヌのセットアップ


デフォルトでは、サヌバヌはレコヌドを解決するずきに、起動時に〜/ tf2 / tf / cfg / replay.cfg構成ファむルを実行しようずしたす。 個々の蚭定が異なる必芁がある䞡方のサヌバヌにレコヌドを含めるため、以前の堎合ず同様に、サヌバヌごずに個別のファむルを準備したす。


〜/ tf2 / tf / cfgディレクトリにreplay_example.cfgファむルがありたす。これを調べお、独自のファむルを䜜成しおください。 最初のサヌバヌの堎合、〜/ cfg / replay1.cfg


replay1.cfg
 echo "*** ~/cfg/replay1.cfg" replay_name "  " replay_local_fileserver_path /var/www/replay.example.org/htdocs/server1 replay_fileserver_offload_enable 0 replay_fileserver_host replay.example.org replay_fileserver_path /server1 replay_enable 1 

ここに


replay_name
オブザヌバヌ芳客のリストに衚瀺される方法を蚘録するための特別なボットの名前。


replay_local_fileserver_path
既補の録音ファむルが眮かれるディレクトリ。 ゲヌムサヌバヌごずに個別であり、Webサヌバヌで読み取り可胜である必芁がありたす。


replay_fileserver_offload_enable
1の堎合-レコヌドはftp経由で別のサヌバヌにアップロヌドされ、サヌバヌ自䜓は既にhttp経由でそれらを配信したす。 私たちの堎合ではありたせん。


0の堎合、マシンのWebサヌバヌが配垃を凊理したす。


replay_fileserver_host
Webサヌバヌ名たたはIP


replay_fileserver_path
url郚分は、Webサヌバヌによっお衚瀺されるレコヌドぞのパスです。


replay_enable
実際には、サヌバヌ䞊の゚ントリが含たれたす。


したがっお、ここで蚀及されおいない倉数replay_local_fileserver_path、replay_fileserver_host、replay_fileserver_path、replay_fileserver_protocol= "http"およびreplay_fileserver_port= "80"から、 " http://replay.example.org:80/server1 "の圢匏のURLが圢成されたすレコヌドをダりンロヌドしたす。 たた、replay_local_fileserver_path倉数は、ファむルシステム内の実際のディレクトリの堎所を蚭定し、nginx + replay_fileserver_path構成ファむルのルヌトに等しくなりたす。


このファむルをreplay2.cfgにコピヌし、server1-> server2パスを修正したす


replay2.cfg
 echo "*** ~/cfg/replay2.cfg" replay_name "My replay bot" replay_local_fileserver_path /var/www/replay.example.org/htdocs/server2 replay_fileserver_offload_enable 0 replay_fileserver_host replay.example.org replay_fileserver_path /server2 replay_enable 1 

〜/ tf2 / tf / cfgにリンクを䜜成したす。


  $ ln -s -v ~/cfg/replay{1,2}.cfg ~/tf2/tf/cfg/ 

これらの構成ファむルは、autoexec.cfgの埌、サヌバヌの最初の起動時にのみ実行されるこずに泚意しおください。 カヌドを倉曎する堎合、それらは関係したせん。


倚かれ少なかれ有甚なコン゜ヌル倉数の倚く


replay_dopublishtest
レコヌドのサヌバヌゲヌムずWebの準備状況のテストを行いたす-ファむルシステム内のパスの可甚性、Webサヌバヌの名前などをチェックしたす。


replay_data_lifespan
日数デフォルトでは1日を蚭定したす。その埌、サヌバヌ䞊の゚ントリは「倱効」ずしおマヌクされ、手動たたは自動クリヌニングで削陀できたす。


replay_docleanup
「叀い」゚ントリを削陀したす。 パラメヌタヌ 'force'を䜿甚するず、䞀般的にすべおのレコヌドが削陀されたす。


replay_fileserver_autocleanup
デフォルトでは0-オフで、ラりンド間で「叀い」レコヌドの自動クリヌニングを開始したす。


replay_dofileserver_cleanup_on_start
デフォルトでは1-オン、サヌバヌの起動時に〜/ tf2 / tf / replay / server {1,2}ずWebサヌバヌディレクトリ/var/www/replay.exampleの䞡方で「叀い」゚ントリの自動クリヌニングを開始したす。 org / htdocs / server {1,2}。


replay_record_voice
デフォルトでは1-オン、プレむダヌのボむスチャットを蚘録したす。


このバヌゞョンのSteam゚ンゞンの関連倉数のリストは、サヌバヌコン゜ヌルでfind replay_ず入力するこずで衚瀺できたす。


包含物


start serverスクリプトstart {1,2} .shで、コマンドラむンに远加したす。


最初のサヌバヌの堎合


start1.sh
 CMDLINE="... -replay reply1.cfg -replayserverdir server1 \ ... 

2番目の堎合


start2.sh
 CMDLINE="... -replay reply2.cfg -replayserverdir server2 \ ... 

ここで、「-replay」コマンドには蚘録機胜が含たれ、サヌバヌの起動時に指定された構成ファむルを実行したす。 2番目のコマンド「-replayserverdir」は、各サヌバヌが゚ントリを蓄積するディレクトリの名前パス〜/ tf2 / tf / replay /からをパラメヌタヌずしお受け取りたす。


すべお、サヌバヌを起動しお詊す​​こずができたす。 ゲヌムクラむアントでは、サヌバヌの名前の近くのサヌバヌブラりザヌで、VACダッシュボヌドの暪に特城的なレコヌドアむコンが衚瀺されたす。


蚘録をオンにするず、サヌバヌにオブザヌバヌモヌドでボットが衚瀺されたす。これは実際に蚘録するず同時に1぀のゲヌムスロットを占有したす。 したがっお、サヌバヌの起動時に蚭定される「+ maxplayers 24」プレヌダヌの最倧数は1぀増加したす。぀たり、この堎合は25になりたすSteamTVがオンになっおいる堎合は26。


叀いレコヌド蚭定ガむドでは通垞、サヌバヌコマンドラむンパラメヌタヌ「-replay_port」が指定されおいたすが、2011幎に取り消されたため、蚀及しおいたせん-store.steampowered.com/news/6282/


プレヌダヌSourceModにバンドルされおいるものを含むでの倧量のアクションを容易にするプラグむンを䜿甚する堎合、レコヌディングボットに泚意する必芁がありたす。 いずれにせよ、サヌバヌからうっかりキックしないでください:)

サヌビス


レコヌドファむルは、サむズは小さいものの、再生ディレクトリず/ var / www /の䞡方で、䟝然ずしおディスク領域を占有したす。 そしお、1日の蚭定された゚ヌゞング日replay_data_lifespan 1ずこれらのディレクトリの自動クリヌニングreplay_dofileserver_cleanup_on_start 1にもかかわらず、叀いファむルは自動的に削陀されたせん。 replay_docleanupを手動で開始する堎合でも。 したがっお、安党䞊の理由から、 crontab -eを実行しお最埌に远加するこずにより、叀いレコヌドの匷制クリヌニングを远加したす。


crontab
 0 3 * * * /usr/bin/find ~/tf2/tf/replay/server{1,2}/* -type f -mtime +10 -delete 0 3 * * * /usr/bin/find /var/www/replay.example.org/htdocs/server{1,2}/* -type f -mtime +10 -delete 

cronが角括匧の拡匵をサポヌトするシェルを䜿甚するこずを確認するずよいでしょう-"{1,2}"


access.logを読むず、サヌバヌに接続しおいるずき、プレヌダヌ、たたはむしろゲヌムクラむアントが、3週間前にプレむしたゲヌムの蚘録を䌝えようずするこずがありたす。


もう1぀のポむント-レコヌドはプロセッサ時間を消費するこずに泚意しおください。 ロヌドの䟋は、「ボット」セクションの最埌に蚘茉されおいたす。


Sourcetv


次にSourceTVを構成したす。 これは、䞖界遞手暩をホストするずきに、䞖界遞手暩のオンラむン攟送に圹立ちたす。


SourceTVを䜿甚するず、芖聎者はTeam Fortress 2クラむアントを介しお、サヌバヌ䞊のゲヌムの進行状況を監芖できたす。 プロキシサヌバヌのチェヌンを䜿甚する堎合、オヌディ゚ンスのサむズは実質的に無制限ですが、この堎合、ゲヌムがゲヌムサヌバヌによっおのみブロヌドキャストされる堎合、それぞれがプロセッサリ゜ヌスずむンタヌネットチャネルの䞡方を消費するため、芖聎者の数を制限するこずは理にかなっおいたす。


ゲヌムサヌバヌの起動の初期蚭定䞭に、各サヌバヌのポヌト番号ずずもにコマンドラむンですでに「+ tv_port」を指定したため、すぐに蚭定ファむルに移動できたす。


録画蚭定ず同様に、マップをロヌドする前にSourceTVをアクティブにする必芁がありたす。぀たり、tv_enable 1コマンドをサヌバヌ起動コマンドラむンたたはautoexec.cfgファむルで実行する必芁がありたす。 さらに、tv_nameコマンドにも同様の芁件があるこずが実隓的に確立されたした。


サヌバヌのSourceTV蚭定は固定されおおり、各マップの倉曎を倉曎する予定はないため、䞀般的なものはすべおautoexec.cfgに、個々の蚭定はautoexec {1,2} .cfgに含めたす。


〜/ cfg / autoexec.cfgに䞀般蚭定を远加したす。


autoexec.cfg
 //... // SourceTV //      tv_title "  !" //    // tv_password "" //    tv_maxclients 5 //      tv_maxrate 0 //   (1)   POV  (0) tv_transmitall 1 //    tv_delay 20 //  - tv_allow_camera_man 0 //     //tv_record <filename> //   //tv_stoprecord //   tv_autorecord 1 

ここに


tv_title
ブロヌドキャストを衚瀺するずきに、芖聎者のりィンドりのタむトルバヌ。


tv_password
ブロヌドキャストに接続するためのパスワヌド。


tv_maxclients
芖聎者の最倧数0〜255はデフォルトで128です。オンラむンブロヌドキャストではなく、ゲヌムの録画tv_record、tv_autorecordのみが必芁な堎合は、れロに蚭定できたす。


tv_maxrate
各プレヌダヌの最倧チャンネル幅。デフォルトでは-8000 bps、0に蚭定されおいる堎合-制限なし。 特にサヌバヌが完党に芖聎者でいっぱいになる予定の堎合、このパラメヌタヌは以前のパラメヌタヌず密接にリンクしおいたす。


tv_transmitall
デフォルト "0"では、芖聎者にはSourceTVオペレヌタヌが衚瀺するものAIたたは特別な蚓緎を受けた人のみが䞎えられたす。 「1」に蚭定するず、芖聎者にはゲヌムに関するすべおの情報が提䟛され、異なるプレヌダヌのPOVを切り替えたり、マップの䞊たたは䞋にホバヌするこずもできたす。 パラメヌタをオンにするず、各芖聎者に必芁なチャンネル幅が2〜3倍になりたす。


tv_delay
芖聎者ぞのブロヌドキャスト遅延は秒単䜍で、デフォルトは30です。芖聎者がプレヌダヌにヒントを䞎えるこずができる堎合、䞍正行為を枛らすのに圹立ちたす。


tv_delaymapchange
ブロヌドキャストが終了するたでtv_delay遅延によりカヌドの倉曎を遅延 "1"するかしないか "0"-デフォルト。


tv_delaymapchange_protect
ラりンドが終了するたで、カヌドを手動で倉曎しないように保護したす「1」-デフォルト。


tv_allow_camera_man
蚱可 "1"-デフォルトたたは犁止 "0"オブザヌバヌプレヌダヌはSourceTVオペレヌタヌになりたす。 「0」の堎合-自動カメラ制埡のみ。


tv_autorecord
オン "1"にするず、すべおのゲヌムは、「auto-20160630-2208-koth_sawmill」などの〜/ tf2 / tfディレクトリにあるauto-<YYYYMMDD>-<hhmm>-< >.demずいう圢匏のファむルに自動的に曞き蟌たれたす。 .dem "。


パスワヌド「tv_password <password>」を蚭定するず、芖聎者はサヌバヌブラりザヌから接続できなくなりたす。「DisconnectBad spectator password」ずいうメッセヌゞで垞に拒吊され、サヌバヌコン゜ヌルで「Dropped <player> from serverBad芳客パスワヌド」。 接続するには、芖聎者はゲヌムのコン゜ヌル ~ にpassword <>をpassword <>し、コン゜ヌルを閉じおから接続を詊みる必芁がありたす。 たたは、すぐにコン゜ヌルconnect 192.0.2.0:27020; password <>入力しconnect 192.0.2.0:27020; password <> connect 192.0.2.0:27020; password <> 。

〜/ cfg / autoexec1.cfgで、最埌に远加したす


autoexec1.cfg
 //... //  SourceTV tv_enable 1 //     tv_name "SourceTV at Public Server No 1" 

ここに


tv_name
SourceTVサヌバヌの名前。サヌバヌブラりザヌの[監芖]タブに衚瀺されたす。


tv_enable
サヌバヌ䞊のSourceTVを含む「1」たたは含たない「0」、デフォルト。


同様に、〜/ cfg / autoexec2.cfgを調敎したす


autoexec2.cfg
 //... tv_enable 1 tv_name "SoutceTV at Private Server No 2" tv_autorecord 0 

しかし、2番目のサヌバヌでは、autoexec2.cfgの自動蚘録を無効にしたした。 名前が「workshop /」たたは「workshop / .ugc」のようなSteam Workshopから接続されたカヌドで自動蚘録「tv_autorecord 1」を有効にするず問題が発生したす。぀たり、スラッシュ「/」が含たれたす。スキヌムauto-<YYYYMMDD>-<hhmm>-< >.demのファむル名が䞍栌奜になり、 auto-<YYYYMMDD>-<hhmm>-< >.demの圢匏のログに悪甚されたす。

  Failed to write file /home/game/tf2/tf/replay/server2/sessions/20160702-074150-workshop/cp_orange_x3.ugc454299390.dmx Failed to write file /home/game/tf2/tf/replay/server2/blocks/20160702-074150-workshop/cp_orange_x3.ugc454299390_part_0.dmx ******************************************************************************** * * Replay recording shutting down due to publishing error! Recording will begin * at the beginning of the next round, but may fail again. * ******************************************************************************** ERROR: Publish timed out after 60 seconds. 

そしお、その結果、蚘録を無効にしたす。 たたは、「tv_record」を䜿甚しおスキヌムを考えるこずができたす。これにより、蚘録するファむル名を手動で指定できたす。


SourceTVをオンにするず、ボットがサヌバヌにオブザヌバヌモヌドで衚瀺されたす。このモヌドでは、ゲヌムのブロヌドキャストが行われ、同時に1぀のゲヌムスロットが占有されたす。 したがっお、サヌバヌの起動時に蚭定される「+ maxplayers 24」プレヌダヌの最倧数は1぀増加したす。぀たり、この䟋では25に等しくなりたすリプレむをオンにするず-26。


そのため、コマンドが登録され、サヌバヌを再起動しお、䜕が起こるかを確認しおください。 ゲヌムスロットを占有する゚ントリもあるため、次のように衚瀺されたす。


  *** ~/cfg/autoexec.cfg (global) -------------------------------------------------------- sv_pure set to 2. -------------------------------------------------------- maxplayers set to 25 *** ~/cfg/autoexec1.cfg Server logging enabled. Server logging data to file /home/game/log/server1/L1008000.log maxplayers set to 26 (extra slot was added for SourceTV) ... Cannot verify load for invalid steam ID [A:1:0:1] Cannot verify load for invalid steam ID [A:1:1:1] Recording SourceTV demo to auto-20161008-1155-cp_granary.dem... Connection to game coordinator established. *** ~/cfg/server1.cfg ... SourceTV broadcast active. Connection to Steam servers successful. Public IP is 192.0.2.0. 

そのため、最初は、サヌバヌ䞊のプレヌダヌの最倧数が24から25に増加したした。これにより、コマンドラむンパラメヌタヌ「-replay」が機胜し、レコヌドがオンになりたした。 次に、SourceTV甚に別の远加スロットが远加されたした。autoexec1.cfgから「tv_enable 1」が機胜したした。 無効なスチヌムID [A101]に぀いおの誓いには泚意を払いたせん。これらは、サヌバヌがゲヌムスロットを远加した蚘録ボットずブロヌドキャストボットです。 次に、ファむルぞのデモの蚘録〜/ tf2 / tf / auto-20161008-1155-cp_granary.demが開始されたした-autoexec.cfgのパラメヌタヌ「tv_autorecord 1」が機胜したした。 そしお最埌に、SourceTV攟送がアクティブであるず蚀われたした。


皌いだ。 マップにボットを远加し、ビュヌアに接続しお、tv_transmitall、tv_allow_camera_manのさたざたなモヌドでブロヌドキャストがどのように芋えるかを確認できたす。


スロットが远加されるこずもありたすが、「SourceTV broadcast active」に぀いおです。 蚀葉ではなく、サヌバヌのtv_statusコマンドを入力するず、「SourceTV not active。」ず誓いたすが、 tv_statusはtv_status入力されたすが、「tv_enable = 1def。0」ず衚瀺されたす。 この堎合、map- changelevel < >倉曎しおみおください。 倉曎埌にすべおが機胜した堎合、最初のカヌドをロヌドする前にSourceTVが最初にアクティブ化されなかったこずを意味したす。蚭定を確認する必芁がありたす。


圹立぀コマンド


tv_record < >
ファむル<ファむル名>に保存された蚘録を開始したす。 オペレヌタヌが芋るものに関係なく、すべおのむベントが蚘録されたす。


tv_stoprecord
蚘録を停止したす。


tv_clients
接続しおいる芖聎者に関する情報を衚瀺したす。


tv_msg
すべおの芖聎者にメッセヌゞを送信したす画面の䞭倮に衚瀺されたす。


tv_status
サヌバヌのステヌタスに関する簡単な情報を衚瀺したす-オンラむン時間、FPS、芖聎者数、䜿甚されたチャンネル垯域など。


このバヌゞョンのゲヌムサヌバヌの関連倉数のリストは、サヌバヌコン゜ヌルにfind tv_ず入力するこずで衚瀺できたす。


コンテンツのダりンロヌドを高速化する高速ダりンロヌド


暙準のTeam Fortress 2パッケヌゞに含たれおおらず、Steam Workshopで利甚できないサヌバヌ䞊のカヌド、モデル、サりンドを䜿甚する堎合、新しいプレヌダヌが接続されたずきに、ゲヌム玠材をゲヌムコンピュヌタヌにダりンロヌドする必芁がありたすただ持っおいる堎合いいえ。 デフォルトでは、ゲヌムサヌバヌからダりンロヌドされたす-このモヌドはスロヌダりンロヌドず呌ばれたす。 ただし、ゲヌムサヌバヌはただ新しいナヌザヌカヌドを頻繁にむンストヌルし、高負荷の専甚Webサヌバヌではないため、カヌドを配信する機胜およびサりンド、モデルなどを特別に蚓緎されたWebサヌバヌに割り圓おるこずは合理的です。 幞せな偶然の䞀臎によっお、私たちはすでに持っおいたす。 この機胜は高速ダりンロヌドず呌ばれたす。


Webサヌバヌのセットアップ


高速ダりンロヌドを䜿甚するには、次の圢匏のサブディレクトリ構造を持぀ディレクトリを䜿甚するようにWebサヌバヌに指瀺する必芁がありたす


  dir/maps dir/materials dir/sound ... 

ここで、「dir」は高速ダりンロヌドのルヌトディレクトリです。 / home / gameに䜜成するこずはできたせん-rwx暩限を持぀ホヌムディレクトリは----であり、Webサヌバヌがこれらのファむルを芋るこずができたせん。 したがっお、これらのディレクトリは、ゲヌムナヌザヌのホヌムディレクトリ以倖の堎所に䜜成したす。


蚭定を簡玠化するために、DNSにfastdl.example.orgの個別のサブドメむンを蚘述し、ディレクトリ/var/www/fastdl.example.orgを䜜成したす。䟿宜䞊、ログを個別のファむルに曞き蟌み、ゲヌムナヌザヌがそれらを読み取る機䌚を提䟛したす。


ルヌトディレクトリからディレクトリを䜜成し、所有者gamegameずゲヌムナヌザヌの曞き蟌み暩限を蚭定し、残りwebサヌバヌに察する読み取り暩限を蚭定したす。 たた、䟿宜䞊シンボリックリンクを䜜成するこずもできたす。 Fast Downloadディレクトリは、䞡方のゲヌムサヌバヌに共通です。


  # mkdir -p /var/www/fastdl.example.org/htdocs/{maps,materials,sound} # mkdir /var/www/fastdl.example.org/log # chown -R game:game /var/www/fastdl.example.org # chmod -R 755 /var/www/fastdl.example.org # ln -s /var/www/fastdl.example.org/htdocs /home/game/fastdl # ln -s /var/www/fastdl.example.org/log /home/game/log/www-fastdl 

この構成では、デフォルトで、すべおのWebサヌバヌログには所有者nginxadmおよび640のアクセス蚱可がありたす。぀たり、通垞のナヌザヌにはアクセスできたせん。 この堎合、これを修正したす。


  # touch /var/www/fastdl.example.org/log/{access,error}.log # chmod 644 /var/www/fastdl.example.org/log/*.log 

したがっお、ナヌザヌはゲヌムのログを読み取るこずができたす。 しかし、最初のロヌテヌションたでのみです。 これも修正したす。 /etc/logrotate.dディレクトリで、nginxファむルをsrcds-nginxにコピヌし、その䞭のログぞのパスを指定し、 create 640 nginx adm行目から644行目でcreate 640 nginx adm fixのアクセスマスクをcreate 640 nginx adm 。


srcds-nginx
 #/etc/logrotate.d/srcds-nginx /var/www/stat.example.org/log/*.log /var/www/fastdl.example.org/log/*.log /var/www/replay.example.org/log/*.log { daily missingok rotate 52 compress delaycompress notifempty create 644 nginx adm sharedscripts postrotate if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid` fi endscript } 

ここでは、ロヌテヌションパスで、HLstatsX統蚈サヌバヌず゚ントリを持぀サヌバヌからのログを含むディレクトリも指定したした。


考慮すべき別の面癜い点がありたす。 ほずんどのサヌバヌでは、関連する可胜性は䜎いですが、それでも倉わりたせん。 悪意からではなく、私たちのものず同じナヌザヌカヌドを持぀ゲヌムサヌバヌの所有者を劚げるものはありたせんが、トラフィックを節玄するために、高速ダりンロヌド蚭定でりェブサヌバヌのアドレスを指定しおくださいゲヌムコン゜ヌルでsv_downloadurlを入力するだけですサヌバヌに接続するこずによるクラむアント。


このような寄生虫はリファラヌによっお怜出できたす。リファラヌを䜿甚しお、マップが圓瀟からダりンロヌドされたす。 そのため、ゲヌムクラむアントがカヌドをダりンロヌドするず、ゲヌムサヌバヌの送信から、フォヌムの蚘録がWebサヌバヌログに衚瀺されたす。


  198.51.100.0 http://fastdl.example.org - [16/Jun/2016:20:08:28 +0600] "GET /maps/cp_orange_x5.bsp.bz2 HTTP/1.1" 200 2685506 "hl2://192.0.2.0:27015" "Half-Life 2" 0.453 "-" 

リファラヌに泚意しおください。 蚭定時にこれを考慮したす。


そのため、Webサヌバヌを構成するように蚭定されおいたす。 たず、リファラヌが正しいマップず正しいマップをダりンロヌドしおいるかどうかを刀断したす。 /etc/nginx/nginx.conf, http {}, fastdl.example.org, :


nginx.conf
 # /etc/nginx/nginx.conf http { # <...> map $http_referer $bad_client { default 1; "hl2://192.0.2.0:27015" 0; "hl2://192.0.2.0:27016" 0; } include /etc/nginx/conf.d/fastdl.example.org.conf; } 

ここではすべおが簡単です。 $http_referer , $bad_client ( 1) 0.


/etc/nginx/conf.d/fastdl.example.org.conf.


fastdl.example.org.conf
 #/etc/nginx/conf.d/fastdl.example.org.conf server { server_name fastdl.example.org; listen 80; root /var/www/fastdl.example.org/htdocs; disable_symlinks on; default_type application/octet-stream; if ($bad_client) { #      https://habrahabr.ru/post/272261/,     return 403; } access_log /var/www/fastdl.example.org/log/access.log main; error_log /var/www/fastdl.example.org/log/error.log warn; } 

— $bad_client, .


, nginx valid_referers, $http_referer, , . map .


fastdl.example.org.conf nginx.conf , nginx.


  # nginx -t # systemctl reload nginx 

game.



, ( bzip2), (.bsp) . , - cp_orange_x5 ( — , Steam Workshop), :


  $ mv cp_orange_x5.bsp ~/fastdl/maps $ ln -s ~/fastdl/maps/cp_orange_x5.bsp ~/tf2/tf/maps $ bzip2 --compress --keep --verbose --best ~/fastdl/maps/cp_orange_x5.bsp 

~/fastdl/maps, . , , , . < >.cfg ~/tf2/tf/cfg ( ~/cfg, ).


~/cfg/autoexec.cfg:


autoexec.cfg
 //... // Fast Download //  -,       //   Fast Download  sv_downloadurl "" sv_downloadurl "http://fastdl.example.org" //       (, ). . sv_allowupload 0 //       //    Slow Download.     . sv_allowdownload 1 

. , . , , autoexec.cfg Fast Download.


- — exec <configfile> . Fast Download , autoexec.cfg, "" , server.cfg. , . , autoexec.cfg :-)

SteamApps\common\Team Fortress 2\tf\download\maps\ cp_orange_x5.bsp, — ( ).


, , , Fast Download ( "Downloading maps/cp_orange_x5.bsp.bz2" — .bz2 ):


Fast Download working


( _x3, ).


, , " " (cl_downloadfilter mapsonly), "Map is missing".


Allow maps downloading


http://fastdl.example.org/maps/cp_orange_x5.bsp.bz2 , "403 Forbidden" — , referer hl2://192.0.2.0 , .


:


Fast Download ( sv_downloadurl), -, , < >.bsp.bz2, 404 , .bz2 — < >.bsp. , ~/tf2/tf/maps Slow Download, , .


Map missing



Team Fortress 2 — . , ( sv_cheats 0), . — "", (sv_cheats 1).


TF wiki , King of the Hill ( koth_* ), Payload ( pl_* ), Dustbowl Gorge, Capture the Flag ( ctf_* ) Mann Manor ( cp_manor_event ). , . . , . .



koth_sawmill, by design. 24 . , 24 , . , 24, . — . — . , . , ~/cfg/koth_sawmill.cfg:


koth_sawmill.cfg
 echo "*** ~/cfg/koth_sawmill.cfg" //    tf_bot_difficulty 3 //      tf_bot_join_after_player 0 //   tf_bot_keep_class_after_death 0 //      tf_bot_quota_mode fill //      tf_bot_quota 24 

:


tf_bot_difficulty 3
. 0=easy, 1=normal, 2=hard, 3=expert.


tf_bot_join_after_player 0
(0), (1), .


tf_bot_keep_class_after_death 0
, (, , ...), (1) (0), .


tf_bot_quota 24
, . , tf_bot_quota_mode "fill" "match", , +maxplayers .


tf_bot_quota_mode fill
:


"normal" — / (tf_bot_add / tf_bot_kick)


"fill" — ( + ) , tf_bot_quota


"match" — 1:N, N tf_bot_quota.


tf_bot_add [] [] [] [] []
, (, , maxplayers)


[] — Demoman, Engineer, HeavyWeapons, Medic, Pyro, Scout, Soldier, Sniper, Spy


[] — red blue


[] — tf_bot_difficulty, . 0=easy, 1=normal, 2=hard, 3=expert.


, ~/cfg, ~/tf2/tf/cfg:


  $ ln -s ~/cfg/koth_sawmill.cfg ~/tf2/tf/cfg 

, , : changelevel koth_sawmill . , expert-lvl tf_bot_difficulty 1 :-)



. cp_orange_x3.


koth_sawmill.cfg cp_orange_x3.cfg, Steam Workshop:


  $ mkdir ~/tf2/tf/cfg/workshop $ cp ~/cfg/koth_sawmill.cfg ~/tf2/tf/cfg/workshop/cp_orange_x3.ugc454299390.cfg 

cp_orange_x3.ugc454299390.cfg echo , .


. changelevel workshop/cp_orange_x3.ugc454299390 . — , :



. , : sv_cheats 1 — - nav_generate — ( < >.nav), . ...


  Generating Navigation Mesh... Sampling walkable space... Sampling walkable space... Sampling walkable space... Creating navigation areas from sampled data... Connecting navigation areas... Merging navigation areas... Created new fencetop area 1781(fc537be) between 3(1f542dcf) and 49(274fa843) Finding hiding spots...DONE Finding encounter spots...DONE Finding sniper spots...DONE Computing mesh visibility... Computing mesh visibility... 0% Computing mesh visibility... 1% Computing mesh visibility... 5% Computing mesh visibility... 17% Can't compute incursion distances from the Red spawn room(s). <...> Can't compute incursion distances from the Blue spawn room(s). <...> Computing mesh visibility... 84% Optimizing mesh visibility... NavMesh Visibility List Lengths: min = 12, avg = 104, max = 280 Computing mesh visibility...DONE Finding earliest occupy times...DONE Start custom... Post custom... Custom game-specific analysis...DONE Generation complete! 77.8 seconds elapsed. Navigation map '/home/game/tf2/tf\maps\workshop/cp_orange_x3.ugc454299390.nav' saved. [TF Workshop] Preparing map ID 454299390 [TF Workshop] Successfully prepared client map from workshop [ workshop/cp_orange_x3.ugc454299390 ] ---- Host_Changelevel ----   . 

. "sv_cheats 0" server2.cfg. , , sv_cheats 0, — , .


— , . , , . .


- , . Navigation Mesh Commands , Steam Users Forum .


"" (Puppet bots). , , . . TF Wiki, . https://youtu.be/Dn9970dxQ2g


, , , . , top Atom N2800:



24 ( , ), 12, . , . , , 7%. tf_bot_join_after_player 1 .


, , — ( ), (koth_sawmill.cfg cp_orange_x3.ugc454299390.cfg ) , , . , — , - " ", , .nav . , , tf_bot_quota 0 server{1,2}.cfg — , .




Source: https://habr.com/ru/post/J312928/


All Articles