使用php搭建tcp伺服器
A. 怎樣使用php實現tcp/udp通訊
1.在socket_bind的時候ip地址不能真回環地址如127.0.0.1
2.server.php後台跑起來的時候nohup php server.php > /var/tmp/a.log 2>&1 &
一: udp 方式
1) server.php
<?php //error_reporting( E_ALL ); set_time_limit( 0 ); ob_implicit_flush(); $socket = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP ); if ( $socket === false ) { echo "socket_create() failed:reason:" . socket_strerror( socket_last_error() ) . "\n"; } $ok = socket_bind( $socket, '202.85.218.133', 11109 ); if ( $ok === false ) { echo "socket_bind() failed:reason:" . socket_strerror( socket_last_error( $socket ) ); } while ( true ) { $from = ""; $port = 0; socket_recvfrom( $socket, $buf,1024, 0, $from, $port ); echo $buf; usleep( 1000 ); } ?>
2) client.php
<?php $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); $msg = 'hello'; $len = strlen($msg); socket_sendto($sock, $msg, $len, 0, '202.85.218.133', 11109); socket_close($sock); ?>
二: TCP 方式
1)server.php
<?php //error_reporting( E_ALL ); set_time_limit( 0 ); ob_implicit_flush(); $socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP ); socket_bind( $socket, '192.168.2.143', 11109 ); socket_listen($socket); $acpt=socket_accept($socket); echo "Acpt!\n"; while ( $acpt ) { $words=fgets(STDIN); socket_write($acpt,$words); $hear=socket_read($acpt,1024); echo $hear; if("bye\r\n"==$hear){ socket_shutdown($acpt); break; } usleep( 1000 ); } socket_close($socket) ?>
2) client.php
<?php $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $con=socket_connect($socket,'192.168.2.143',11109); if(!$con){socket_close($socket);exit;} echo "Link\n"; while($con){ $hear=socket_read($socket,1024); echo $hear; $words=fgets(STDIN); socket_write($socket,$words); if($words=="bye\r\n"){break;} } socket_shutdown($socket); socket_close($sock); ?>
B. php要讓伺服器使用socket要怎麼配置
socket伺服器的工作方式是這樣的,不間斷地運行以等待客戶端的連接。一旦客戶端連接上了,伺服器就會將它添加到客戶名單中,然後開始等待來自客戶端的消息。
下面是完整的源代碼:
// Set time limit to indefinite execution
set_time_limit (0);
// Set the ip and port we will listen on
$address = 'localhost';
$port = 10000;
$max_clients = 10;
// Array that will hold client information
$client = Array();
// Create a TCP Stream socket
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
// Bind the socket to an address/port
socket_bind($sock, $address, $port) or die('Could not bind to address');
// Start listening for connections
socket_listen($sock);
echo "Waiting for connections... ";
// Loop continuously
while (true) {
// Setup clients listen socket for reading
$read[0] = $sock;
for ($i = 0; $i < $max_clients; $i++) {
if (isset($client[$i]['sock']))
$read[$i + 1] = $client[$i]['sock'];
}
// Set up a blocking call to socket_select()
if (socket_select($read, $write = NULL, $except = NULL, $tv_sec = 5) < 1)
continue;
/* if a new connection is being made add it to the client array */
if (in_array($sock, $read)) {
for ($i = 0; $i < $max_clients; $i++) {
if (empty($client[$i]['sock'])) {
$client[$i]['sock'] = socket_accept($sock);
echo "New client connected $i ";
break;
}
elseif ($i == $max_clients - 1)
echo "Too many clients... ";
}
} // end if in_array
// If a client is trying to write - handle it now
for ($i = 0; $i < $max_clients; $i++) { // for each client
if (isset($client[$i]['sock'])) {
if (in_array($client[$i]['sock'], $read)) {
$input = socket_read($client[$i]['sock'], 1024);
if ($input == null) {
echo "Client disconnecting $i ";
// Zero length string meaning disconnected
unset($client[$i]);
} else {
echo "New input received $i ";
// send it to the other clients
for ($j = 0; $j < $max_clients; $j++) {
if (isset($client[$j]['sock']) && $j != $i) {
echo "Writing '$input' to client $j ";
socket_write($client[$j]['sock'], $input, strlen($input));
}
}
if ($input == 'exit') {
// requested disconnect
socket_close($client[$i]['sock']);
}
}
} else {
echo "Client disconnected $i ";
// Close the socket
socket_close($client[$i]['sock']);
unset($client[$i]);
}
}
}
} // end while
// Close the master sockets
socket_close($sock);
可以先將它分解為幾個較小的部分。
第一部分是創建伺服器。Lines:2至20。
這部分代碼設置了變數、地址、埠、最大客戶端和客戶端數組。接下來創建socket並將其綁定到我們指定的地址和埠上。
下面我們要做的事情就是執行一個死循環(實際上我們是故意的!)。Lines:22至32。
在這部分代碼中我們做的第一步是設置 $read 數組。此數 組包含所有客戶端的套接字和我們主伺服器的套接字。這個變數稍後會用於select語句:告訴PHP監聽來自這些客戶端的每一條消息。
socket_select()的最後一個參數告訴我們的伺服器在返回值之前最多等待5秒鍾。如果它的返回值小於1,那麼就表示沒有收到任何數據,所以只需要返回循環頂部,繼續等待。
腳本的下一個部分,是增加新的客戶端到數組中。Lines:33至44。
將新的客戶端放置在列表的末尾。檢查以確保客戶端的數量沒有超過我們想要伺服器處理的數量。
下面要介紹的代碼塊相當大,也是伺服器的主要部分。當客戶端將消息發送到伺服器時,就需要這塊代碼挺身而出來處理。消息可以是各種各樣的,斷開消息、實際斷開——只要是伺服器需要處理的消息。Lines:46至末尾。
代碼循環通過每個客戶端並檢查是否收到來自於它們的消息。如果是,獲取輸入的內容。根據輸入來檢查這是否是一個斷開消息,如果是那就從數組中刪除它們,反之,那它就是一個正常的消息,那我們的伺服器再次通過所有客戶端,並一個一個寫信息給他們,跳過發送者。
C. php寫tcp伺服器怎麼樣
這個不是php的強項啊。
用socket 可以寫值守程序的。
希望回答對你有幫助,如果有疑問,請繼續追問
答題不易,互相理解,您的採納是我前進的動力,感謝您。
D. 如何配置php伺服器
1. 安裝IIS
IIS是windows平台下比較成熟的web服務,安裝方法也非常簡單。
打開「開始」菜單,點擊「管理您的伺服器」,點擊「添加或刪除角色」(如圖所示)。
2
進入預備步驟後直接點下一步。到達了選擇角色的地方,選擇「應用程序服務(IIS,ASP.net)」
3
之後點擊下一步,出現附加組件的選擇,一個是FrontPage Server Extentions,另外一個是ASP.net,這兩項我們的環境中都不需要,不必選擇,如果有需要,可以選擇性安裝。進入下一步,是選項總結,再下一步,進入安裝過程,此時提示需要插入windows 2003(R2)的安裝光碟,插入光碟後,選擇光碟機所在驅動器下的I386,點擊確定,安裝過程將會繼續一直到結束,並且出現成功提示
4
完成後對IIS進行測試,打開「開始」菜單,點擊「所有程序」,進入「管理工具」,點擊「internet信息服務(IIS)管理器」
展開「網站」樹型節點,刪除默認網站,然後新建一個網站
5
進入向導後,進入下一步,為網站添加描述,也就是IIS中顯示的網站標示,可以隨便填寫,再進入下一步,為網站配置主機頭,我們是用來配置本地測試環境,所以把主機頭配置為127.0.0.1
6
進入下一步,選擇目錄,目錄需要提前建立好,然後選擇即可。繼續下一步,需要選擇網站許可權,這里只選擇讀取即可。之後便可完成網站新建向導了。
需要正常的瀏覽網站,還需要給網站的根目錄文件夾指定相應的許可權,首先在網站屬性中查看網站的匿名訪問賬戶是什麼,然後將這個賬戶設置到網站的根目錄文件夾,並設置相應的訪問許可權
7
網站的匿名訪問賬戶是:IUSR_CBLH-DDEF00B671,為文件夾設置用戶訪問許可權
8
許可權配置好後,在目錄中新建一個index.html文件,隨意輸入一些文字或者html代碼即可。
在網站名稱上右鍵,點擊屬性,進入「屬性」後點擊「文檔」選項卡,在此添加一個index.html和index.php(index.php添加好是為了待會不必再做配置),然後點擊「確定」或者「應用」保存配置。
然後在瀏覽器中的地址欄中輸入「http://localhost/」或者「http://127.0.0.1/」,即可看到剛才我們建立的index.html中的內容。
9
安裝fastcgi
IIS調試好後,就可以安裝fastcgi了,首先需要下載IISfastcgi,下載地址是(http://www.iis.net/download/FastCGI),安裝fastcgi非常簡單,只需要同意協議後連續點擊下一步即可,沒有任何選項。
10
安裝php
首先下載php在windows的安裝包,下載地址http://windows.php.net/downloads/releases/archives/,這里選用php-5.3.4-nts-Win32-VC9-x86.msi做例子。下載好php-5.3.4-nts-Win32-VC9-x86.msi後,雙擊文件安裝,接受使用協議後,為php填寫安裝目錄,這個目錄是可以更換的,指向需要放置它的位置即可。之後需要選擇web伺服器的安裝,這里選擇我們先前安裝的IIS fastcgi
11
下一步需要配置安裝選項,這里我們除了默認的選項之外增加了pear install(如圖所示)
12
再進入下一步,就可以確認安裝了。
完成安裝後,還需要測試一下php是否可用。
首先打開IIS管理器,然後在先前測試IIS的網站上右鍵,進入「屬性」,點擊主目錄選項卡,然後將「執行許可權」配置為「純腳本」
13
然後點擊旁邊的「配置」,查看是否有.php擴展名,如果沒有的話,需要添加一個新項,將可執行文件指向「C:WINDOWSsystem32inetsrvfcgiext.dll」,擴展名為「.php」(注意有個點),動作限制為「GET,HEAD,POST,TRACE」,點擊確定即可
步驟閱讀
14
做好了這些,就可以寫個小腳本來測試了,在網站的目錄中新建一個test.php文件,打開後輸入,保存後退出。在瀏覽器地址欄中輸入http://localhost/test.php,即可看到php信息了。
4. 安裝isapi_urlwriter ISAPI擴展組件
isapi_urlwriter ISAPI擴展組件主要用來做地址重寫,重寫後的虛擬靜態地址對搜索引擎更友好。先將ISAPI_Rewrite3安裝包解壓到指定的文件目錄中,然後進入網站屬性窗口,選擇窗口中的ISAPI篩選器選項卡,點擊添加按鈕,在彈出的窗口中選擇ISAPI_Rewrite3解壓目錄中的ISAPI_Rewrite.dll文件為可執行文件並確定。
END
iis7.5 PHP環境配置
1
windows server 2008是基於NT6 平台的新型操作系統,其對硬體性能的發揮比起其它NT平台來說有了質的飛躍,已經開始普及到了廣大用戶中,而且操作較2003來說更為直觀和簡單,受到越來越多的好評。在這里我們要介紹windows server 2008中的php環境搭建。
安裝IIS
windows server 2008的IIS版本為7.0,包括fastcgi,安裝十分方便。
打開「開始」菜單→「伺服器管理」,出現伺服器管理界面
2
在圖中黃色框中填入伺服器ip,點擊打開,之後提示輸入用戶名和密碼,驗證成功後完成登錄伺服器。
3
點擊「下一步」之後,需要選擇功能,這里需要比默認選項多增加一個「cgi」
4
點擊「下一步」,將會需要確認一下安裝的內容,此時點擊安裝,即可將IIS安裝在操作系統中。
安裝好IIS之後,需要進行一個測試,在瀏覽器地址欄中輸入「http://localhost/」,如果出現IIS7的歡迎頁則說明正常。接下來需要配置一個新網站,首先打開IIS管理器(「開始」→「所有程序」→「管理工具」→「internet 信息服務(IIS)管理器」)。
然後刪除默認網站,在主菜單中,展開網站菜單,然後再網站名稱上右鍵,點擊刪除即可
5
再新建一個網站,在「網站」上右擊,點擊添加網站,會出現信息網站添加的表單,首先輸入網站名稱,例如「stourwebcms」,路徑選擇為網站存放的路徑,單IP的伺服器可以不必選擇IP,主機頭填寫為localhost,然後點擊確定。
6
添加好網站後,需要為網站設置用戶訪問許可權。在iis管理器左邊的網站列表中選中網站,在右邊的操作列表中點擊「基本設置」,在彈出窗口中點擊「連接為」,彈出的窗口中會出現網站的默認用戶賬戶,也可以更改為其它的用戶。確定網站的用戶賬戶後,將此賬戶的訪問許可權設置到網站的根目錄文件夾上
打開網站目錄,新建一個index.html,然後用記事本打開,輸入「hello stourweb」後保存,並訪問本地地址「http://127.0.0.1」進行測試,網頁上顯示出了「hello stourweb」,說明配置成功。
7
安裝php
在前面已經提過,IIS7中不必單獨安裝fastcgi,所以,我們只需要下載php安裝包進行安裝即可,下載地址:http://windows.php.net/downloads/releases/archives/ 下載好後,打開安裝程序,經過引導,配置好路徑,來到選擇「web server setup」的地方,在這里我們選擇「IIS fastcgi」
8
然後點擊「next」按鈕,到了選擇安裝選項的步驟,一般安裝默認的就可以了,如果要添加的話需要點擊一下前面的磁碟小圖標,然後選擇安裝,第一項是只安裝選中的項目,第二項是安裝所有該項目的子項目。配置好後進入下一步
9
配置好後,點擊「next」然後點擊「install」即可安裝php。
當php安裝完成後會自動在iis的處理程序映射中增加一條fastcgi到php的映射關系
安裝完成後,我們還是需要測試一下,打開剛才新建的網站目錄,新建一個test.php文件,用記事本打開,輸入
<?php
echo phpinfo();
?>
保存退出,再從瀏覽器中訪問http://127.0.0.1/test.php
顯示出php信息,說明php環境安裝成功。
10
安裝isapi_urlwriter ISAPI擴展組件
isapi_urlwriter ISAPI擴展組件主要用來做地址重寫,重寫後的虛擬靜態地址對搜索引擎更友好。先將ISAPI_Rewrite3安裝包解壓到指定的文件目錄中,然後雙擊iis的ISAPI篩選器配置項,進入網站ISAPI組件配置窗口,點擊添加按鈕,在彈出的窗口中選擇ISAPI_Rewrite3解壓目錄中的ISAPI_Rewrite.dll文件為可執行文件並確定。
11
ISAPI_Rewrite3組件是一個32位的程序,因此在64位操作系統應用池進程下默認不工作,因此需要在網站所屬應用進程池的高級設置中將進程池設置為32位兼容
END
Mysql資料庫安裝
1
下載mysql(http://www.mysql.com),安裝過程比較簡單,首先配置路徑,然後選擇安裝選項,一般採用默認安裝的方式,之後會進入一個配置向導界面
步驟閱讀
2
連續下一步,需要選擇配置方式,這里選擇配置方式,我們需要手動配置,所以選擇detailed configuration,然後點擊「下一步」
3
這里需要選擇伺服器類型,如果是開發用的測試環境,選擇developer Machine ,如果是伺服器用,則選擇Server Machine,當然單一用途的伺服器還可以選擇dedicated mysql server machine。選擇好後進入下一步
4
接下來是選擇伺服器使用,第一個是多功能資料庫,可以使用 InnoDB engine和MyISAM engine。第二個選項,它的性能偏向於InnoDB,但是同時支持MyISAM engine。第三個選項是偏向於分析功能的MyISAM。至於這三個選項有什麼區別,其實只要知道,MyISAM類型的資料庫引擎可以為php提供強大的檢索和分析功能。InnoDB的性能則偏重於存儲。
所以如果只做web伺服器的話選擇第三項即可,如果是有其它用途,建議選擇第一項。
5
下一步需要選擇伺服器上的連接數量,這里如果是測試用的小伺服器可以選擇最少的第一項,如果是流量巨大的網站,需要選擇第二項,或者第三項自行填寫。
之後是網路連接的選項,「enable TCP/IP Networking」可以按照需求來選擇,如果不做集群的話可以把勾去掉,如果是在內網環境,不為mysql做路由規則是完全可以打開此項的。可以直接添加一個防火牆例外給3306埠。埠號可以選擇,但是推薦默認的3306。還有一項是是否開啟嚴謹模式,此項推薦勾選
6
點擊下一步,選擇默認字元集,這里選擇自定義的utf8字元集
7
進入下一步,需要設定windows選項,這里推薦安裝windows服務,並且自動啟動。第二個選項,如果有必要,可以選擇添加一個環境變數,可以方便命令行指向。
配置好後,進入下一步,需要為root用戶設定密碼,請設置一個比較復雜的密碼以增加安全性,另外請牢記自己設置的密碼,否則遺忘了後需要重置密碼十分麻煩。還有一個是否允許root用戶從遠程登錄的選項,此處最好不勾選,否則安全性將會降低。
到此配置就全部結束了,點擊下一步,會出現安裝總結,點擊「execute」執行安裝即可。
安裝成功後,我們依然需要對此進行測試。
在網站中新建一個測試php文件test.php,我們使用pdo鏈接mysql作為測試。
輸入
<?php
$db=new PDO("mysql:host=localhost;dbname=test","root","剛才設置的密碼");
if ($db)
{
echo "ok";
}
?>
訪問http://localhost/test.php,如果屏幕上列印出了ok,表示mysql安裝成功。
END
安全配置建議
1
安全軟體
一款好的安全軟體能有效防禦來自計算機病毒、惡意軟體和木馬的威脅,但能用於伺服器的安全軟體並不多,其中大部分都是收費的,平常個人所用的金山毒霸和360等不能安裝到windows server系列的伺服器操作系統上,但他們都有相應的伺服器版本並且提供免費升級,在他們的官網上面都能夠找到。
2
防火牆
合理的配置好防火牆能有效的阻止各種惡意入侵,因為各種網路入侵都是通過相應的網路埠完成的。網路埠是伺服器上的各種網路服務開啟的,他們對外提供各種網路服務,如http、ftp、smtp等。自己的伺服器上需要提供哪些網路服務就只開啟這些服務的相應埠,如伺服器上提供網站服務,就需要開啟http的80埠,如需要提供ftp服務就要開啟21埠;有些網路服務不需要對外提供服務就不應該開啟,如sql server資料庫不需要對外提供服務,就應該在防火牆中關閉掉1433埠。
Windows sever 2003和2008都自帶防火牆,其實能簡單有效的利用這些自帶的防火牆就能有效的完成埠的開閉管理。
l Windows server 2003伺服器防火牆配置
1) 滑鼠右鍵單擊「網上鄰居」,選擇「屬性」。
2) 然後滑鼠右鍵單擊「本地連接」,選擇「屬性」。如圖選擇「高級」選項,選中「Internet連接防火牆」,確定後防火牆即起了作用。
點擊「設置(G)...」按鈕可進行高級設置。其中列出了可用的網路服務,選中後允許其打開網路埠並通信,反之則關閉其網路通信;單擊「添加」則可以增加網路服務或打開指定的網路埠
3
Windows server 2008伺服器防火牆配置
1) 在控制面板中打開網路和共享中心
2) 點擊「windows防火牆」彈出防火牆配置窗口,在此窗口中要確認防火牆服務已經開啟
3) 單擊「允許程序或功能通過Windows防火牆」彈出網路服務埠配置窗口,在此窗口中可以選擇允許打開埠並通信的網路服務,單擊「允許運行另一程序」來自定義開啟某一網路服務或埠
4
用戶管理
系統中用戶的數量能越少越好,並且每個用戶都被用於特定的功能,如可以新建一個專門用於對網站進行匿名授權的賬戶(如條件允許,可以為每個網站新建一個獨立的賬戶進行分別授權,這些能夠隔離開各網站的授權,提高各網站的安全性,不至於一個網站被入侵後能夠有許可權訪問到其它網站的文件目錄)。另外最重要的一點是要為每個賬戶設置一個獨立且復雜的密碼,防止賬戶密碼被猜解和窮舉。
5
文件系統許可權管理
l C盤只給administrators 和system許可權,其他的許可權不給,其他的盤也可以這樣設置,這里給的system許可權也不一定需要給,只是由於某些第三方應用程序是以服務形式啟動的,需要加上這個用戶,否則造成啟動不了。
l Windows目錄要加上給users的默認許可權,否則ASP和ASPX等應用程序就無法運行。其實沒有必要單獨設置Instsrv和temp等目錄許可權。
l 另外在c:/Documents and Settings/這里相當重要,後面的目錄里的許可權根本不會繼承從前的設置,如果僅僅只是設置了C盤給administrators許可權,而在All Users/Application Data目錄下會 出現everyone用戶有完全控制許可權,這樣入侵這可以跳轉到這個目錄,寫入腳本或只文件,再結合其他漏洞來提升許可權;
譬如利用serv-u的本地溢出提升許可權,或系統遺漏有補丁,資料庫的弱點,甚至社會工程學等等N多方法,在用做web/ftp伺服器的系統里,建議是將這些目錄都設置的鎖死。其他每個盤的目錄都按照這樣設置,每個盤都只給adinistrators許可權。
另外,還將:
net.exe
cmd.exe
tftp.exe
netstat.exe
regedit.exe
at.exe
attrib.exe
cacls.exe
format.exe
這些文件都設置只允許administrators訪問。
l 網站的目錄最好獨立到一個磁碟中,新建一個為網站匿名訪問而獨立授權的賬戶,讓此賬戶可以訪問和編輯此目錄,移除其它不必要的賬戶對此目錄的訪問許可權,能有效防止網站被入侵後從而涉及到整個系統被控制
日常維護建議
1
定期運行安全軟體進行快速掃描
定期運行一下安全軟體,可以看到安全軟體的引擎或病毒庫是否已經更新到了最新版本,如果沒有可以即時查找原因,看是否是安全軟體未運行、升級埠被禁用或其它原因,雖然安全軟體可以在後台即時掃描各種文件操作,以防止病毒入侵,但有些惡意軟體、流氓軟體或插件則不是實時防護的,雖然這些軟體不會造成伺服器宕機,但也會影響伺服器性能。
2
定期檢查防火牆埠配置
隨著伺服器上的網路服務越來越多,需要打開的網路埠也越來越多,但有些埠是不需要開放的,例如你安裝了一個資料庫軟體(mysql、oracle等),這些資料庫服務很可能只需要在你伺服器的內部訪問,就完全沒有必要讓其通過防火牆,這樣能夠提高伺服器的安全,伺服器對外提供的埠越少越好;
雖然在安裝網路服務的過程中,防火牆會提示你有網路埠正在打開,是否允許通過防火牆,但有些管理員沒有細心看提示,直接就同意了,造成了大量沒有必要打開的網路埠被打開了,特別是一些木馬或惡意軟體會混水摸魚,偽裝提示信息來誘騙管理員打開網路埠,造成大量的安全隱患。進入防火牆配置界面,選擇相應的埠或網路服務,點擊「詳細信息」則可以看到此項應用的詳細信息,根據這些信息來判斷其是否應該開啟這個埠。
3
任務管理器中觀察有無可疑進程,了解系統資源使用情況
任務管理器可以簡單並快速的了解服務系統資源的使用情況,並即時查看系統運行的進程和他們佔用的系統資源,根據伺服器上已開啟的各種應用的服務來判斷哪些進程是非法的,哪些進程佔用的系統資源過多。了解到這些信息後就可以即時的對伺服器進行調整,特別是佔用資源過多的進程進行分析,看是否有什麼異常並即時進行調整。
l 觀察系統進程,並自定義進程屬性
4
查看網路使用情況
查看系統資源使用情況
檢查IIS,了解網站安裝情況
隨時了解伺服器上網站的安裝狀況,並做以下檢查:
1、看各個網站定義的主機頭是否異常
2、 綁定的域名是否完整
3、 主目錄設置是正確
4、用戶許可權設置是否合理
5、 查看IIS的應用程序池設置是否合理,每個池下面託管的網站是否過多,是否需要設置新的應用池,是否有多餘的應用池可以刪除。
查看系統日誌,仔細檢查錯誤、警告日誌發生的原因,並急時修復相應的問題。
檢查系統用戶,查看有無多餘,可疑用戶賬戶,查看每個賬戶所屬的用戶組,特別是administrators組下面的用戶。伺服器被入侵時會出現一些欺騙性的賬戶並被加入到administrators組中,特別留心新建的多餘賬戶,弄清這些賬戶的用途,如果發現是入侵者建立的賬戶,要即時查找賬戶是被創建的原因,並修復相應的漏洞。
檢查文件系統,確保磁碟被合理分區,各個分區應該有各自的功能,如系統、資料庫、網站、備份等。各個分區的用戶授權是不相同的,如系統、備份等不需要網站的專門授權賬戶訪問,資料庫分區需要對資料庫賬戶進行單獨的授權等。既然規劃好了文件分區和功能,並進行了相應的授權,就要防止文件被亂放,以免造成安全隱患。
還要經常檢查各種新建的文件夾和文件(特別是來歷不明,名稱畸形的隱藏文件夾和文件)這些都有可能是入侵者留下的入侵痕跡。
清除垃圾文件,隨時系統運行時間的增加,會產生很多的臨時文件和日誌文件,佔用寶貴的磁碟資源,如果磁碟的可用空間過小(特別是系統盤)還會影響伺服器性能。
1、臨時文件(安裝程序、系統升級、應用程序等產生的)產生的,主要在系統盤,可以看哪些文件夾的體積異常大,可分析其內部文件,確認是臨時文件後將其刪除
2、 日誌文件,主要是IIS產生的,這些日誌文件對於查看網站運行狀態、訪問歷史很有用,但日誌有時效性,如果超過其三個月就沒有什麼用處了,但它會佔用大量的磁碟空間,所以需要定期將其刪除。
定期檢查磁碟狀態並進行碎片整理,隨著系統運行時間的增長,特別是大量的IO操作後,磁碟上會產生大量的文件碎片,這些碎片過多則會嚴重影響伺服器性能,所以定期(建議一個月)進行磁碟碎片檢查,如果系統提醒需要進行碎片整理,則進行整理。
及時升級操作系統補丁,操作系統有各種大量的補丁,特別是一些重要的安全補丁需要即時升級,這樣會有效防止黑客和病毒入侵。
及時備份重要的文件、應用、資料庫。備份分為本地備份和異地備份,有條件的可以進行異地備份,備份是為了以防萬一,當數據丟失或應用損壞時,備份就是救命稻草,因此合理的備份計劃是非常有必要的。
不要隨意下載安裝來歷不明的軟體,特別是需要連接網路或需要打開埠的。現在網上許多的程序都內置有木馬或惡意程序,所以不要下載和安裝網上的不明軟體,特別是一些小網站的。
END
E. 怎樣在自己電腦上建立一個TCP伺服器
首先需要在電腦上搭建伺服器,關於網上好多按步驟安裝apache,sql,phpmyadmin的方法復雜而且沒有必要,這里推薦wamp這樣的一個集成軟體,安裝非常簡單,一路點擊next,apache+sql+phpmyadmin的環境一鍵搭好。
在網路中搜索Wamp下載,直接下載就行。下載完wamp進行安裝,一路點擊next,裝在c:\wamp下,最後install完成.
在瀏覽器輸入localhost,出現以下頁面說明安裝成功了。現在伺服器和php環境算是搭好了。此時在桌面右下角任務欄中會有wamp的圖標,點擊會有下圖顯示,www是網站頁面根目錄,localhost是網站默認主頁,點擊phpmyadmin可以進入資料庫管理界面.
現在網站只能在PC上顯示,如何能把網站放到互聯網上讓朋友也欣賞一下。這時就需要一款叫花生殼的軟體,提供動態的域名映射.
下載網址如下:http://hsk.oray.com/download/#type=windows|lan
下載完軟體按步驟安裝即可,這時候需要注冊一下花生殼會員,注冊時按網頁提示的步驟即可,用身份證注冊可以獲得一個免費域名。用注冊的賬號密碼登陸軟體。會出現以下界面。這里的網址是申請的免費域名。
在域名上右鍵,選擇新花生殼管理,填寫應用名稱,這個可以隨便填,內網主機為本機內網的ip地址,這時需要查看以下,win+R在cmd中輸入,ipconfig/all,
可以看到ipv4地址,填寫即可。埠為80埠。
同時,現在需要設置一下路由器。在瀏覽器輸入192.168.1.1。輸入路由器用戶名和密碼,一般都為admin。進入路由器界面。需要設置三個地方,首先是動態DNS,選擇服務商為花生殼,填寫用戶名密碼,驗證保存。然後是轉發規則中的虛擬伺服器,添加新條目,埠80,ip地址為內網ip。最後是,DMZ主機,設置開啟,ip為內網本機ip。
現在設置基本完成,這時就可以測試了。注意,要把防火牆關閉,否則外網還是訪問不了本機的網站。在控制面板中把防火牆關閉。現在可以寫一段html代碼,命名為index.html(注意此時先把index.php放到別的文件夾)放入wamp\www目錄中,來測試訪問。
最後,在瀏覽器輸入花生殼域名,看看是不是就能訪問了。同時也可以把自域名發送給朋友,讓他們幫測試一下。
F. php中的tcp/ip連接
8192表示每次最多讀取8192個位元組的數據。
代碼的思路是沒問題的,細節的話沒有測試,不過你將服務端和客戶端都放在一個頁面里,不太合適。
至少你應該編寫兩個頁面分別來跑 socket_create 和 socket_connect
G. php中進行tcp連接,發指令
你需要先在命令行裡面 telnet 192.168.0.104 23 看看有沒有反應
H. PHP的tcp/ip怎麼與C語言的tcp/ip相互通信
包括對各種流數據的讀和寫:內存流、網路流或文件流。當然,通過NSStream也可以與伺服器進行通信。 無論是通過NSStream向伺服器寫數據,還是從NStream對象中讀取伺服器數據,都是一件簡單的事情。 在Mac OS X中,使用NSHost和NSStream與伺服器進行連接的代碼如下: NSInputStream *iStream; NSOutputStream *oStream; uint portNo = 500; NSURL *website = [NSURLURL
I. php-cgi.exe 通過TCP協議鏈接外部伺服器 求啥意思
php-cgi是個守護進程,和web伺服器通信的方式,例如:和nginx通信
如果是同一主機下,可以使用本地socket, 共享內存,消息隊列,管道等通信