身为运维工程师怎么用Nginx部署DokuWiki
运维人员按区域组织,人员分散,集中培训成本比较高; 新入职运维人员除了培训手册,没有其它渠道可以持续深入了解公司产品; 运维人员的知识存在各自脑袋里,缺少有效的渠道来传播和分享; 运维知识体系需要积累,形成公司资产; 选择Wiki系统
最初公司遇到的问题是运维人员经常向研发人员或者上级领导咨询重复回答无数次的问题。我在接手这个需求时,首先想到的是百科系统,类似百度知道。设想是运维人员遇到问题,将问题描述写出来,由其它能解决问题的人(研发或者经验丰富的运维人员)来回答。在这个阶段,我查找了多个百科系统,并尝试安装试用。试用过程中,发现对需求的理解似乎有很大的偏差。运维人员需要的应当是一个运维手册,像汽车那种维修手册一样。百科系统没有严格的目录组织结构,并不适合查阅。Wiki系统比文档系统或百科系统更合适。我找了多个Wiki系统,并做了一番对比:
HDWiki 互动百科
这个是国产的Wiki,宣传做得好,很多文章都推荐他们。但我进入他们官网浏览几个案例后,发现功能复杂花哨,因此直接不予考虑。
MediaWiki
知名大牌Wiki系统。功能很丰富,安装也比较简单,需要数据库服务支持。我不希望Wiki服务跟现在的服务混合在一起。当前服务器环境的mysql数据库已作它用,备份比较稳定,不希望Wiki这个额外的服务插入。
DokuWiki
也是知名Wiki系统,而且是绿色安装。不需要数据库支持是我选择它的主要原因。
安装Nginx
这是凑字数的段落。我维护的服务器上运行好几个服务,Nginx不需要安装。
sudo apt-get install nginx
php环境
讲真,作为个Javaer,PHP这种宇宙第一语言接触不多。
安装PHP:
sudo apt-get install php5-fpm
虽然据说现在都PHP7了,但我并不想浪费时间在PHP新版本可能出现的各个坑上。
PHP我知道,PHP5-FPM是个什么东西还真不知道。万能的Google会给我答案:PHP-FPM 的FPM是 FastCGI Process Manager的缩写,用于管理PHP-CGI的。
配置PHP参数
网上查阅其它教程,有介绍到修改/etc/php5/fmp/php.ini的设置,可以增加安全性。在Nginx的默认PHP配置部分也提到修改这个参数。
sudo vim /etc/php5/fmp/php.ini
修改 fix_pathinfo 的值为0
cgi.fix_pathinfo=0
新安装的PHP5-FPM,需要反注释这行代码,并修改值为 0
Nginx增加PHP支持
将 /etc/nginx/site-avaliable/default 文件拷贝为 /etc/nginx/site-avaliable/dokuwiki 。
将内容修改为:
server { listen 9002 default_server; listen [::]:9002 default_server ipv6only=on; root /var/www/dokuwiki; index index.php index.html; server_name localhost; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location ~ \.php$ { fastcgi_split_path_info^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
修改的条目包括:
端口号 根目录位置 PHP配置
重启nginx就完成PHP环境的配置。
添加一个测试文件 phptest.php :
<%php phpinfo(); ?>
保存到 /var/www/dokuwiki 目录下,在浏览器中打开 http://localhost:9002/phptest.php ,看到PHP信息则说明PHP环境配置成功。
将DokuWiki安装到目录中,其它完成配置。
DokuWiki
DokuWiki是一个小型的Wiki系统,采用文本储存,所有数据都保存到安装目录下的data文件夹中。
目录结构 bin/ DokuWiki的核心代码 conf/ 配置目录 data/ 数据目录 inc/ lib/ vendor/ doku.php index.php install.php data/ 数据目录
数据目录中的 data/pages 是保存所有Wiki文档的目录,DokuWiki会以txt文本的形式将数据储存到此目录中。
conf/ 配置目录
配置目录中的 conf/acl.auth.php 是访问控制的配置文件,哪个组可访问哪些文档,哪个用户不能访问哪些文档等都由此文件控制。
配置目录中的 conf/local.php 是网站的配置文件,包括网站名字、主题、语言等配置。