apache-详细配置文件介绍+多种方式虚拟主机配置
grep -v "#" /etc/httpd/conf/httpd.conf
ServerTokens OS ? ?返回Server :Apache/2.0.41(unix)
servertokens 指令?
說明:配置HTTP服務(wù)器回應(yīng)頭,此指令控制了server回送給客戶端的回應(yīng)頭域是否包含關(guān)于服務(wù)器OS類型和編譯的模塊描述信息
語法:
servertokens ?major|minor|minimal|productonly|os|full
apache 啟動(dòng)后有9個(gè)進(jìn)程,一個(gè)主進(jìn)程 8個(gè)子進(jìn)程主進(jìn)程以root身份運(yùn)行 進(jìn)程ID在httpd.pid里 ?子進(jìn)程以Apache進(jìn)程運(yùn)行,子進(jìn)程是主進(jìn)程產(chǎn)生的,
Apache ?DSO
Apache是一個(gè)模塊化設(shè)計(jì)的服務(wù),核心只包含主要功能,擴(kuò)展能通過模塊實(shí)現(xiàn),不同模塊可以被靜態(tài)編譯進(jìn)程序,也可以動(dòng)態(tài)加載
查看模塊 httpd -M
查看靜態(tài)編譯的程序的模塊 ?httpd -l
如果加新的功能就需要重新編譯,但是DSO不需要,可以通過Apache自帶的apxs
apache MPM(multi process modules)
mpm負(fù)責(zé)實(shí)現(xiàn)網(wǎng)絡(luò)監(jiān)聽,請(qǐng)求處理等功能,mpm有很多種,目的是為了在不同平臺(tái)環(huán)境實(shí)現(xiàn)最優(yōu)化的性能及穩(wěn)性。
通過以下命令可以看出Apache所使用的MPM
httpd -l
httpd ?-V ? m默認(rèn)是prefork
線程與進(jìn)程的區(qū)別:
線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體.
與進(jìn)程的區(qū)別:
(1)地址空間:進(jìn)程內(nèi)的一個(gè)執(zhí)行單元;進(jìn)程至少有一個(gè)線程;它們共享進(jìn)程的地址空間;而進(jìn)程有自己獨(dú)立的地址空間;
(2)資源擁有:進(jìn)程是資源分配和擁有的單位,同一個(gè)進(jìn)程內(nèi)的線程共享進(jìn)程的資源
(3)線程是處理器調(diào)度的基本單位,但進(jìn)程不是.
4)二者均可并發(fā)執(zhí)行.
進(jìn)程和線程都是由操作系統(tǒng)所體會(huì)的程序運(yùn)行的基本單元,系統(tǒng)利用該基本單元實(shí)現(xiàn)系統(tǒng)對(duì)應(yīng)用的并發(fā)性。
進(jìn)程和線程的區(qū)別在于:
簡而言之,一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程.?
線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高。?
另外,進(jìn)程在執(zhí)行過程中擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而極大地提高了程序的運(yùn)行效率。?
線程在執(zhí)行過程中與進(jìn)程還是有區(qū)別的。每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。
?從邏輯角度來看,多線程的意義在于一個(gè)應(yīng)用程序中,有多個(gè)執(zhí)行部分可以同時(shí)執(zhí)行。但操作系統(tǒng)并沒有將多個(gè)線程看做多個(gè)獨(dú)立的應(yīng)用,來實(shí)現(xiàn)進(jìn)程的調(diào)度和管理以及資源分配。這就是進(jìn)程和線程的重要區(qū)別。
進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位.?
線程是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位,它是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位.線程自己基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)
在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器,一組寄存器和棧),但是它可與同屬一個(gè)進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源.?
一個(gè)線程可以創(chuàng)建和撤銷另一個(gè)線程;同一個(gè)進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行.
prefork 與worker
prefork: prefork是非線程的,預(yù)生成進(jìn)程型的MPM,使用多子進(jìn)程,每個(gè)子進(jìn)程只有一個(gè)線程,每個(gè)進(jìn)程在某個(gè)時(shí)間只能維持一個(gè)連接,效率高,但內(nèi)存占用量較大。。它適合于沒有線程安全庫,需要避免線程兼容性問題的系統(tǒng)
worker:是線程化多進(jìn)程的MPM,每個(gè)子進(jìn)程可以生成多個(gè)線程,每個(gè)線程處理一個(gè)請(qǐng)求。內(nèi)存占用率小,適用于流量搞得http服務(wù)器。缺點(diǎn),假如一個(gè)線程崩潰,整個(gè)進(jìn)程連同其他任何其中線程一起死掉
Apache 中prefork的最大進(jìn)程數(shù)是 在prefork的配置中
?
Apache三個(gè)配置
1 global 1 environment
2 main configuration
3 virtual host
first one class ?1 ?
全局配置影響整個(gè)Apache
ServerTokens OS ? ?返回Server的信息 :Apache/2.0.41(unix)
ServerRoot ? ? ? ? "/etc/httpd" ? 服務(wù)的主目錄 ? 不能更改,也即是安裝目錄
pidfile ?run/httpd.pid ? ?主進(jìn)程id的號(hào)
timeout ? 連接時(shí)間。
keepalived ?off 是否開啟TCP連接請(qǐng)求(是否開啟持久連接功能,即客戶端練到服務(wù)器下載數(shù)據(jù)完成后任然保持連接狀態(tài)) ? 開啟效率較好,默認(rèn)關(guān)閉
MaxKeepAliveRequests 100 ? ? ? ? ?一個(gè)連接服務(wù)的最多請(qǐng)求次數(shù) ? ? ? ?
KeepAliveTimeout 15 ? 一個(gè)TCP連接兩次請(qǐng)求時(shí)間的間,即連續(xù)連接多長時(shí)間
LISTEN 80 ?監(jiān)聽端口號(hào),以及在那個(gè)ip上監(jiān)聽80端口
DSO
include ? conf.d/*.conf ?模塊加載路徑
user
group ?Apache ?指定Apache是以什么身份運(yùn)行子進(jìn)程
second ? class ?2?
Apache缺省服務(wù)目錄主配置
serveradmin ?管理員郵件地址
servername 服務(wù)器域名,也就是網(wǎng)站的域名
UseCanonicalName Off ? 是否嚴(yán)格使用合格域名 ? 如果使用虛擬主機(jī),一定要關(guān)閉
DocumentRoot "/var/www/html" ?根目錄 ?主站點(diǎn)目錄
<Directory ?/var/www/html> ? 主站點(diǎn)目錄訪問控制 ?,缺省配置
? ? Options FollowSymLinks
? ? AllowOverride None
? ? Order?allow,deny
? ? ?Allow?from?all
</Directory>
Options:配置在特定目錄使用哪些特性,常用的值和基本含義如下:
ExecCGI:?在該目錄下允許執(zhí)行CGI腳本。
FollowSymLinks:?在該目錄下允許文件系統(tǒng)使用符號(hào)連接。
Indexes:?當(dāng)用戶訪問該目錄時(shí),如果用戶找不到DirectoryIndex指定的主頁文件(例如index.html),則返回該目錄下的文件列表給用戶。 一般不建議使用?
SymLinksIfOwnerMatch: 當(dāng)使用符號(hào)連接時(shí),只有當(dāng)符號(hào)連接的文件擁有者與實(shí)際文件的擁有者相同時(shí)才可以訪問。
AllowOverride ?None:允許存在于.htaccess文件中的指令類型(.htaccess文件名是可以改變的,其文件名由AccessFileName指令決定)
None:?當(dāng)AllowOverride被設(shè)置為None時(shí)。不搜索該目錄下的.htaccess文件(可以減小服務(wù)器開銷)
Allow:允許訪問的主機(jī)列表(可用域名或子網(wǎng),例如:Allow?from?192.168.0.0/16)
Deny:拒絕訪問的主機(jī)列表
Apache的MPM優(yōu)化
# prefork MPM
?
<IfModule prefork.c>
StartServers ? ? ? 8 ? ? 啟動(dòng)Apache時(shí)候啟動(dòng)的httpd進(jìn)程個(gè)數(shù)
MinSpareServers ? ?5 ? ? 最小空閑的進(jìn)程數(shù)
MaxSpareServers ? 20 ? ? 最大空閑的進(jìn)程數(shù)
ServerLimit ? ? ?256 ? ??
MaxClients ? ? ? 256 ? ?最大允許連接數(shù),即最大并發(fā)數(shù),最大限值由serverlimit 控制
MaxRequestsPerChild ?4000 子進(jìn)程最大請(qǐng)求數(shù),0表示不限制,推薦位1000
</IfModule>
#worker MPM
?
<IfModule worker.c>
StartServers ? ? ? ? 4 ? 啟動(dòng)Apache時(shí)候啟動(dòng)的httpd的個(gè)數(shù)
MaxClients ? ? ? ? 300 ? 最大并發(fā)連接數(shù)
MinSpareThreads ? ? 25 ? 最小空閑線程數(shù)
MaxSpareThreads ? ? 75 ? 最大空閑線程數(shù)
ThreadsPerChild ? ? 25 ? 每個(gè)子進(jìn)程產(chǎn)生的線程數(shù)
MaxRequestsPerChild ?0 ? 每個(gè)子進(jìn)程被請(qǐng)求的最大次數(shù)
</IfModule>
別名設(shè)置
對(duì)于不在DocumentRoot指定的目錄內(nèi)的頁面,既可以使用符號(hào)連接,也可以使用別名。?
Alias /error/ "/var/www/error/" ? ?訪問時(shí)候可以輸入 ?、HTTP://www.node.com/error
<IfModule mod_negotiation.c>
<IfModule mod_include.c>
? ? <Directory "/var/www/error">
? ? ? ? AllowOverride None
? ? ? ? Options IncludesNoExec?
? ? ? ? AddOutputFilter Includes html
? ? ? ? AddHandler type-map var
? ? ? ? Order allow,deny
? ? ? ? Allow from all
? ? ? ? LanguagePriority en es de fr
? ? ? ? ForceLanguagePriority Prefer Fallback
? ? </Directory>
對(duì)Apache服務(wù)器的根訪問不生成目錄列表,同時(shí)指定錯(cuò)誤頁面
<locationmatch "^/$>
options-indexes
errordocument 403 /error/noindex.html
<locationmatch>
當(dāng)訪問服務(wù)器時(shí)候依次訪問頁面 index.html ?index.html.var
directoryindex ? index.html ?index.html.var
DirectoryIndex index.html index.html.var ?不指定任何首頁時(shí)候,默認(rèn)讀取的首頁
指定保護(hù)目錄配置文件的名稱
AccessFileName .htaccess ? ? ? ? ? ? ? ? ? 分布式訪問控制文件?
//指定負(fù)責(zé)處理MIME 對(duì)應(yīng)格式的配置文件的存放位置?
TypesConfig /etc/mime.types?
//指定默認(rèn)的MIME 文件類型為純文本或HTML 文件?
DefaultType text/plain?
//只記錄連接Apache 服務(wù)器的IP 地址,而不記錄主機(jī)名
?HostnameLookups Off?
訪問日志設(shè)置
ErrorLog logs/error_log ? ? 錯(cuò)誤日志的位置
?
#LogLevel: ? debug, info, notice, warn, error, crit,
?
LogLevel warn
自定義訪問日志
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common ?#common為日志格式名稱
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent?
# "combinedio" includes actual counts of actual bytes received (%I) and sent (%O); this
# requires the mod_logio module to be loaded.
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combined:io
CustomLog logs/access_log common
格式中各個(gè)參數(shù)如下
%h -客戶端的IP地址或主機(jī)名
%l –The 這是由客戶端 identd 判斷的RFC 1413身份,輸出中的符號(hào) "-" 表示此處信息無效。
%u –由HTTP認(rèn)證系統(tǒng)得到的訪問該網(wǎng)頁的客戶名。有認(rèn)證時(shí)才有效,輸出中的符號(hào) "-" 表示此處信息無效。
%t –服務(wù)器完成對(duì)請(qǐng)求的處理時(shí)的時(shí)間。
"%r" –引號(hào)中是客戶發(fā)出的包含了許多有用信息的請(qǐng)求內(nèi)容。
%>s –這個(gè)是服務(wù)器返回給客戶端的狀態(tài)碼。
%b –最后這項(xiàng)是返回給客戶端的不包括響應(yīng)頭的字節(jié)數(shù)。
"%{Referer}i" –此項(xiàng)指明了該請(qǐng)求是從被哪個(gè)網(wǎng)頁提交過來的
"%{User-Agent}i" –此項(xiàng)是客戶瀏覽器提供的瀏覽器識(shí)別信息。
用戶認(rèn)證的配置
<IfModule mod_userdir.c> ? 條件化模塊判斷
如果有這個(gè)模塊,默認(rèn)將使用這個(gè)功能
UserDir disabled
#UserDir public_html
</IfModule>
<Files ~ "^\.ht"> ? ? ? ? ? ?文件訪問控制
? ? Order allow,deny
? ? Deny from all
? ? Satisfy All
</Files>
ServerSignature on ? 表示在錯(cuò)誤頁面中不顯示Apache的版本
servertokens prod ? ? 在錯(cuò)誤頁面中不顯示操作系統(tǒng)的名稱
+==========================================================================================
虛擬主機(jī)
===========================================================================================
虛擬主機(jī)(VirtualHost).通常分為這樣3種:
基于域名,基于端口,基于IP,以及它們的混合
下面是每種虛擬主機(jī)的配置過程
1.基于域名
這是一種最通用的情況,已經(jīng)給服務(wù)器設(shè)置了多個(gè)域名,然后希望訪問不同的域名來訪問不同的網(wǎng)站文件.
修改httpd.conf的配置
?Use name-based virtual hosting.
#
NameVirtualHost * ?表示在apache監(jiān)聽的所有IP和所有端口(此時(shí)只有80)上做多域名虛擬主機(jī)
<VirtualHost *>
? ? ServerAdmin xxx@xxx.com
? ? DocumentRoot /var/www/html/s1
? ? ServerName s1.domain1.com
? ? ErrorLog logs/ error_log
? ? TransferLog logs/ access_log
</VirtualHost>
?
<VirtualHost *>
? ? ServerAdmin xxx@ixxx.com
? ? DocumentRoot /var/www/html/s2
? ? ServerName ?s2.domain1.com
? ? ErrorLog logs/error_log
? ? TransferLog logs/access_log
</VirtualHost>
2.基于端口
通過訪問同一個(gè)IP(或者域名)的不同端口來訪問到不同的文件
對(duì)httpd.conf做如下修改
增加監(jiān)聽口
Listen 80
Listen 81
將之前做的多域名虛擬主機(jī)去掉(因?yàn)榇藭r(shí)是用IP加端口來訪問的),即
# Use name-based virtual hosting.
#
# NameVirtualHost * ? ?注釋掉這句話
以下是虛擬主機(jī)配置(注意下面的配置部分我并沒用ServerName字段)
<VirtualHost *:80>
? ? ServerAdmin xxx@xxx.com
? ? DocumentRoot /var/www/html/s1
? ? ErrorLog logs/error_log
? ? TransferLog logs/ access_log
</VirtualHost>
?
<VirtualHost *:81>
? ? ServerAdmin xxx@xxx.com
? ? DocumentRoot /var/www/html/s2
? ? ErrorLog logs/ error_log
? ? TransferLog logs/ access_log
</VirtualHost>
?
混合實(shí)驗(yàn)
看到這里我們就可以做一個(gè)稍微復(fù)雜的實(shí)驗(yàn),在不同的端口上做不同域名的訪問.例如
在80上訪問s1.domain1.com和s2.domain1.com
在81上訪問s3.domain2.com和s4.domain2.com當(dāng)然這樣訪問是要帶端口號(hào)的,上面因?yàn)槭?0默認(rèn)端口所以不需要寫端口號(hào)
訪問這四個(gè)域名+端口分別訪問到不同的頁面.
配置過程
首先在bind上增加兩個(gè)域名指向服務(wù)器. s3.domain2.com,s4.domain2.com,增加之后記得要重啟bind.
然后修改httpd.conf文件
增加監(jiān)聽口
Listen 80
Listen 81
虛擬主機(jī)設(shè)置
# Use name-based virtual hosting.
#
NameVirtualHost *:80
NameVirtualHost *:81
表示要在本機(jī)的所有IP的80和81上面做多域名(NameVirtualHost:即為名稱虛擬主機(jī)的意思)
<VirtualHost *:80>
? ? ServerAdmin xxx@xxx.com
? ? DocumentRoot /var/www/html/s1
? ? ServerName s1.domain1.com
? ? ErrorLog logs/ error_log
? ? TransferLog logs/ access_log
</VirtualHost>
?
<VirtualHost *:80>
? ? ServerAdmin xxx@xxx.com
? ? DocumentRoot /var/www/html/s2
? ? ServerName ?s2.domain1.com
? ? ErrorLog logs/ error_log
? ? TransferLog logs/access_log
</VirtualHost>
?
?
<VirtualHost *:81>
? ? ServerAdmin xxx@xxx.com
? ? DocumentRoot /var/www/html/s3
? ? ServerName ?s3.domain2.com
? ? ErrorLog logs/error_log
? ? TransferLog logs/access_log
</VirtualHost>
?
<VirtualHost *:81>
? ? ServerAdmin xxx@xxx.com
? ? DocumentRoot /var/www/html/s4
? ? ServerName ?s4.domain2.com
? ? ErrorLog logs/error_log
? ? TransferLog logs/access_log
</VirtualHost>
?
檢查虛擬主機(jī)設(shè)置
?
3.基于IP的虛擬主機(jī)
將不同的網(wǎng)站掛在不同的IP上,訪問不同的IP,所看到的是不同網(wǎng)站.因?yàn)橐话惴?wù)器沒那么多公網(wǎng)IP,而且大家一般都是用域名訪問的.所以這
個(gè)基本沒用.但是可以用來測試和學(xué)習(xí).
適用環(huán)境:server上沒有配置域名,只能用IP訪問.
為了實(shí)驗(yàn)效果,我們先來停掉DNS服務(wù).
首先為服務(wù)器增加一個(gè)IP,192.168.0.112
[root@server1 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0
[root@server1 network-scripts]# vi ifcfg-eth0:0
DEVICE=eth0:0 ? ? //設(shè)備名稱
ONBOOT=yes ? ? ? //隨系統(tǒng)啟動(dòng)
BOOTPROTO=static
IPADDR=192.168.0.112 //新設(shè)的IP
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
激活這個(gè)設(shè)備
[root@server1 network-scripts]# ifdown eth0;ifup eth0
查看當(dāng)前ip設(shè)置
[root@server1 network-scripts]# ifconfig
eth0 ? ? ?Link encap:Ethernet ?HWaddr 00:0A:EB:XX:XX:XX?
? ? ? ? ? inet addr:192.168.0.111 ?Bcast:192.168.0.255 ?Mask:255.255.255.0
? ? ? ? ?
eth0:0 ? ?Link encap:Ethernet ?HWaddr 00:0A:EB:XX:XX:XX?
? ? ? ? ? inet addr:192.168.0.112 ?Bcast:192.168.0.255 ?Mask:255.255.255.0
? ? ? ? ?
ping這個(gè)112確實(shí)啟用成功.
這樣增加IP的工作就完成了,下面對(duì)httpd.conf做修改
# Use name-based virtual hosting.
#
#NameVirtualHost * ? 去掉基于多域名的主機(jī)
?
<VirtualHost 192.168.0.111>
? ? ServerAdmin xxx@xxx.com
? ? DocumentRoot /var/www/html/s1
# ? ?ServerName s1.domain1.com
? ? ErrorLog logs/ error_log
? ? TransferLog logs/ access_log
</VirtualHost>
?
<VirtualHost 192.168.0.112>
? ? ServerAdmin xxx@xxx.com
? ? DocumentRoot /var/www/html/s2
# ? ?ServerName ?ss2.domain1.com
? ? ErrorLog logs/ error_log
? ? TransferLog logs/ access_log
</VirtualHost>
?
注意上面紅色的部分,由于此時(shí)沒用多域名所以我將ServerName字段去掉了(在多端口的時(shí)候這樣做是可以的).但是出現(xiàn)了下面的錯(cuò)誤,可以看
到它是把IP作為域名給解析了.
"httpd.conf" 1157L, 38072C written ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
[root@server1 conf]# ../bin/httpd -S
[Mon Jul 30 14:09:06 2007] [error] (EAI 2)Name or service not known: Failed to resolve server name for 192.168.0.112 (check?
DNS) -- or specify an explicit ServerName
[Mon Jul 30 14:09:06 2007] [error] (EAI 2)Name or service not known: Failed to resolve server name for 192.168.0.111 (check?
DNS) -- or specify an explicit ServerName
VirtualHost configuration:
192.168.0.111:* ? ? ? ?bogus_host_without_reverse_dns (/usr/local/apache2/conf/httpd.conf:1065)
192.168.0.112:* ? ? ? ?bogus_host_without_reverse_dns (/usr/local/apache2/conf/httpd.conf:1074)
Syntax OK
?
下面我們將ServerName字段加上去,后面的名稱我們隨意寫
<VirtualHost 192.168.0.111>
? ? ServerAdmin hong.yao@infonaligy.com
? ? DocumentRoot /var/www/html/s1
? ? ServerName s1
? ? ErrorLog logs/dbpi_web-error_log
? ? TransferLog logs/dbpi_web-access_log
</VirtualHost>
?
<VirtualHost 192.168.0.112>
? ? ServerAdmin hong.yao@infonaligy.com
? ? DocumentRoot /var/www/html/s2
? ? ServerName s2
? ? ErrorLog logs/dbpi_web-error_log
? ? TransferLog logs/dbpi_web-access_log
</VirtualHost>
?
然后再來檢查虛擬主機(jī)配置
[root@server1 conf]# ../bin/httpd -S
VirtualHost configuration:
192.168.0.111:* ? ? ? ?s1 (/usr/local/apache2/conf/httpd.conf:1065)
192.168.0.112:* ? ? ? ?s2 (/usr/local/apache2/conf/httpd.conf:1075)
Syntax OK
在客戶機(jī)上測試訪問192.168.0.111和192.168.0.112成功.
?
個(gè)人覺得這應(yīng)該是一處bug,因?yàn)樵谶@種情況下并不需要域名訪問,采用的是完全以實(shí)際IP進(jìn)行訪問.相應(yīng)的ServerName這個(gè)字段應(yīng)該是沒有意義
的(正如多端口時(shí)我們這樣做,完全沒問題).事實(shí)也表明了我們?nèi)我馄鹈忠彩强梢酝ㄟ^的.
?
?
最后說一個(gè)Apache常常會(huì)碰到的問題
啟動(dòng)apache時(shí)會(huì)有警告
httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
還是能夠正常的啟動(dòng)和訪問,只是有這個(gè)問題.
解決:
#ServerName [url]www.example.com:80[/url] 將這句話修改如下
ServerName 192.168.0.111 當(dāng)然根據(jù)你的實(shí)際情況修改為本機(jī)的IP或者域名
轉(zhuǎn)載于:https://blog.51cto.com/douya/1546599
總結(jié)
以上是生活随笔為你收集整理的apache-详细配置文件介绍+多种方式虚拟主机配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么设置环境变量
- 下一篇: Mac 可设置环境变量的位置、查看和添加