这一个月来做的一个电影下载网站项目总结
Date:2016-4-6 13:51:36 By:0x584A
前言
这一个月没发生什么大事吧,首先就是把之前的工作辞了,去了漏洞盒子面试被项目经理虐趴了。惨~~~开始严重怀疑人生... 随后'一蹶不振'在家一个月给人做网站,顺带休息(瞎扯淡,一个月根本没出门好吗!)。最后到手的钱呢,才够买两包烟。哎~明天开始出门找工作。
说说收获吧,将《Web全栈工程师的自我修养》及《代码之髓》阅读完了,收获良多,等有个时间写下读后感。
1. 项目架构
购了两台服务器,一台阿狸的用于mysql服务器,随便又买个一台Web服务器(怕阿狸不让架设这类型的站点)。
现在网站还在备案当中,可以预览此地址查看:http://103.24.176.18:81/
服务器系统均为Debian8,Web服务则是Nginx,PHP框架选用的是ThinkPHP,数据库老样子是MySQL(本来打算在加个memcache缓存,最终协商在以后的版本中单独做。当然,如果有以后的话)。
值得一提的是,我在网站的后台管理中,采用了Bootstrap前端框架,算是一边学习一边运用至项目中吧。其好处就是,我不需要去花太多时间在视图的布局及调试上,通过及自带的组件与全局CSS就能实现。
同样的,虽然优点很多,却有得有失。
类似我这种后端程序员在使用时,如果想定制些好看的样式,那么必须具备良好的CSS基础(推荐书记:禅意花园),能在Bootstrap的样式上进行扩展,或更改。
因为本上掉用组件就需要jQuery库的支持,所以在控制页面DOM的时候基本无差别。
最终的结果是,后台比前台好看.. 额~
2. 用到的技术
整站从后端,前端到运维,都是我一个人独立完成的,总的来说成就感棒棒哒。
-
前端的技术优化
- 线上环境压缩了js及css源文件体积,图片显示用了延迟加载
- 服务器端开启了Gzip压缩
- 在后台运行了AJAX进行数据的CURD操作。(因为前台的用户交互操作较少,所以并没运用上AJAX技术)
-
将网站静态资源放置另一台服务器上(该功能最终没做,其用途是减少对当前Web服务器的HTTP请求处理)
-
后端的技术优化
- 源生ThinkPHP框架的文件缓存,及uri优化
- MySql针对每条sql做了索引优化
- 在数据库服务器上定时脚本备份数据库数据
- 定时清理ThinkPHP工作缓存目录(通过计时任务及PHP脚本实现)
数据库定时备份脚本(因为ThinkPHP的数据库链接账号是降权用户,所有该脚本都是在服务器上运行,mysqlhotcopy只能在服务器上运行,远端用户并没有该权限!)
<?php
// 定时脚本 每天三点半执行脚本
// 30 3 * * * php /home/mysqlbak/mysqlbak.php
// 获取当前时间 用于创建文件夹及保存文件
$bakDate = date('Ymdhis',time());
$bakDay = date('Ymd',time());
// 新建当天的文件夹
exec("mkdir {$bakDay} && cd {$bakDay} && mkdir Database && mkdir TableSql && mkdir DataSql");
// 备份表结构
exec("mysqldump -u账号 -p密码 -d 数据库名称 > {$bakDay}/TableSql/{$bakDate}.sql");
// 备份表及数据
exec("mysqldump -u账号 -p密码 数据库名称 > {$bakDay}/DataSql/{$bakDate}.sql");
// 完整备份数据库 运行在mysql服务器上
exec("mysqlhotcopy -u账号 -p密码 数据库名称 {$bakDay}/Database/");
Nginx的配置项如下:
server {
# 指定端口及IP冲突
listen 80 default_server;
listen [::]:80 default_server;
# 项目目录地址
root /home/xjiek/www/dy;
# 默认首页显示页面
index index.html index.htm index.php;
# 网站域名 默认请求127.0.0.1
server_name _;
# 站点显示编码集
charset utf-8;
# 重定向至服务器文件
location /Public/ {
alias /home/xjiek/www/dy/Public/;
}
location /public/ {
alias /home/xjiek/www/dy/Public/;
}
location /upload/ {
alias /home/xjiek/www/dy/upload/;
}
# 图片缓存30天 用户浏览器缓存
location ~.*\.(jpg|png|jpeg)$
{
expires 30d;
}
#js css缓存一小时 用户浏览器缓存
location ~.*\.(js|css)?$
{
expires 1h;
}
# ThinkPHP 请求重写 用于忽略入口文件
location / {
index index.php index.html index.html;
try_files $uri $uri/ /index.php?s=$uri;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 不启用.htaccess文件配置
location ~ /\.ht {
deny all;
}
}