1.apacheçä¼å
2.在 Mac mini Server 上配置WebDAV 文件共享
3.从零实现HTTP服务器——Minihttpd
apacheçä¼å
æ们å¨ä½¿ç¨Apacheä½ä¸ºwebæå¡å¨çè¿ç¨ä¸ï¼åªæ对Apacheæå¡å¨è¿è¡éå½çä¼åé ç½®ï¼æè½è®©Apacheåæ¥åºæ´å¥½çæ§è½ï¼ååè¿æ¥è¯´ï¼å¦æApacheçé ç½®é常ç³ç³ï¼Apacheå¯è½æ æ³æ£å¸¸ä¸ºæ们æå¡ãå æ¤ï¼é对æ们çåºç¨éæ±å¯¹Apacheæå¡å¨çé ç½®è¿è¡ä¸å®çä¼åæ¯å¿ ä¸å¯å°çã硬件åæä½ç³»ç»
毫æ çé®ï¼è¦æ³è®©Apacheæå¡å¨åæ¥åºæ´å¥½çæ§è½ï¼é¦å å¿ é¡»å¾ä¿è¯ç¡¬ä»¶åæä½ç³»ç»è½å¤æ»¡è¶³Apacheæå¡å¨çè´è½½éè¦ãå¦æç±äºç¡¬ä»¶åæä½ç³»ç»åå 导è´Apacheçè¿è¡æ§è½åå°è¾å¤§çå½±åï¼å³ä½¿å¯¹Apacheæå¡å¨æ¬èº«ä¼åé ç½®å¾å好ä¹æ æµäºäºï¼ãæ³è¦é©¬å¿è·å¾å¥½ï¼åæ³é©¬å¿ä¸åèãå½ç¶æ¯è¡ä¸éçã
ä¸è¬èè¨ï¼å½±åwebæå¡å¨æ§è½çæ大çå ç´ æ¯å åãå½å åä¸è¶³æ¶ï¼æä½ç³»ç»å°ä¼ä½¿ç¨å å交æ¢æºå¶ãå å交æ¢æºå¶ï¼ç®èè¨ä¹ï¼å°±æ¯å°æ¬å°ç£ççä¸é¨åä½ä¸ºèæå å空é´ä¾ç¨åºä½¿ç¨ãwebæå¡å¨æ³è¦æ´å¥½å°ææç¨æ·æå¡ï¼åå ¶åºè¯¥æ°¸è¿ä¸è¦ä½¿ç¨å å交æ¢æºå¶ï¼å¦åå ¶æ§è½å°ä¼åå°è¾å¤§çå½±åãä¸ä» å¦æ¤ï¼ç±äºæå¡å¨ä½¿ç¨äºå å交æ¢æºå¶æ产ççãæ»åãï¼ãæ»åãçç´æ¥åæå°±æ¯è®©ç¨æ·æè§ç½ç«ç访é®é度å¾æ ¢ï¼æ¤æ¶ç¨æ·ææå¯è½ä¼ç¹å»ãåæ¢ãæè ãå·æ°ãï¼å¦æç¨æ·ä¸åå°ç¹å»ãå·æ°ãï¼å°ä¼ç»æå¡å¨å¸¦æ¥æ´å¤§çè´è½½ï¼ä»èè¿å ¥ä¸ä¸ªæ¶æ§å¾ªç¯ã
对äºApacheæå¡å¨çå åéæ±éï¼æ们å¯ä»¥éè¿æä½ç³»ç»ç¸å ³å½ä»¤æ¥çæå¡å¨æ£å¸¸è¿è¡æ¶æ¯ä¸ªä¸ºç¨æ·æå¡çè¿ç¨(æ线ç¨)å¹³åå ç¨å¤å°çå åï¼åæ ¹æ®éæ±æè ç¸å ³æ°æ®å¾åºå个æå¡å¨æè¦æ¯æçæ大并åè´è½½æ°ï¼ä»è计ç®åºApacheæå¡å¨çå åéæ±éã为Apacheæå¡å¨åé çå åæ好è½å¤å¤§äºè®¡ç®å¾æ¥çéæ±éã
é¤æ¤ä¹å¤ï¼ç¡¬ä»¶æ好è½å¤ä¿è¯æ足å¤å¿«çCPUã足å¤å¿«çç½å¡(足å¤ç带宽)ã足å¤å¿«è¶³å¤å¤§ç硬çãè¿éçã足å¤ãæ¯æè½å¤æ»¡è¶³webåºç¨çå®é éæ±ã
è³äºæä½ç³»ç»ï¼æ好è½å¤éæ©ä¸ä¸ªæå©äºæå¡å¨è¿è¡çææ°æ稳å®ççæ¬å¹¶å®è£ 好äºå¯¹åºçè¡¥ä¸ç¨åºãæ¯ç«ï¼éçæ¶ä»£çåå±ï¼æä½ç³»ç»ä¹å¨ä¸æè¿æ¥ã许å¤æä½ç³»ç»ååé½æä¾äºå¯ä»¥æ¾èæ¹åæ§è½çTCPåè®®æ å线ç¨åºãä¾å¦ï¼å¦æä½ çæä½ç³»ç»æ¯æsendfile()ç³»ç»è°ç¨ï¼Apache 2.xæå¡å¨å¯ä»¥ä½¿ç¨sendfile()ä»èæ´å¿«å°åééæå 容并ä¸å ç¨è¾å°çCPUæ¶é´ã
ä¼åApacheé ç½®
1.å°½é使ç¨IPå°å代æ¿åå
å¨Apacheçé ç½®æ件ä¸ï¼æ许å¤å¯ä»¥éå¯¹å ·ä½è¯·æ±æ¥æºè¿è¡ç¸åºæä½çé ç½®ï¼ä¾å¦ allow from mini.com表示å 许åå为mini.comçç¨æ·è®¿é®ãå¨è¿ç§æ åµä¸ï¼å¦ææ们ç¥é该ååæ主æºåä¸æ个IPå°åä¸ä¸å¯¹åºï¼åæ好使ç¨å ·ä½çIPå°åæ¥ä»£æ¿ååãå¦åApacheæå¡å¨å°è¦è¿è¡å¤æ¬¡DNSæ¥è¯¢æ¥ç¡®å®è¯¥ååæ主æºåæ对åºçIPå°åã 注æï¼å¯è½åå¨ä¸äºä¾å¤æ åµï¼ä¾å¦ä¸ä¸ªIPå°å对åºå¤ä¸ªååï¼æè ä¸ä¸ªåå对åºå¤ä¸ªIPå°åæè 对åºä¸ä¸ªååçIPå°åï¼æ¤æ¶ä»ç¶è¦ä½¿ç¨ååæ主æºåãä¸è¬èè¨ï¼åªæååæ主æºåä¸IPå°åå ·æä¸ä¸å¯¹åºå ³ç³»æ¶ï¼æ使ç¨IPå°åæ¥ä»£æ¿ååãè¯·æ ¹æ®å®é æ åµä½åºéæ©ã 2.å¯ç¨FollowSymLinksé项
å½Apacheå¤ç请æ±æ¶ï¼å¦æ对åºç请æ±æ件æå¨ç®å½æ²¡æå¯ç¨FollowSymLinksé项ï¼æ使ç¨äºSymLinksIfOwnerMatché项ï¼Apacheå°±å¿ é¡»æ§è¡é¢å¤çç³»ç»è°ç¨æ¥éªè¯ç¬¦å·è¿æ¥çå®å ¨æ§ãæ件åçæ¯ä¸ä¸ªç»æé¨åé½éè¦ä¸æ¬¡é¢å¤çè°ç¨ãå æ¤ï¼å¦æå¨å®å ¨æ§å 许çæ åµä¸ï¼ä¸ºäºå¾å°æ´å è¯å¥½çè¿è¡æ§è½ï¼åºå½æ¾å¼å¯¹ç¬¦å·è¿æ¥çä¿æ¤ï¼å¨ææå°æ¹é½è®¾ç½®FollowSymLinksï¼å¹¶æ¾å¼ä½¿ç¨SymLinksIfOwnerMatchã #å¯ç¨FollowSymLinksé项ï¼å¦æåç®å½æ²¡æé¢å¤ç设置ï¼å°ä¼ç»§æ¿è¯¥è®¾ç½®
<Directory />
Options FollowSymLinks
</Directory> 3.ç¦ç¨AllowOverride
å¦æApacheçé ç½®æ件ä¸å 许äºAllowOverrideæ令ï¼åApacheå¨å¤çæ¯ä¸ªè¯·æ±è·¯å¾æ¶ï¼é½ä¼å°è¯å¯¹æ件路å¾çæ¯ä¸ä¸ªç»æé¨åé½æå¼è¯¥ç®å½ä¸ç.htaccessæ件ã
ä¾å¦ï¼å½ç¨æ·è¯·æ±è®¿é®æå¡å¨ä¸ç/static/test/hello.htmlï¼åApacheå°ä¼å°è¯æå¼/static/test/.htaccessã/static/.htaccessã/.htaccessä¸ä¸ªæ件ãä»èå½±åæå¡å¨çè¿è¡æ§è½ã
å æ¤ï¼å¦æå½åç¨æ·æ¥æApacheé ç½®æ件çç¼è¾æéï¼å»ºè®®å°.htaccessæ件ä¸çé ç½®å 容ç´æ¥åå¨Apache对åºçé ç½®æ件(ä¸è¬ä¸ºwareãmpmt_os2ãmpm_preforkãmpm_winntãmpm_workerãå¦ææ¡ä»¶å 许ï¼æ们å¯ä»¥æ ¹æ®å®é éæ±å°æå®çMPM模åç¼è¯è¿æ们èªå·±çApacheä¸(Apacheçæºç æ¯å¼æ¾çï¼å 许ç¨æ·èªè¡ç¼è¯)ãä¸è¿ï¼å¦æå¨ç¼è¯æ¶æ们没æéæ©ï¼Apacheå°æç §å¦ä¸è¡¨æ ¼æ ¹æ®ä¸åçæä½ç³»ç»èªè¡éæ©å¯¹åºçMPM模åï¼è¿ä¹æ¯Apacheé对ä¸åå¹³å°æ¨è使ç¨çMPM模åã ä¸åæä½ç³»ç»ä¸é»è®¤çMPM模å æä½ç³»ç» MPM模å æè¿° Windows mpm_winnt ä¸ç¨ä»ç»äºå§:) Unix/Linux mpm_prefork ä¸ç¨ä»ç»äºå§:) BeOS mpm_beos ç±Beå ¬å¸å¼åçä¸ç§å¤åªä½æä½ç³»ç»ï¼å®æ¹çå·²åæ¢æ´æ°ã Netware mpm_netware ç±NOVELLå ¬å¸æ¨åºçä¸ç§ç½ç»æä½ç³»ç» OS/2 mpmt_os2 ä¸ç§æåç±å¾®è½¯åIBMå ±åå¼åçæä½ç³»ç»ï¼ç°ç±IBMåç¬å¼å(微软æ¾å¼OS/2ï¼è½¬èå¼åWindows) mpm_event模åå¯ä»¥çä½æ¯mpm_worker模åçä¸ä¸ªåç§ï¼ä¸è¿å ¶å ·æå®éªæ§è´¨ï¼ä¸è¬ä¸æ¨è使ç¨ã
å½ç¶ï¼Apacheå¨å ¶å®æ¹ç½ç«ä¸ä¹æä¾äºæ ¹æ®ä¸åæä½ç³»ç»å·²ç»ç¼è¯å¥½å¯¹åºMPM模åçæåApacheãä½ å¯ä»¥ç¹å»æ¤å¤è¿å ¥Apacheå®æ¹ç½ç«ä¸è½½ã
æ¤å¤ï¼å¦ææ们æ³è¦ç¥éæ个Apacheå é¨ä½¿ç¨çæ¯ä½ç§MPM模åï¼æ们å¯ä»¥ä»¥å½ä»¤è¡çæ¹å¼è¿å ¥Apacheå®è£ ç®å½\binï¼ç¶åé®å ¥å½ä»¤wareçé»è®¤å¼æ¯ãæ¢ç¶è¿ä¸ªMPMåªè¿è¡åç¬ä¸ä¸ªåè¿ç¨ï¼æ¤MPMå½ç¶äº¦åºäºæ´ä¸ªæå¡å¨çè§ç©ºé²çº¿ç¨æ°ãmpm_beosåmpmt_os2çå·¥ä½æ¹å¼ä¸mpm_netwareå·®ä¸å¤ï¼mpm_beosçé»è®¤å¼æ¯1ï¼mpmt_os2çé»è®¤å¼æ¯5ã) MaxSpareThreadså¤äºç©ºé²ç¶æçæ大线ç¨æ°ã
(注ï¼ä¸åçMPM对è¿ä¸ªæ令çå¤çæ¯ä¸ä¸æ ·çï¼mpm_workerçé»è®¤å¼æ¯ãè¿ä¸ªMPMå°åºäºæ´ä¸ªæå¡å¨çè§ç©ºé²çº¿ç¨æ°ãå¦ææå¡å¨ä¸æ»ç空é²çº¿ç¨æ°å¤ªå¤ï¼åè¿ç¨å°ææ»å¤ä½ç空é²çº¿ç¨ãmpm_netwareçé»è®¤å¼æ¯ãæ¢ç¶è¿ä¸ªMPMåªè¿è¡åç¬ä¸ä¸ªåè¿ç¨ï¼æ¤MPMå½ç¶äº¦åºäºæ´ä¸ªæå¡å¨çè§ç©ºé²çº¿ç¨æ°ãmpm_beosåmpmt_os2çå·¥ä½æ¹å¼ä¸mpm_netwareå·®ä¸å¤ï¼mpm_beosçé»è®¤å¼æ¯ï¼mpmt_os2çé»è®¤å¼æ¯ã) å¤æ³¨ï¼ServerLimit表示Apacheå 许å建çæ大è¿ç¨æ°ãå¼å¾æ³¨æçæ¯ï¼Apacheå¨ç¼è¯æ¶å é¨æä¸ä¸ªç¡¬éå¶ServerLimit(对äºmpm_prefork模å为ServerLimit)ãä½ ä¸è½è¶ è¶è¿ä¸ªéå¶ã
使ç¨è¿ä¸ªæ令æ¶è¦ç¹å«å½å¿ãå¦æå°ServerLimit设置æä¸ä¸ªé«åºå®é éè¦è®¸å¤çå¼ï¼å°ä¼æè¿å¤çå ±äº«å å被åé ãå¦æå°ServerLimitåMaxClients设置æè¶ è¿ç³»ç»çå¤çè½åï¼Apacheå¯è½æ æ³å¯å¨ï¼æè ç³»ç»å°åå¾ä¸ç¨³å®ã 注æï¼å¨é ç½®ç¸å ³åæ°æ¶ï¼è¯·å ä¿è¯æå¡å¨å ·å¤è¶³å¤ç硬件æ§è½(ä¾å¦ï¼CPUãå åç)ãå¦æåç°èªå¯å¨åï¼éçæå¡å¨çè¿è¡æ¶é´å¢å ï¼æå¡å¨çå åå ç¨ä¹éä¹å¢å ï¼å¯è½æ¯ç¨åºä¸åºç°å åæ³é²ï¼è¯·åä¸è°æ´åæ°MaxRequestsPerChildçå¼ä»¥éä½å åæ³é²å¸¦æ¥çå½±åï¼ç¶å尽快æ¾åºç¨åºä¸çé®é¢ä¹æå¨ã
在 Mac mini Server 上配置WebDAV 文件共享
在 Mac mini Server 上配置 WebDAV 文件共享的码安过程相对直接,首先,码安借助 macOS 自带的码安 Apache 或通过 Homebrew 安装扩展。步骤如下:
1. 首先,码安确保 端口的码安 HTTP 访问正常,接着配置 端口的码安weedfs 源码 HTTPS 访问,确保路由器映射并启用 DDNS 服务,码安以便外部网络访问。码安
2. 所有操作都需在终端中进行。码安在本地访问 localhost,码安确认配置成功后,码安可能需要管理员权限运行 Vim 编辑器。码安Vim 的码安基础操作包括:使用方向键或特定键组合移动光标,搜索、码安插入和删除文本。码安
3. 编辑 Apache 主配置文件(sudo vim /etc/apache2/httpd.conf)和 WebDAV 模块配置(sudo vim /etc/apache2/extra/httpd-dav.conf),设置服务目录权限,包括创建 DavLockDB 目录,并在 macOS 设置中添加 httpd 和 htdigest 的discuz图片论坛源码完全磁盘访问权限。
4. 接着配置 WebDAV 用户,包括创建用户和密码。然后运行 apachectl configtest 检查配置,apachectl graceful 使配置生效,查看错误日志以解决问题。
5. 在访达中,使用 Command+k 连接服务器,输入用户名和密码验证连接。通过 HTTPS 提供更安全的老板键源码文件共享,如需开启 SSL,编辑相关配置文件,并可能需要自签发证书或使用动态 DNS 证书。
6. 在路由器上映射 和 端口,部分情况下可能需要使用自定义端口。确认广域网 IP 可访问后,注册动态域名解析服务,注意可能的 DNS 更新问题。
7. 通过 FE 文件管理器、x站电影源码Infuse 等客户端测试,MacOS Ventura .4 可能有连接延迟,Windows 资源管理器还需进一步测试。
最后,要感谢知乎付费咨询用户的帮助。此外,相关操作也可以参考视频教程进行学习。
从零实现HTTP服务器——Minihttpd
理解HTTP服务器的基本工作流程是实现一个简单的HTTP服务器的关键。这种服务器主要功能是论坛 博客源码接收浏览器的HTTP请求并返回相应的HTTP响应。实现最基本的HTTP服务器,首先需要完成请求的接收和响应的发送。
HTTP报文格式包括HTTP请求和HTTP响应。HTTP请求主要由请求头和请求体构成,以空行分隔。例如,当浏览器访问某一网站时,除了“请求方法 URL 协议版本”这一行,其余部分都是请求头部字段。
HTTP响应同样分为响应头和响应体,中间同样以空行分隔。响应头首行是“协议版本 HTTP状态码”,之后是头部字段,可按需求添加。
为了实现最基本的HTTP服务器,设计了三个类:HttpServer、HttpRequest和HttpResponse。它们分别用于维护服务器实例、解析HTTP请求和构造响应报文。
HttpRequest类方便解析HTTP请求,能够读取头部字段信息。HttpResponse类提供通用字段设置方法,支持自定义字段和文件读取功能,用于解析请求中的URL并返回相应文件。
HttpServer类是服务器的核心,负责创建监听套接字以接收请求并返回响应。它包括startup函数用于创建监听套接字,start_listen()函数用于处理接收到的TCP数据包,识别HTTP请求。
处理请求的具体流程包括:使用accept函数保存客户端套接字信息,接收请求后创建新线程进行处理。读取原始数据存入缓冲区,交由HttpRequest类解析,利用HttpResponse类构造响应报文,通过send函数将响应发送回客户端。最后关闭套接字。
至此,基本的HTTP服务器已具备解析简单请求并返回本地HTML文档的能力。接下来,将不断完善该服务器,实现更复杂的功能。