搭建自己的嵌入式博客服务器(五)Mysql+PHP实现动态博客网站

按照前面的博客搭建步骤,可以在本地搭建一个看起来还不错的个人博客,但是总感觉有些不足。一个是网页都只是“静态的”,也就是说博客里的每一个网页都是事先在本地早就生生成好的,按照hexo的机制,每次更新一个博客都要至少新增两个文件.md文件和一个新的index.html文件,虽然两个文件本身不是很大,但总是感觉有些不友好;另外一个也是最让我难受的就是跟新博文的方式,只能通过markdown的方式新增文件,然后重新生成整个hexo工程,过程很是繁琐。为了解决这两个问题,我决定对博客进行大换血,使用数据库方式存储博文,PHP作为博客的后台处理程序,实现博客的展示,同样实现一个简单的后台管理页面方便我可以随时随地的管理博客内容。

一、mysql数据库的选用

我用过的数据库也就是sql server和mysql了,sql server是window环境下大家常用的数据库,因为有专门的图形化数据库管理工具,所以用起来也是比较简单,功能也比较强大。对比mysql来说,mysql没有官方的数据库管理工具,但是却有小巧灵活的特点,我的本地环境使用linux环境,所以也是选用了mysql作为数据库,为了方便简单的操作,我在window安装了Navicat Premium,可以通过IP的形式远程和图形化管理liunx下面的数据库。
mysql的安装方式,这里就不再详细总结了,CSDN上搜一下,有详细的步骤和配置说明。

二、PHP的简单入门学习

之前在学校的的时候学习过javeEE,jsp之类的一些东西,所以说到搭建动态网页的时候首先想到的是用java搭建,不过当时只是在windows下面搭建的编程和运行环境,如何在linux下面的搭建呢?确实是个问题,在网上找了许久,找到的方法是先在win下面将调试好的程序导出包,把包放到linux对应的java目录下,感觉应该会有更好的方案,不过感觉应该会比较麻烦,最终放弃了使用java的方案。听过PHP是最好的语言,但是一直没有接触过,所以想试下用PHP代替java,网上搜索了下,都说是CI框架比较简单,适合初学者。最终也是使用了PHP的CI框架实现。下面简单记录下CI的几个点:

  1. config目录
    config目录文件是项目的CI配置文件,config/datebase.php可配置项目连接的数据库,ip、用户名、密码等;
  2. model目录
    model目录是数据库处理文件,使用model类与数据库的数据表对应,新建一个表就在model下面新建一个对应的model类,并在对应的类实现底层的数据库操作函数;
  3. view目录
    view目录是前端网页;
  4. controllers目录
    controllers目录是项目的业务处理层,相当于java的serverlet;新增一个页面,都要在controllers目录新增一个对应的业务处理类,因为CI框架的机制是不允许直接访问view目录的网页,访问资源都要先访问controllers目录的资源,由controllers的类加载页面。当然controllers也要处理前端通过post或get方式提交的数据。
  5. libraries目录
    libraries目录是库文件目录,有框架的库定义的类,如果想自定义一个类也要放到这个目录下新增;
  6. CI框架的绝对目录重定向
    由于config.php的默认设置,用户访问时会自定定向到ip/index.php同样浏览器请求资源时的URL也会自动加上inde.php/ 的前缀,这个配置给开发时设置资源访问和链接提交路径时带来了很大的不便,可以通过改变config.php的下面两行
$config['base_url'] = 'locahost';
$config['index_page'] = '';

在CI的根目录下,即在index.php,system的同级目录下,建立.htaccess填充代码如下

RewriteEngine on
RewriteCond $1 !^(index\.php|css|js|img|fonts|editormd|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

之后在每个view下的文件添加

<base href = "<?php echo site_url();?>">

对应的页面就能通过“/”访问到项目路径下的资源了。这样设置之后不仅可以解决上面的问题,而且RewriteCond设置的对应的目录下的资源也可以直接通过URL访问到。

三、从hexo到动态网站

这部分其实就是将原来hexo生成的静态HTML文件,填充php代码和删除冗余的html内容。对于不熟悉前端的新手来说可能有一定的难度。
拿主页为例,主要替换的就是原来的博文部分,博文部分的HTML结构都是一样的,不过是每个博文的标题内容是不同的。通过PHP循环业务层传过来的数组,完成对每个博文的内容赋值即可。

<?php
foreach ($pages as $page)
{
?>
    <p style="font-size: 14px;>
    <?php echo $page->content;?>
    </p>
<?php
}
?>

HTML文本其实比较简单,不过讲解起来也不是一两句话能说清楚的,这里就不详细讲解了,建议有需要的同学还是简单学习下相关的知识,毕竟熟悉之后就可以随意的改动你所看到的页面了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章