在CentOS 7上使用Nginx和Lets Encrypt SSL 安装Dokuwiki

时间:2020-02-23 14:31:09  来源:igfitidea点击:

本指南将引导我们逐步完成在Nginx后面安装Dokuwiki并在CentOS 7 Linux上进行加密的步骤。但是在进行任何安装之前,我假设我们有一台新配置的CentOS 7 Linux服务器,在设置Dokuwiki之前,我们需要先进行一些准备工作。

设置服务器主机名

sudo hostnamectl set-hostname wiki.mydomain.com

更新系统并安装开发工具

建议确保所有系统软件包都已更新:

sudo yum -y update
sudo yum -y install git vim bash-completion curl wget unzip tar

重新启动服务器以使新更改(如内核)生效:

sudo reboot

为PHP 7.x添加epel和Remi存储库

重启后服务器启动后,继续安装所有必需的php模块,包括Nginx使用的php fpm。但是首先,我们需要向系统中添加epelremi存储库:

sudo yum install epel-release yum-utils
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum makecache fast
sudo yum-config-manager --disable remi-php54
sudo yum-config-manager --enable remi-php72

安装php 7和nginx

通过运行以下命令来安装php 7:

sudo yum -y install php-cli php-fpm php-mysql php-zip php-ldap php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath

这应该提供DokuWiki所需的所有模块。检查php版本:

# php -v
PHP 7.2.10 (cli) (built: Sep 11 2016 11:22:20) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2016 Zend Technologies

下载Dokuwiki,并将其解压缩到文档根目录

在下载任何版本的DokuWiki之前,请检查Github版本页面以获取最新的稳定版本。在撰写本文时,最新的稳定版本是" release_stable_2017-07-29"。

export RELEASE="2017-07-29"
wget https://github.com/splitbrain/dokuwiki/archive/release_stable_$RELEASE.tar.gz

使用tar提取DokuWiki存档

tar xvf release_stable_${RELEASE}.tar.gz
sudo mkdir -p /var/www/html/
sudo mv dokuwiki-release_stable_${RELEASE} /var/www/html/dokuwiki

将"/var/www/html/dokuwiki"的所有权更改为" www-data"用户和组。

sudo chown -R nginx:nginx /var/www/html/dokuwiki/

安装Letsencrypt并请求新证书

我们将使用certbot-auto请求SSL证书。通过下载二进制软件包并将其放在/use/local/bin目录中来安装它:

sudo wget https://dl.eff.org/certbot-auto -P /usr/local/bin
sudo chmod a+x /usr/local/bin/certbot-auto

下载完成后,如果我们有活动的防火墙服务,请打开防火墙上的http和https端口:

sudo firewall-cmd --add-service {http,https} --permanent
sudo chmod a+x /usr/local/bin/certbot-auto

然后获得证书:

export DOMAIN="wiki.example.com"
export EMAIL="youremailaddress"
certbot-auto certonly --standalone -d $DOMAIN --preferred-challenges http --agree-tos -n -m $EMAIL --keep-until-expiring

启用nginx服务以在启动时启动:

sudo systemctl enable nginx

配置Nginx

创建新的配置文件:

sudo vim /etc/nginx/conf.d/dokuwiki.conf

添加以下内容,进行修改以适合用例。用域名替换wiki.mydomain.com。

server {

listen 443 ssl;
 server_name wiki.mydomain.com;
 root /var/www/html/;

access_log /var/log/nginx/dokuwiki.access.log;
 error_log /var/log/nginx/dokuwiki.error.log;

ssl on;
 ssl_certificate /etc/letsencrypt/live/wiki.mydomain.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/wiki.mydomain.com/privkey.pem;
 ssl_session_timeout 5m;
 ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL';
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;

index index.html index.php doku.php;

location/{
 try_files $uri $uri/@dokuwiki;
 }

location @dokuwiki {
 rewrite ^/_media/(.*) /lib/exe/fetch.php?media= last;
 rewrite ^/_detail/(.*) /lib/exe/detail.php?media= last;
 rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_&id= last;
 rewrite ^/(.*) /doku.php?id= last;
 }

location ~ /(data|conf|bin|inc)/{
 deny all;
 }

location ~* \.(css|js|gif|jpe?g|png)${
 expires 1M;
 add_header Pragma public;
 add_header Cache-Control "public, must-revalidate, proxy-revalidate";
 }

location ~ \.php${
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
 fastcgi_index index.php;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_intercept_errors off;
 fastcgi_buffer_size 16k;
 fastcgi_buffers 4 16k;
 }

location ~ /\.ht {
 deny all;
 }
}

server { 
 listen 80;
 server_name wiki.mydomain.com;
 add_header Strict-Transport-Security max-age=2592000;
 rewrite ^ https://wiki.mydomain.com$request_uri? permanent;
}

配置php-fpm并启动nginx/php-fpm

现在我们已经配置了nginx,让我们也配置php-fpm。打开文件:

sudo vim /etc/php-fpm.d/www.conf

按指定在文件上配置以下参数:

user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
启动并启用Nginx,php-fpm
sudo systemctl start php-fpm nginx
sudo systemctl enable php-fpm

在CentOS 7上配置DokuWiki

通过打开以下链接开始DokuWiki配置:https://wiki.mydomain/install.php,我们将获得如下安装页面:

http://mydomain.com/install.php

初始ACL策略下提供管理用户详细信息,从以下一项中选择策略:打开Wiki对所有人开放对所有所有人公开Wiki读取,对注册用户进行上传和编辑仅对注册用户关闭Wiki访问

检查我们是否要"允许用户注册自己"

完成后,单击保存。 Wiki页面现在应该准备好了。

单击新的DokuWiki进入DokuWiki主页。

将用户添加到DokuWiki

如果我们选择了Closed Wiki |公开作为ACL策略,我们将获得登录页面以进行编辑。使用我们先前创建的管理员帐户登录,以开始将其他用户添加到系统中:

点击页面顶部的Adminicon,这将带我们进入管理页面:

单击用户管理器以获取添加用户页面:

添加用户详细信息,然后单击添加按钮。添加用户后,可以在"访问控制列表管理"页面上分配ACL。

从给定的权限中选择。