前言

因为一直对linux学习很有兴趣,就拿手头的树莓派做了实验,搭建一个简易的php服务器用来跑typecho.

但是过程却是异乎寻常的艰辛,几乎每一步能卡住得地方都卡住了.而且typecho的资料相对于WordPress来说,本来又比较少,所以使得问题解决的过程也有些艰辛.

首先是树莓派系统的选择,虽然说官方系统选择很多,但是启动速度较慢,而且对于移动硬盘之类的外设的支持也不算好.毕竟也没人真的把树莓派当个纯博客VPS之类的东西使用,还是需要考虑实用性,所以在这里向大家推荐RaspNAS这款系统,对于各种移动外设都有比较好的支持,优点如下:

1.轻量,RaspNAS的镜像大小小于2G,启动后占用的内存非常少.

2.快速,启动速度相比于它基于的raspbian要快很多.

3.他的后台是基于nginx和php的,不仅提供了一个直观的web后台用于监视raspberry pi的运行状况,并且也为我们配置网页减少了困难,事实上他有一个已经配置好的网页环境,在他原先的版本里面并不支持离线下载,我直接将yaaw clone到/var/www就可以直接访问了.

环境配置

要配置typecho运行的基本环境,我们需要如下一些东西,数据库,nginx服务器,和php环境和一些插件.本着轻量的原则,我们并不选用过于庞大的mysql,而是使用轻量的sqlite.

nginx配置

首先安装nginx

此处参考了Ducky Pond博客里的<How to setup a web server with Nginx/PHP on Raspberry Pi>这篇文章,原文连接在此

执行

 sudo apt-get install nginx

等待安装结束之后可以进行测试.

 sudo service nginx start

可以看到service start的提示,然后用树莓派的内网IP进行访问,如果看到页面的话,就说明nginx的安装成功了.

nginx的默认的静态web网站路径为:usr/share/nginx/www ,这并不符合linux的惯例,通常应该为var/www

我们可以对此进行修改,首先创建这个目录.

 sudo mkdir /var/www

显然,仅仅有这样一个目录是不够的,我们还需要告诉nginx,我们将网页存储在了这个目录.这就需要更改nginx的配置文件.

不过,在此之前,我们需要了解一下nginx配置文件是如何工作的.

先看一下nginx的目录结构.

 cd /etc/nginx/
ls

结果如下

conf.d          koi-win      naxsi_core.rules  scgi_params      uwsgi_params
fastcgi_params mime.types nginx.conf sites-available win-utf
koi-utf naxsi.rules proxy_params sites-enabled

因为nginx可以建立多个虚拟主机,从而允许一个服务器装载多个网页,而每个虚拟主机都对应着一个配置文件.

而在用红色标出的两个文件夹,就是用来存储和启用这些配置文件的.

在sites-enabled文件夹中,是nginx启动时加载配置文件的文件夹,这里面存储的是类似于快捷方式的东西,他们指向了sites-available文件夹中对应的配置文件(symlink).也就是说,sites-available是存储所有配置文件的文件夹,而需要启用的这些配置文件的话,只需要在sites-enabled中做出标记即可.

那么首先,我们禁用默认的叫做default的配置文件.来阻止nginx将 /usr/share/nginx/www作为网站目录.

 sudo service nginx stop
sudo unlink /etc/nginx/sites-enabled/default

接下来我们在sites-available目录中新建配置文件.(假如你不习惯使用vim或者还没有安装vim的话,也可以用nano等替代,或者参考我之前的博文,使用sublime text的sftp插件来编辑配置文件)

 sudo vim /etc/nginx/sites-available/mysite

写入如下配置

server {
listen ;
root /var/www;
index index.html index.htm;
}

这个配置文件的意义是,新建一个server,用来监听80端口上的请求,这个服务器的根目录为/var/www , index的文件名为index.html或者index.htm,如果想要更详细的配置,可以访问这个页面,给出了完整的nginx配置文档.

保存退出,再启用这个配置文件.

 cd /etc/nginx/sites-enabled
sudo ln -s ../sites-available/mysite
sudo service nginx start

这样大功告成,我们可以放入一个测试用的html到/var/www查看效果.

配置PHP环境

在这里nginx只是作为一个反向代理和静态网页服务器,类似于PHP这样的动态网页,nginx并不能执行,所以我们还需要PHP服务器用来处理PHP网页中的代码,并将结果返回给nginx回报给访问者.而在网页服务器和php服务器之间通信的技术有几种,除了Apache以外,还有FastCGI,在这里,我们选择使用FastCGI来进行通信的程序PHP-FPM,以及一个PHP插件apc,用来优化PHP的表现.(事实上,为了让typecho能够正常运作,我们仍然需要安装PHP和sqlite通信的程序,为了让本文更有条理,这一部分将会在数据库配置部分进行说明.)

首先安装

 sudo apt-get install php5-fpm php-apc

假如您需要安装sqlite来用来配置typecho,可以执行

 sudo apt-get install php5-fpm php5-sqlite sqllite

当安装结束之后,fpm应该会自动开始运行,不过为了让apc插件能够被加载运作,我们需要让他重新启动一下.

 sudo service php5-fpm restart

然后我们在更改原先的nginx配置文件,让nginx知道应该把PHP请求送到哪里去处理.打开刚刚配置的/etc/nginx/sites-available/mysite文件,加入PHP处理部分的示例代码.

server {
listen ;
root /var/www;
index index.php index.html index.htm; location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}

这样一个最简单的PHP服务器就已经配置完成了.我们可以新建一个最简单的PHP文件用来测试这个服务器.

在/var/www/目录中新建一个PHP文件,比如myweb.php

写入如下内容

<?php
phpinfo();
?>

重启nginx服务来加载配置文件.

sudo service nginx restart

测试网页192.168.1.00/myweb.php 其中192.168.1.100是你的树莓派的内网IP,假如可以看到页面,那么配置就已经完成了.不过需要注意的是,typecho因为涉及到rewrite的问题,需要支持pathinfo,所以他的配置文件并不能写成最简单的

location ~ .*\.php$

而是要改成

location ~ .*\.php(\/.*)*$

这样就可以完成typecho安装的nginx环境配置了.

利用raspberry pi搭建typecho笔记(一) nginx PHP server quick start的更多相关文章

  1. 利用raspberry pi搭建typecho笔记(三) typecho nginx sqlite FAQ

    前言 这是一个汇总文,用来总结我在整个配置过程中遇到的各种问题.因为我在解决这些问题的过程中发现,typecho被部署在这种需要完全自己配置的平台上的情况是比较少的,相关的资料也比较少,所以我的解决过 ...

  2. 利用raspberry pi搭建typecho笔记(二) sqlite和typecho部署

    sqlite概述 typecho可以支持MYSQL和Sqlite两种数据库,因为Sqlite更为轻量,并且不需要额外的进程,而是直接对数据库文件进行读取,所以配置相对于MySQL也更为简单,仅需指定数 ...

  3. 树莓派(Raspberry Pi)搭建简单的lamp服务

    树莓派(Raspberry Pi)搭建简单的lamp服务: 1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php ...

  4. 用Raspberry Pi搭建Azure IOT解决方案

    Raspberry Pi是一款基于Linux的单板机电脑.它由英国的树莓派基金会所开发,目的是以低价硬件及自由软件刺激在学校的基本计算机科学教育.树莓派配备一枚博通(Broadcom)出产的ARM架构 ...

  5. 2014年基于Raspberry Pi的5大项目

    2014年基于Raspberry Pi的5大项目   Raspberry Pi(即树莓派)是一款基于Linux系统(Debian.ArchLinux)的单板机计算机,它只有一张信用卡大小,可用于电子表 ...

  6. Raspberry Pi 学习笔记之一

    记录几个搭建服务器教程: [教程] 将树莓派变成网络打印机服务器(更新PC和手机端设置)!http://www.eeboard.com/bbs/thread-8818-1-1.html[心得] [分享 ...

  7. How To Install Linux & Nginx & MySQL & PHP (LEMP) stack on Raspberry Pi 3,Raspberry Pi 3,LEMP,Nginx,PHP, LEMP (not LNMP)

    1.   How To Install Linux & Nginx & MySQL & PHP (LEMP) stack on Raspberry Pi 3         R ...

  8. 我的树莓派 Raspberry Pi Zero 2W 折腾笔记,记录一些遇到的问题和解决办法

    0x00 前言说明 最近买了一块Raspberry Pi Zero 2W来玩,目的是想搭建一台远程运行的个人服务器,上面放个博客.点个灯啥的.于是就有了这篇文章. 树莓派官网地址:https://ww ...

  9. 烂泥:使用nginx利用虚拟主机搭建WordPress博客

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 最近开始打算学习nginx web服务器,既然是学习还是以实用为目的的.我们在此以搭建WordPress博客为例. 搭建WordPress博客,我们需要 ...

随机推荐

  1. cf C. Cupboard and Balloons

    http://codeforces.com/contest/342/problem/C #include <cstdio> #include <cstring> #includ ...

  2. DJANGO的HTTPRESPONSE流式输出

    在项目当中遇到的问题,网上有样例代码,但都不行,后来,发现在了1.5版本之后,新的STREAMHTTPRESPONSE对象, 搞定. from django.http import HttpRespo ...

  3. structs2使用小结2

    回顾之前做过类似structs2的知识点总结 Structs2历史.处理流程及与1.0版本的区别 Structs2配置文件.拦截器.校验等 EL表达式在JS中使用 ${}El表达式不能直接在单独JS文 ...

  4. Uiviewcontroller 控制器的生命周期

    这是一个ViewController完整的声明周期,其实里面还有好多地方需要我们注意一下: 1:initialize函数并不会每次创建对象都调用,只有在这个类第一次创建对象时才会调用,做一些类的准备工 ...

  5. Block 代替for循环

    NSDictionary *aDictionary = [[NSDictionary alloc]initWithObjectsAndKeys:", nil]; [aDictionary e ...

  6. java类加载器行为[笔记]

    1. Java虚拟机使用第一个类的第一件事情就是将该类的字节码装进来,装载类字节码的功能是由类装器完成的,类半遮器负责根据一个类的名称来定位和生成类的字节码数据后返回给Java虚拟机. 2. 类装载器 ...

  7. [Git] set-upstream

    When you want to push your local branch to remote branch, for the first push: git push --set-upstrea ...

  8. Coreseek:常见的问题2

    1.failed to lock XXXXX.spl档 这是当你构建的指数将是一个问题,您不必打开searchd服务关闭,既然你开searchd维修,他将建立呼叫xxx.spl临时文件,施工时的指数会 ...

  9. HDU 1085 Holding Bin-Laden Captive! (母函数)

    Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Ja ...

  10. Qt快速入门系列教程目录

    Qt快速入门系列教程目录