背景

近几年来,自己断断续续的使用了很多VPS,学习了Linux的简单操作,学习了html,css,js,php等网络相关的东西,在进一步的使用远程服务器中,我接触了如何申请域名,如何CDN,如何使用Nginx做代理服务器实现自己编写的html脚本。

随着使用的深入,我想了解目前主流的网站是如何实现的,通过搜索,我发现Dajango的存在,由于之前有学习Python的基础知识,所以我很快学会了Dajango的使用,也在自己VPS上用Nginx,uwsgi托管了Dajango代码,看到网络上自己的网站第一次实现,真的有一种成就感。

有一个自己的blog一直是我的目标,之前想过使用Dajango来做,但是通过查找,发现相应的开源项目很少,所以一直没有去做,此事就一直耽搁了下来,近些天工作上的事情比较轻松,于是我又一次着手查找解决方案,发现了一个比较好的解决方案:PHP-MySQL-Typecho


关于Tpeocho

Typecho是一款免费开源的动态博客系统,运行在PHP环境下,界面简洁干净是他的特点。
文章支持markdown语法,很方便排版。
官网:http://typecho.org/

安装环境要求:

  • PHP 5.1以上
  • Mysql, PostgreSQL, SQLite 任意一种数据库支持,并在PHP中安装了相关扩展
  • CURL或者Socket扩展支持
  • mbstring或者iconv扩展支持

开始搭建

系统环境:ubantu14.04

安装Nginx

我使用的是Nginx代理,所以第一步安装nginx。

apt 安装:

apt-get update
apt-get install nginx

也可以从官网安装最新版,安装教程参考:https://niekun.net/index.php/archives/30.html

编辑配置文件:

vim /etc/nginx/nginx.conf

user 改为 www-data:

user  www-data;

在server段添加如下代码:

server {
    listen                80;
    listen                [::]:80;
    server_name           your.domain;
    keepalive_timeout     70;

    root                  /www/path;
    index                 index.html index.htm;

    location / {
        try_files         $uri $uri/ =404;
    }
}

启动服务:

service nginx reload
service nginx start

添加开机启动:

vim /etc/init.d/rc.local

在文件最后添加:

sudo service nginx start

访问你的域名,如果显示Nginx欢迎画面表示Nginx搭建成功。

在nginx.conf文件里定义的root目录编写测试index.html文件,刷新页面查看是否显示自定义页面。

如果一直显示nginx欢迎画面可能是:/etc/nginx/sites-enable/defalut需要删掉默认的配置

安装PHP

我安装的是PHP5.6版

apt-get install php5.6-fpm php5.6-mysql

修改php.ini:

find / -name php.ini
vim /etc/php/5.6/fpm/php.ini

文本内搜索

/cgi.fix_pathinfo

修改字段

cgi.fix_pathinfo=0 ;设置为1可能会引起安全问题。

修改www.conf:

vim /etc/php/5.6/fpm/pool.d/www.conf

listen.owner = www-data
listen.group = www-data

重启php-fpm服务

service php5.6-fpm restart

配置Nginx的php

打开nginx.conf

server段内修改如下

index                          index.php index.html index.htm;

location / {
    try_files                  $uri $uri/ =404;
}

location ~ [^/]\.php(/|$) {
    try_files $fastcgi_script_name =404;
    fastcgi_split_path_info ^(.+?\.php)(.*)$;
    fastcgi_pass unix:/run/php/php5.6-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

location ~ /\.ht {
    deny all;
}

重启nginx服务

service nginx reload
service nginx restart

测试php是否代理成功,在网站root目录新建文件index.php,访问主页。

<?php
    phpinfo();
?>

如果显示access denied可能是权限问题

  • nginx 和php-fpm不再一个用户下运行,查看上面的说到的配置(默认都是www-data)

    • ps -aux | grep nginx
    • ps -aux | grep php
  • 网站目录权限不对

    • chmod -R 755 /www/path
    • chown -R www-data /www/path

安装MySQL

apt-get install mysql-server

安装会自动创建一个root用户,期间会提示创建用户密码

进入MySQL

mysql -uroot -p....

创建数据库(每条命令行尾加分号;)

create database blog; 
grant all privileges on blog.* to "root"@"localhost" identified by "password"; 
show databases;
quit;

安装Typecho

进入网站根目录

cd /www/path

下载源码并解压,我下载的是开发板

git clone https://github.com/typecho/typecho.git
mv typecho/. /www/path

浏览器访问:domain.you/install.php开始安装,一步步跟随提示就OK了。
MySQL部分输入上面创建的密码和数据库名。

以上就是 Typecho 的安装过程,期间遇到访问 其他页面 404 的问题,通过修改 cgi.fix_pathinfo=1 临时解决了,但是有安全隐患,后通过学习 FastCGI 详细资料,通过修改 nginx config 中 php 的 location 段解决了问题。

关于 fastCGI 参考我的 wordpress 安装教程:https://niekun.net/index.php/archives/204.html

标签:typecho

2 条评论

  1. ha ha

    makedown --> markdown

  2. marco marco

    已修复

你的评论