centos中nginx配置markdown 编辑器例子

先说一下实现的原理,当然此文章主要讲了我的实现,当然还有其他的实现方式,原理都是差不多的。
首先,我们需要安装kramdown解释器,这个很好理解吧,和php一样,他的特点标签能够实现渲染肯定需要解释器来解析,这里kramdown解释器的官网为http://kramdown.gettalong.org/installation.html,这是安装界面,根据自己的系统安装即可,不过他需要安装ruby依赖。然后我通过nginx的url转发,将.md的文档转发给一个php文件来处理,这个php文件,就调用kramdown解释器来解析对应文档即可。
原理很简单吧,看下具体实现步骤吧,

1、安装kramdown解释器

 代码如下 复制代码

sudo aptitude install ruby rubygems
sudo gem install kramdown

安装完,(ruby可以直接yum安装),可以写一个md的测试文件,使用kramdown命令试一下。
2、制作kramdown解析程序
这里我用的是php,当然也可以用其他语言,只要可以调用linux的system命令即可,当然php安装有的时候会屏蔽这些敏感函数,注意要释放一下。
文件发一下

 代码如下 复制代码
<?php
   $file = @$_GET['file'];
   if(!is_file($file))
   header("HTTP/1.0 404 Not Found");
   header("Content-type: text/html; charset=utf-8");
   date_default_timezone_set('Asia/Shanghai');
   $filename = strrchr($file,'/');
   $filename = ltrim($filename,'/');
   $odir = rtrim($file,$filename);
?>
<head>
<title><?php echo $filename;?></title>
<link href="/github-59da74dcbe2f1d555e306461652274f8741238a64e7b1fe8cc5a286232044835.css" media="all" rel="stylesheet" type="text/css">
<link href="/github2-22a0054564248c6dd87336e91bca068b1ab49e28ee1062519b3a0722d29da804.css" media="all" rel="stylesheet" type="text/css">
</head>
<body>
<div class="header header-logged-in true" role="banner">
  <div class="container clearfix">
    <a class="header-logo-invertocat" href="/" data-hotkey="g d" aria-label="Homepage" ga-data-click="Header, go to dashboard, icon:logo">
</a>
 
      <ul class="header-nav left" role="navigation">
        <li class="header-nav-item explore">
          <a class="header-nav-link" href="/" data-ga-click="Header, go to explore, text:explore">站点首页</a>
        </li>
        <li class="header-nav-item">
            <a class="header-nav-link" href="/archives/category/lovephp/" data-ga-click="Header, go to gist, text:gist">我爱php</a>
          </li>
          <li class="header-nav-item">
            <a class="header-nav-link" href="/archives/category/tj/" data-ga-click="Header, go to gist, text:gist">推荐文章</a>
          </li>
          <li class="header-nav-item">
            <a class="header-nav-link" href="/xiangce/" target="_blank" data-ga-click="Header, go to blog, text:blog">相册</a>
          </li>
          <li class="header-nav-item">
            <a class="header-nav-link" href="/flink/" data-ga-click="Header, go to blog, text:blog">兄弟链</a>
          </li>
        <li class="header-nav-item">
          <a class="header-nav-link" href="/message/" data-ga-click="Header, go to help, text:help">关于我</a>
        </li>
      </ul>
  </div>
</div>
<div class="container">
    <div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container="">
    <div class="file-wrap">
      <table class="files" data-pjax="">
        <tbody>
        <?php
            $dir = opendir($odir);
            while (($f = readdir($dir)) !== false){
                if('.' !=$f && '..' != $f){
                $href = $f;
                $type = 'File';
                if(is_dir($odir.$f)){
                    $href = $f.'/index.md';//目录的话默认访问里面的index.md
                    $type = 'Dir';
                }
                $time = date('Y-m-d H:i:s',filemtime($odir.$f));
        ?>
            <tr>
              <td class="icon">
              </td>
              <td class="content">
                <span class="css-truncate css-truncate-target"><a href="<?php echo $href;?>" class="js-directory-link" title=""><?php echo $f;?></a></span>
              </td>
              <td class="message">
                <span class="css-truncate css-truncate-target">
                <?php echo $type;?>
                </span>
              </td>
              <td class="age">
                <span class="css-truncate css-truncate-target"><?php echo $time;?></span>
              </td>
            </tr>
            <?php
                }
            }
            ?>
        </tbody>
      </table>
    </div>
        <div class="file-box">
           <div class="file">
            <div class="meta clearfix">
              <div class="info file-name">
                  <span><?php echo $filename;?></span>
              </div>
            </div>
            <div id="readme" class="blob instapaper_body">
                <article class="markdown-body entry-content" itemprop="mainContentOfPage">
                <?php
                   echo system('/usr/bin/kramdown  '.$file);
                ?>
                </article>
            </div>
           </div>
        </div>
    </div>
</div>
</body>

实现了一些简单的文件遍历和样式,这个可以随意制作,我是用的github的样式

3、nginx配置url重写

当然这里就根据自己的喜好了,当然也可以制作soket服务,不过php毕竟做服务的话不太好,还有配合shell监控,所以不如直接使用url重写了

 代码如下 复制代码

location ~ ^(.+\.md)(.*) {
          rewrite .* /md.php?file=$document_root$fastcgi_script_name last;
}

4、另外

最后在nginx的web服务加上个默认页

index index.html index.htm index.php index.md default.html default.htm default.php;

这样就可以默认访问index.md文件了
这样就实现了自己网站的markdown文件解析了,以后可以写md文档了

时间: 2024-09-21 10:52:20

centos中nginx配置markdown 编辑器例子的相关文章

PHP中如何配置FCKeditor编辑器及上传图片

FCKeditor官网:http://ckeditor.com/ FCKeditor下载:http://ckeditor.com/download 点击去我的CSDN下载 在使用PHP开发留言板.CMS.博客时都涉及文本信息的处理,如何将信息优美地展现在读者面前是PHP网站开发建设者所追求的,而在线编辑器实现了可视化的功能,最早PHP网站开发者都是使用UBB来实现文本信息的展现功能,之后出现了类似于WORD的在线编辑器,今天和大家介绍的是老牌在线编辑器Fckeditor在PHP环境中安装配置与使

Centos中nginx+rsync+inotify实现负载均衡配置

实验环境 前端nginx:ip 192.168.6.242,对后端的wordpress网站做反向代理实现负载均衡 后端nginx:ip 192.168.6.36,192.168.6.205都部署wordpress,并使用相同的数据库 1.安装rsync和inotify 在后端的两个wordpress上配置rsync+inotify,两服务器都开启rsync服务,并且通过inotify分别向对方同步数据 下面配置192.168.6.205这台服务器 vim /etc/rsyncd.conf  ui

CentOS中Nginx+Apache+MySQL+PHP+Tomcat的配置教程(支持PHP、JAVA)

先来看CentOS6.4+Apache-2.2.22+Mysql-5.1.63+PHP-5.2.17+phpmyadmin-3.4.10.2+ZendDebug环境安装 LAMP安装手记(CentOS6.4+Apache-2.2.22+Mysql-5.1.63+PHP-5.2.17+phpmyadmin-3.4.10.2+ZendDebug)  代码如下 复制代码 rpm -e httpd rpm -e mysql rpm -e php yum -y remove httpd php mysql

CentOS中nginx负载均衡和反向代理的搭建

1: 修改centos命令行启动(减少内存占用): vim /etc/inittab     id:5:initdefault:  --> 修改5为3  若要界面启动使用 startx 2:安装jdk 1)解压:jdk-7u55-linux-i586.tar.gz        [root@localhost jdk]# tar -zxvf jdk-7u55-linux-i586.tar.gz 2)复制:[root@localhost jdk]# cp -rf jdk1.7.0_55/ /usr

CentOS中如何配置VNC Server

主要参考文档: 中文:http://wiki.centos.org/zh/HowTos/VNC-Server 英文:http://wiki.centos.org/HowTos/VNC-Server 描述很规范.全面. 记录下安装过程中知识点/要点: 1.linux是一个内核,需安装一个窗口管理员来取得一个正常的图像式桌面.举个例说,你可以用 yum groupinstall "GNOME Desktop  Environment" 这个指令来安装 Gnome 桌面及所需的组件.其它受欢

centos中安装配置redis和php-redis教程

centos安装redis的shell脚本 #!/bin/sh #http://zggsdy.blog.163.com/blog/static/28782049201331825523781/ cd /web/soft/php if [ -d "redis-2.8.13" ];then rm -rf redis-2.8.13 fi tar xzvf redis-2.8.13.tar.gz cd redis-2.8.13 make make install sed -n '/daemon

centos中Nginx安装Pydio基本设置详解

目前有好多的云存储的服务,如百度云.360云.Dropbox之类,虽然国产的云提供了大空间存储,但是总是有点怪异,目前百度云在下载方面出现了限速的行为,非要开通会员才能全速下载,弄得几百兆的宽带只能以200kb的速度下载,非常的不舒服. Dropbox和OneDrive都是国外的云服务,还有GoogleDrive之类,虽然给的空间比较小,但也都是良心之作,Dropbox算是我用的最好用的存储服务了.但就是需要配合SS用,OneDrive虽然在国内可用,但是用不习惯.  国外云存储 前段时间在网络

centos中Nginx 安装ssl证书步骤

先说下https也就是ssl证书,一般我们认为https是安全的,但是SSL 证书的信用链体系并不安全.特别是在某些国家(咳咳,你们懂的)可以控制 CA 根证书的情况下,中间人攻击一样可行.另外,在客户端被植入无数后门.木马的状况下,HTTPS 连接的作用非常有限.   我不使用的原因 更换https和替换域名代价是一样的又拍云不支持自定义域名https好了,我们可以开始配置ssl了.一般来说我比较推荐namecheap的ssl证书,因为比较便宜,毕竟对大部分个人博客来说只是想要那个绿锁提升逼格

Centos中安装配置apache2+php5+memecache

部分使用yum安装,需要下载的如下: apr,apr-util,pcre,httpd,php5,eAccelerator 首先使用yum安装一下依赖程序:  代码如下 复制代码 yum install gd zlib-devel freetype libjpeg* libpng* php-gd libxml2 libxml2-devel curl-devel openssl-devel php-mysql 由于本机没有安装mysql,php想要连接mysql的话必须安装mysql客户端,这里安装