新聞中心
在當(dāng)今科技日新月異的時(shí)代,服務(wù)器無疑是現(xiàn)代IT領(lǐng)域中非常重要的存在。服務(wù)器能夠充當(dāng)“數(shù)據(jù)中心”的作用,也是互聯(lián)網(wǎng)連接與數(shù)據(jù)存儲(chǔ)的基礎(chǔ)。而對(duì)于服務(wù)器而言,Linux操作系統(tǒng)一直是IT領(lǐng)域最廣泛使用的服務(wù)器操作系統(tǒng)之一,因?yàn)長(zhǎng)inux具有開放源代碼、穩(wěn)定性和安全性高等優(yōu)點(diǎn),這是Microsoft Windows很難望其項(xiàng)背的。因此,理解Linux服務(wù)器搭建的原理與技術(shù)便顯得尤為重要。

創(chuàng)新互聯(lián)長(zhǎng)期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為景德鎮(zhèn)企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),景德鎮(zhèn)網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
一、服務(wù)器與Linux操作系統(tǒng)
服務(wù)器可以理解為一種大型計(jì)算機(jī),其使用場(chǎng)景基本上都是在“后臺(tái)操作”,處理用戶請(qǐng)求并向前端頁面反饋數(shù)據(jù)。
現(xiàn)在的服務(wù)器一般會(huì)使用Linux操作系統(tǒng),Linux 憑借其開源、穩(wěn)定性良好、易定制等特點(diǎn)成為服務(wù)器必備的操作系統(tǒng)之一。其內(nèi)核功能非常強(qiáng)大,同時(shí)也有不少組件可以幫助我們完成一些高級(jí)網(wǎng)絡(luò)功能的搭建,如負(fù)載均衡、反向代理等等。
二、搭建Linux服務(wù)器所需的準(zhǔn)備工作
在搭建Linux服務(wù)器時(shí),需要一些準(zhǔn)備與基礎(chǔ)條件。本文以CentOS作為例子,簡(jiǎn)單介紹一個(gè)基礎(chǔ)安裝的步驟:
1. 選擇適合的版本:服務(wù)器版和桌面版是不同的,應(yīng)該選擇特別為服務(wù)器優(yōu)化的版本。
2. 下載安裝ISO鏡像:需要從官網(wǎng)上下載CentOS的安裝鏡像,然后使用閃存盤,虛擬機(jī)等載入鏡像進(jìn)行安裝。
3. 完成硬件配置:硬盤要分區(qū),內(nèi)存要分配,CPU要適當(dāng)加強(qiáng)等。
三、Linux服務(wù)器搭建的具體步驟
在完成以上的準(zhǔn)備工作后,下面我們開始詳細(xì)介紹搭建Linux服務(wù)器的具體步驟:
1. 安裝 Linux 系統(tǒng):我們可以使用USB盤、DVD光盤,或者是遠(yuǎn)程安裝等方式安裝到硬盤中。
2. 安裝網(wǎng)絡(luò)軟件:安裝網(wǎng)絡(luò)軟件包含了網(wǎng)絡(luò)協(xié)議、驅(qū)動(dòng)程序、應(yīng)用軟件等。例如:SSH、FTP等等。
3. 安裝常用工具:常用工具是我們?nèi)粘2僮鱈inux系統(tǒng)時(shí)必備的,例如:vi、Vim、wget、curl等。
4. 打開防火墻、關(guān)閉不安全的服務(wù):Linux系統(tǒng)提供了企業(yè)級(jí)的安全方案,例如:防火墻、SELinux等等。
5. 配置Linux,使其能夠進(jìn)行Web開發(fā):可安裝一些軟件,例如:Apache服務(wù)器。
6. 構(gòu)建虛擬主機(jī):虛擬主機(jī)可以讓一臺(tái)物理機(jī)器同時(shí)運(yùn)行多個(gè)Web站點(diǎn)。
以上步驟都屬于Linux服務(wù)器搭建初始階段的基礎(chǔ)配置。在它們的基礎(chǔ)上,我們還可以繼續(xù)優(yōu)化操作,使服務(wù)器的性能更好。
四、Linux服務(wù)器的性能優(yōu)化
Linux服務(wù)器的性能優(yōu)化可以從以下幾個(gè)方面入手:
1. 充分利用CPU:盡可能使用CPU多個(gè)核心,可以在Apache、MySQL等軟件中使用Linux的內(nèi)核調(diào)度功能,提高處理速度。
2. 使用文件系統(tǒng)的優(yōu)化選項(xiàng):可以使用其他文件系統(tǒng)而非默認(rèn)的文件系統(tǒng)(如: ext2/3/4),同時(shí)使用一些優(yōu)化參數(shù),如存儲(chǔ)小文件的空間使用。
3. MySQL調(diào)優(yōu):確保MySQL正常運(yùn)轉(zhuǎn),使用緩存機(jī)制,避免毫無意義地頻繁讀寫數(shù)據(jù)。
4. Apache的調(diào)優(yōu):配置Apache的運(yùn)行參數(shù),降低訪問的超時(shí)時(shí)間,選用適當(dāng)?shù)腗IME類型,使Apache進(jìn)程的并發(fā)訪問量更大化。
五、
Linux服務(wù)器是IT領(lǐng)域不可或缺的核心部分,其特點(diǎn)與功能不斷優(yōu)化。本文概述了Linux服務(wù)器搭建的整個(gè)流程,以及優(yōu)化操作的相關(guān)技巧,希望對(duì)讀者們有所幫助。沒有哪種服務(wù)器操作系統(tǒng)是完美的,但Linux絕對(duì)是一款像樣的“好用系統(tǒng)”。
相關(guān)問題拓展閱讀:
- linux驅(qū)動(dòng)程序結(jié)構(gòu)框架及工作原理分別是什么?
- 怎么搭建一個(gè)可以被外網(wǎng)訪問的linux web服務(wù)器
linux驅(qū)動(dòng)程序結(jié)構(gòu)框架及工作原理分別是什么?
一、Linux device driver 的概念
系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核和應(yīng)用程序之間的接口,設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口。設(shè)備驅(qū)動(dòng)程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來,硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以象操作普通文件一樣對(duì)硬件設(shè)備進(jìn)行操作。設(shè)備驅(qū)動(dòng)程序是內(nèi)核的一部分,它完成以下的功能:
1、對(duì)設(shè)備初始化和釋放;
2、把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù);
3、讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請(qǐng)求棗圓的數(shù)據(jù);
4、檢測(cè)和處理設(shè)備出現(xiàn)的錯(cuò)誤。
在Linux操作系統(tǒng)下有三類主要的設(shè)備文件類型,一是字符設(shè)備,二是塊設(shè)備,三是網(wǎng)絡(luò)設(shè)備。字符設(shè)備和塊設(shè)備的主要區(qū)別是:在對(duì)字符設(shè)備發(fā)出讀/寫請(qǐng)求時(shí),實(shí)際的硬件I/O一般就緊接著發(fā)生了,塊設(shè)備則不然,它利用一塊系統(tǒng)內(nèi)存作緩沖區(qū),當(dāng)用戶進(jìn)程對(duì)設(shè)備請(qǐng)求能滿足用戶的要求,就返回請(qǐng)求的數(shù)據(jù),如果不能,就調(diào)用請(qǐng)求函數(shù)來進(jìn)行實(shí)際的I/O操作。塊設(shè)備是主要針對(duì)磁盤等慢速設(shè)備設(shè)計(jì)的,以免耗費(fèi)過多的CPU時(shí)間來等待。
已經(jīng)提到,用戶進(jìn)程是通過設(shè)備文件來與實(shí)際的硬件打交道。每個(gè)設(shè)備文件都都有其文件屬性(c/b),表示是字符設(shè)備還是塊設(shè)備?另外每個(gè)陸簡(jiǎn)文件都有兩個(gè)設(shè)備號(hào),之一個(gè)是主設(shè)備號(hào),標(biāo)識(shí)驅(qū)動(dòng)程序,第二個(gè)是從設(shè)備號(hào),標(biāo)識(shí)使用同一個(gè)設(shè)備驅(qū)動(dòng)程序的不同的硬件設(shè)備,比如有兩個(gè)軟盤,就可以用從設(shè)備號(hào)來區(qū)分他們。設(shè)備文件的的主設(shè)備號(hào)必須與設(shè)備驅(qū)動(dòng)程序在登記時(shí)申請(qǐng)的主設(shè)備號(hào)一致,否則用戶進(jìn)程將無法訪問到驅(qū)動(dòng)程序。
最后必須提到的是,在用戶進(jìn)程調(diào)用驅(qū)動(dòng)程序時(shí),系早巖褲統(tǒng)進(jìn)入核心態(tài),這時(shí)不再是搶先式調(diào)度。也就是說,系統(tǒng)必須在你的驅(qū)動(dòng)程序的子函數(shù)返回后才能進(jìn)行其他的工作。如果你的驅(qū)動(dòng)程序陷入死循環(huán),不幸的是你只有重新啟動(dòng)機(jī)器了,然后就是漫長(zhǎng)的fsck。
二、實(shí)例剖析
我們來寫一個(gè)最簡(jiǎn)單的字符設(shè)備驅(qū)動(dòng)程序。雖然它什么也不做,但是通過它可以了解Linux的設(shè)備驅(qū)動(dòng)程序的工作原理。把下面的C代碼輸入機(jī)器,你就會(huì)獲得一個(gè)真正的設(shè)備驅(qū)動(dòng)程序。
由于用戶進(jìn)程是通過設(shè)備文件同硬件打交道,對(duì)設(shè)備文件的操作方式不外乎就是一些系統(tǒng)調(diào)用,如 open,read,write,close…, 注意,不是fopen, fread,但是如何把系統(tǒng)調(diào)用和驅(qū)動(dòng)程序關(guān)聯(lián)起來呢?這需要了解一個(gè)非常關(guān)鍵的數(shù)據(jù)結(jié)構(gòu):
STruct file_operatiONs {
int (*seek) (struct inode * ,struct file *, off_t ,int);
int (*read) (struct inode * ,struct file *, char ,int);
int (*write) (struct inode * ,struct file *, off_t ,int);
int (*readdir) (struct inode * ,struct file *, struct dirent * ,int);
int (*select) (struct inode * ,struct file *, int ,select_table *);
int (*ioctl) (struct inode * ,struct file *, unsined int ,unsigned long);
int (*mmap) (struct inode * ,struct file *, struct vm_area_struct *);
int (*open) (struct inode * ,struct file *);
int (*release) (struct inode * ,struct file *);
int (*fsync) (struct inode * ,struct file *);
int (*fasync) (struct inode * ,struct file *,int);
int (*check_media_change) (struct inode * ,struct file *);
int (*revalidate) (dev_t dev);
}
這個(gè)結(jié)構(gòu)的每一個(gè)成員的名字都對(duì)應(yīng)著一個(gè)系統(tǒng)調(diào)用。用戶進(jìn)程利用系統(tǒng)調(diào)用在對(duì)設(shè)備文件進(jìn)行諸如read/write操作時(shí),系統(tǒng)調(diào)用通過設(shè)備文件的主設(shè)備號(hào)找到相應(yīng)的設(shè)備驅(qū)動(dòng)程序,然后讀取這個(gè)數(shù)據(jù)結(jié)構(gòu)相應(yīng)的函數(shù)指針,接著把控制權(quán)交給該函數(shù)。這是linux的設(shè)備驅(qū)動(dòng)程序工作的基本原理。既然是這樣,則編寫設(shè)備驅(qū)動(dòng)程序的主要工作就是編寫子函數(shù),并填充file_operations的各個(gè)域。
下面就開始寫子程序。
#include 基本的類型定義
#include 文件系統(tǒng)使用相關(guān)的頭文件
#include
#include
#include
unsigned int test_major = 0;
static int read_test(struct inode *inode,struct file *file,char *buf,int count)
{
int left; 用戶空間和內(nèi)核空間
if (verify_area(VERIFY_WRITE,buf,count) == -EFAULT )
return -EFAULT;
for(left = count ; left > 0 ; left–)
{
__put_user(1,buf,1);
buf++;
}
return count;
}
這個(gè)函數(shù)是為read調(diào)用準(zhǔn)備的。當(dāng)調(diào)用read時(shí),read_test()被調(diào)用,它把用戶的緩沖區(qū)全部寫1。buf 是read調(diào)用的一個(gè)參數(shù)。它是用戶進(jìn)程空間的一個(gè)地址。但是在read_test被調(diào)用時(shí),系統(tǒng)進(jìn)入核心態(tài)。所以不能使用buf這個(gè)地址,必須用__put_user(),這是kernel提供的一個(gè)函數(shù),用于向用戶傳送數(shù)據(jù)。另外還有很多類似功能的函數(shù)。請(qǐng)參考,在向用戶空間拷貝數(shù)據(jù)之前,必須驗(yàn)證buf是否可用。這就用到函數(shù)verify_area。為了驗(yàn)證BUF是否可以用。
static int write_test(struct inode *inode,struct file *file,const char *buf,int count)
{
return count;
}
static int open_test(struct inode *inode,struct file *file )
{
MOD_INC_USE_COUNT; 模塊計(jì)數(shù)加以,表示當(dāng)前內(nèi)核有個(gè)設(shè)備加載內(nèi)核當(dāng)中去
return 0;
}
static void release_test(struct inode *inode,struct file *file )
{
MOD_DEC_USE_COUNT;
}
這幾個(gè)函數(shù)都是空操作。實(shí)際調(diào)用發(fā)生時(shí)什么也不做,他們僅僅為下面的結(jié)構(gòu)提供函數(shù)指針。
struct file_operations test_fops = {?
read_test,
write_test,
open_test,
release_test,
};
設(shè)備驅(qū)動(dòng)程序的主體可以說是寫好了?,F(xiàn)在要把驅(qū)動(dòng)程序嵌入內(nèi)核。驅(qū)動(dòng)程序可以按照兩種方式編譯。一種是編譯進(jìn)kernel,另一種是編譯成模塊(modules),如果編譯進(jìn)內(nèi)核的話,會(huì)增加內(nèi)核的大小,還要改動(dòng)內(nèi)核的源文件,而且不能動(dòng)態(tài)的卸載,不利于調(diào)試,所以推薦使用模塊方式。
int init_module(void)
{
int result;
result = register_chrdev(0, “test”, &test_fops); 對(duì)設(shè)備操作的整個(gè)接口
if (result
#include
#include
#include
main()
{
int testdev;
int i;
char buf;
testdev = open(“/dev/test”,O_RDWR);
if ( testdev == -1 )
{
printf(“Cann’t open file \n”);
exit(0);
}
read(testdev,buf,10);
for (i = 0; i
printf(“%d\n”,buf);
close(testdev);
}
編譯運(yùn)行,看看是不是打印出全1
怎么搭建一個(gè)可以被外網(wǎng)訪問的linux web服務(wù)器
服務(wù)器的話自帶外網(wǎng)IP,自己電腦的話沒有固定IP
首先需要將你的web服務(wù)器搭建好,然后需要做NAT,我這里有我的一和橋頌個(gè)做NAT的筆記,分享給你
NAT
拓?fù)浣Y(jié)構(gòu)圖:
要求:
1.內(nèi)網(wǎng)能夠ping通外網(wǎng)地址,并且成功訪問外網(wǎng)中的消歲web服務(wù);
2.外網(wǎng)能夠訪問內(nèi)網(wǎng)的ftp服務(wù)。
步驟:
一:內(nèi)網(wǎng)服務(wù)器配置
1.在內(nèi)網(wǎng)中設(shè)置好ip地址,網(wǎng)關(guān)和DNS均為NAT服務(wù)器內(nèi)網(wǎng)口地址,并搭建好ftp服務(wù),此處略
二:NAT服務(wù)器配置
1.在NAT只能中添加一塊網(wǎng)卡作為 外網(wǎng)卡,并設(shè)置好ip地址
2.開啟NAT服務(wù)器的路由功能
# vi /etc/sysctl.conf
net.ipv4.ip_forward = //將0改為1
# sysctl -p //永久生效
3.配置防火墻(必須按照以下循序配置,否則配置完成后不能拼通外網(wǎng),需配置第二次)
#iptables-X
#iptables-t nat -X
#iptables –flush
#iptables -t nat –flush
//以上為重置鏈表的命令
#iptables-t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT –to 202.10.10.12
//這條命令是將內(nèi)網(wǎng)192.168.1.0/24的源地址映射為NAT服務(wù)器的外網(wǎng)口地址,eth1為外網(wǎng)卡
# iptables -t nat -A PREROUTING -p tcp–dport 21 -j DNAT –to 192.168.1.11
# iptables -t nat -A PREROUTING -p tcp–dport 20 -j DNAT –to 192.168.1.11
//這兩條命令是發(fā)布內(nèi)務(wù)的ftp服務(wù)
或者:
# iptables -t nat -A PREROUTING -p tcp -d 202.10.10.12–dport 21 -j DNAT –to 192.168.1.11
# iptables -t nat -A PREROUTING -p tcp -d 202.10.10.12–dport 20 -j DNAT –to 192.168.1.11
#/etc/init.d/iptablessave
#/etc/init.d/iptablesrestart
驗(yàn)證:
內(nèi)網(wǎng)訪問外網(wǎng)的web服務(wù):
# curl 202.10.10.13
web
外網(wǎng)訪問內(nèi)網(wǎng)的ftp服務(wù)(外網(wǎng)的防火墻一定要關(guān)閉,否則ls查看目錄時(shí)會(huì)出錯(cuò),或者打開外網(wǎng)的20號(hào)端口新建鏈接的也可以)#
# ftp 202.10.10.12
Connected to 202.10.10.12 (202.10.10.12).
220 (vsFTPd 2.2.2)
Name (202.10.10.12:root): ftp01
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode(192,168,1,11,93,1).
ftp: connect: Network isunreachable //列不出內(nèi)容是因?yàn)檫M(jìn)入了passive模式
ftp>passive喚鄭 //用passive命令切換passive模式和active模式
Passivemode off.
ftp> ls
200 PORT command successful. Consider usingPASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp>
補(bǔ)充:
刪除防火墻中配置的記錄
# iptables -t nat -L POSTROUTING -n –line-number //列出記錄和記錄序號(hào)
# iptables -t nat -D POSTROUTING //根據(jù)序號(hào)刪除記錄
linux服務(wù)器搭建原理的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux服務(wù)器搭建原理,深入探究:Linux服務(wù)器搭建的原理解析,linux驅(qū)動(dòng)程序結(jié)構(gòu)框架及工作原理分別是什么?,怎么搭建一個(gè)可以被外網(wǎng)訪問的linux web服務(wù)器的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)——四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,高電服務(wù)器托管,算力服務(wù)器租用,可選線路電信、移動(dòng)、聯(lián)通機(jī)房等。
文章題目:深入探究:Linux服務(wù)器搭建的原理解析(linux服務(wù)器搭建原理)
網(wǎng)站鏈接:http://www.dlmjj.cn/article/djehece.html


咨詢
建站咨詢
