利用raspberry pi搭建typecho笔记(一) nginx PHP server quick start

时间:2022-09-22 11:04:04

前言

因为一直对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笔记&lpar;三&rpar; typecho nginx sqlite FAQ

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

  2. 利用raspberry pi搭建typecho笔记&lpar;二&rpar; sqlite和typecho部署

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

  3. 树莓派&lpar;Raspberry Pi&rpar;搭建简单的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 &amp&semi; Nginx &amp&semi; MySQL &amp&semi; PHP &lpar;LEMP&rpar; stack on Raspberry Pi 3&comma;Raspberry Pi 3&comma;LEMP&comma;Nginx&comma;PHP&comma; LEMP &lpar;not LNMP&rpar;

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

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

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

  9. 树莓派(raspberry)启用root账户 分类: 服务器搭建 Raspberry Pi 2015-04-12 18&colon;45 95人阅读 评论&lpar;0&rpar; 收藏

    树莓派使用的linux是debian系统,所以树莓派启用root和debian是相同的. debian里root账户默认没有密码,但账户锁定. 当需要root权限时,由默认账户经由sudo执行,Ras ...

随机推荐

  1. Android Studio Exception汇总

    Android Studio 运行时出现 finished with non-zero exit value 2 错误分析 原因: 项目包含了两个相同包名的不同 project 或者 jar 举例: ...

  2. ZeroMQ之Publish&sol;Subscribe &lpar;Java&rpar;

    前面的文章介绍了比较简单的Request/Subscribe模式, 这篇文章介绍更为经典的Publish/Subscribe通信模式用来ZeroMQ的实现,其通信方式如下图: 客户端(subscrib ...

  3. wifi-sdio接口

    1.sdio接口层解析 SDIO总线 SDIO总线和USB总线类似,SDIO也有两端,其中一端是HOST端,另一端是device端.所有的通信都是由HOST端发送命令开始的,Device端只要能解析命 ...

  4. iOS 获取当前月份的天数&lpar;转&rpar;、

    转:http://www.cnblogs.com/kingbo/p/3966855.html . 获取当前月份有多少天 NSCalendar *calendar = [NSCalendarcurren ...

  5. PHP随机生成指定时间段的指定个数时间

    /** * 生成某个范围内的随机时间 * @param <type> $begintime 起始时间 格式为 Y-m-d H:i:s * @param <type> $endt ...

  6. sqlserver数据库三范式的理解

    从来都是听过概念,过一段时间就忘记了,根本就没有深入的理解.这次梳理一遍,用自己的方式记录一下. 1nf 原子性,不可拆分性 例如一张表里包含一个class属性(软件系,外语系,经贸系...)字段,这 ...

  7. Swift try try&excl; try&quest;使用和区别

    Swift try try! try?使用和区别 一.异常处理try catch的使用 1. swift异常处理 历史由来 Swift1.0版本 Cocoa Touch 的 NSError ,Swif ...

  8. SequoiaDB版本在线升级介绍说明

    1.前言 在SequoiaDB数据库发展过程中,基本保持每半年对外发行一个正式的Release版本.并且每个新发布的Release版本相对老版本而言,性能方面都有很大的提高,并且数据库也会在新版本中加 ...

  9. OJ题

    题目:在字符串中找出连续最长的数字串 #include <stdlib.h> #include <string.h> #include <iostream> #in ...

  10. &period;net Kafka&period;Client多个Consumer Group对Topic消费不能完全覆盖研究总结(二)

    依据Partition和Consumer的Rebalance策略,找到Kafka.Client Rebalance代码块,还原本地环境,跟踪调试,发现自定义Consumer Group 的Consum ...