我的博客后台yadihttpd_v0.1总结
总结一下这个博客的后台yadihttpd
。这个版本号我定为v0.1,它是一个基本稳定的版本,所以它的版本号从0.04跳到了0.1,使用方法如下:
pi@centos:~/yadihttpd$ ./yadihttpd
usage: ./yadihttpd <port> <websit root> <log dir>
要实现创建好文件夹和响应静态文件
如:./yadihttpd 80 /home/pi/www /home/pi/yadihttpdlog
pi@centos:~/yadihttpd$ sudo ./yadihttpd 80 /home/pi/www /home/pi/yadihttpdlog
# 写一个脚本定期执行,防止因未知原因服务挂掉
# 而自己不知道
# 目前yadihttpd已经基本可以稳定运行
hqinglau@centos:~$ sudo vim yadiCheck.sh
hqinglau@centos:~$ cat !$
cat yadiCheck.sh
#!/bin/bash
nline=$(ps aux | grep yadihttpd | wc -l)
if [ $nline -lt 2 ];then
/home/pi/yadihttpd/yadihttpd 80 /home/pi/www /home/pi/yadihttpdlog
fi
# 设置10min检查一次,挂了就启动
hqinglau@centos:~$ crontab -l
*/10 * * * * /home/hqinglau/yadiCheck.sh
github地址:yadihttpd
示例博客项目:博客文件树
📚 大致效果
进入具体条目:
这样看起来还可以。

完成的功能:
✅ 打印日志,读取消息头,日志文件名根据时间生成
✅ epoll版本并返回相应文件
✅ 日志队列,自动切换,写日志单独线程
✅ 大文件支持
✅ 简易博客
日志
显示具体行号,函数,文件名
查看日志线程:
日志线程一般睡眠状态(队列空,代表不忙,释放锁,阻塞一秒)。
🔴 访问链接前日志:
🟢 访问链接后日志:
🟢 日志记录一定条数时(如5000),自动切换文件。
网页
📚 图片读取
📚 大文件支持 (may be some bugs)
epollout处理缓冲区、设置非阻塞fd, 服务器可以同时处理多个请求。
📚 服务器文件根目录布局
pi@raspberrypi:~/www $ tree
.
├── blog # marked转换之后的博客
│ ├── linux_notes.html
│ └── test.html
├── css
│ ├── my.css
│ └── prism.css # 代码高亮等等
├── img
│ ├── 1.jpg
│ ├── eg_tulip.jpg
│ ├── lake.jpg
│ └── log.jpg
├── index.html
├── js
│ └── prism.js # 代码高亮等等
└── md # 初始markdown形式
├── linux_notes.md
├── md2html.sh #批量转换脚本 md->html
├── test.md
└── tmp.mdfile
所用到库:
marked:markdown -> html
prismjs: 代码高亮等布局
bug排查记录
🔍 fd泄露排查
是有地方忘了close了。测试了一会,如下图,貌似没有fd泄露的问题了,但是还有个偶尔段错误还没查出来。
🔍 段错误排查
🔍 url过长:感谢大晚上测试我网站的恶意程序
🔍 url直接访问目录错误修复,同上。
性能测试
用webbench测试了一下,不考虑网速的情况下,一秒能处理1600条请求,写入5000条数据。暂且这样,远超我云服务器网速所能处理的上限了,后续再改进。