这一个月来做的一个电影下载网站项目总结

这一个月来做的一个电影下载网站项目总结

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. 用到的技术

整站从后端,前端到运维,都是我一个人独立完成的,总的来说成就感棒棒哒。

  1. 前端的技术优化

    • 线上环境压缩了js及css源文件体积,图片显示用了延迟加载
    • 服务器端开启了Gzip压缩
    • 在后台运行了AJAX进行数据的CURD操作。(因为前台的用户交互操作较少,所以并没运用上AJAX技术)
    • 将网站静态资源放置另一台服务器上(该功能最终没做,其用途是减少对当前Web服务器的HTTP请求处理)
  2. 后端的技术优化

    • 源生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;
    }
}