本 Wiki 开启了 HTTPS。但由于同 IP 的 Blog 也开启了 HTTPS,因此本站必须要支持 SNI 的浏览器才能浏览。为了兼容一部分浏览器,本站保留了 HTTP 作为兼容。如果您的浏览器支持 SNI,请尽量通过 HTTPS 访问本站,谢谢!
这是本文档旧的修订版!
一些个人网站环境配置及常见问题记录。
References:
使用以下命令则可以查看:
cat /root/amh.log
MYSQL 在重启服务器时不能启动,尝试以下方法:
删除 my.inf
。
cd /etc/
rm my.inf
单IP的多个虚拟主机只需要一个 SSL证书即可。配置步骤:
amh.sh/ssl.htm
上申请证书,申请的时候将所有虚拟主机的域名输入。amhssl
中添加。Rreferences:
将下列规则添加到 AMH 的 rewrite
模块中:
location / {
index doku.php;
try_files $uri $uri/ @dokuwiki;
}
#caching: warning: will cause picture 404 problem if your wiki is running in rewrite mode 1.
location ~ ^/lib.*\.(gif|png|ico|jpg)$ {
expires 30d;
}
#dir safety
location ^~ /conf/ { return 403; }
location ^~ /data/ { return 403; }
#rewrite
Location @dokuwiki {
# rewrites "doku.php/" out of the URLs if you set the userewrite setting to .htaccess in dokuwiki config page
rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
rewrite ^/(.*) /doku.php?id=$1&$args last;
}
Dokuwiki URL Rewrite 与以下代码冲突:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$ {
expires 30d;
}
而 AMH 的 nginx.conf
需要到所建立的环境下的 vhost
目录下找对应虚拟主机的文件(一般是以 域名.conf
格式的 conf
文件)。找到以后然后将里面的该段代码注释掉。如果用了 Https, 则同时需要注释掉 HTTPS 版本的 conf
文件。
该段代码用于防止除 conf
和 data
以外的重要文件本下载。
使用:添加以下代码到 rewrite
模块中:
# Block access to data folders
location ~ /(data|conf|bin|inc)/ {
deny all;
}
# Block access to .htaccess files
location ~ /\.ht {
deny all;
}
解决方法:进入服务器的 php.ini
配置文件,添加或修改以下设置:
always_populate_raw_post_data = -1
如果使用 Nginx 对 Dokuwiki 进行 Leverage browser caching,会导致被缓存的图片无法在媒体管理器以及正文中显示。该问题出现在从 Apache 迁移到 Nginx 的过程中,怀疑是 Nginx 本身对 Dokuwiki 的支持不佳。
解决方法(过时):由于 AMH 的
Nginx.conf
自带 caching,需要手动去 /yourwebdir/vhost/yourweb.conf
将如下的缓存规则删除。
解决方法:使用新版本的重写规则,请参见前面。
Nginx 版本的通用优化代码如下:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}
location ~* \.(pdf)$ {
expires 30d;
}
一些 Typecho 的改造 / 使用 问题收集。
在 AMH 中开启 pathinfo
插件的支持即可。
Typecho 可以针对当前用户是否是管理员来添加额外的样式。一个简单的应用例子如下:
首先我们需要官方帮助文档中的自定义函数。该函数用于判断当前评论用户是否为管理员,通过 AuthorId
和 ownerid
是否相等来判断:
<?php function threadedComments($comments, $options) {
$commentClass = '';
if ($comments->authorId) {
if ($comments->authorId == $comments->ownerId) {
$commentClass .= ' comment-by-author'; //如果是文章作者的评论添加 .comment-by-author 样式
} else {
$commentClass .= ' comment-by-user'; //如果是评论作者的添加 .comment-by-user 样式
}
}
$commentLevelClass = $comments->_levels > 0 ? ' comment-child' : ' comment-parent'; //评论层数大于0为子级,否则是父级
?>
/* 自定义评论的代码结构 */
<?php } ?>
comment-by-author
或者 comment-by-user
:
<li id="li-<?php $comments->theId(); ?>" class="comment-body<?php
if ($comments->levels > 0) {
echo ' comment-child';
$comments->levelsAlt(' comment-level-odd', ' comment-level-even');
} else {
echo ' comment-parent';
}
$comments->alt(' comment-odd', ' comment-even');
echo $commentClass;
?>">
<span class="comment-author<?php echo $commentClass; ?>"><?php $comments->author(); ?></span>
上面的代码直接把 $commentClass
,也就是我们要额外附加的样式表加入了 comment-author
这个样式里。如果是管理员,那么调用的样式表就是 .comment-author.comment-by-author
,否则就是 .comment-author.comment-by-user
。
最后去 CSS 里添加样式表即可:
.comment-author.comment-by-author {background: #636363;padding: 5px;}
Typecho 默认的时间输出格式是 PHP 的格式。如果我们希望将其转换为“发表于多久多久之前” 的格式,可以通过以下的手段来实现:
首先我们需要往 function.php
中添加一个时间重写函数:
//时间转换输出
function timesince($older_date,$comment_date = false) {
$chunks = array(
array(86400 ,C并编辑 ''comments.php''。</del>
\\
<WRAP round tip 60%>
新版本不再使用 jquery。
</WRAP>
\\
\\
在 ''comments.php'' 中加入 如下 JS 代码:
<code js>
<script>
var disqus_loaded = false;
function load_disqus()
{
disqus_loaded = true;
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = "https://codinghare.disqus.com/embed.js";
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
}
window.onscroll = function(e) {
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
//hit bottom of page
if (disqus_loaded==false){ load_disqus() };
}
};
</script>
embed.js
的地址为自己的 Disqus地址(直接替换 shortname 即可)。
<div id="disqus_thread"></div>
Flarum 自己带一个子目录 public
作为论坛的首页目录。很多网上的教程建议直接重写 vhost 中的 root 路径,但 AMH 对此似乎并不友好。另外一种办法是通过面板建立子域主机来重新定向域名的根目录到 public
。举个例子,如果需要指定域名 domain.com 到该目录,需要修改的如下:
127.0.0.1
到父主机/public
.nginx.conf
(位于父主机网站根目录下),可参考官方安装帮助。
$chown www:www -R /home/wwwroot/环境/domain/域名/web/
如果遇到以下的错误:
flarum Something went wrong: SQLSTATE[42000]: Syntax error or access violation: 1286 Unknown storage engine 'InnoDB'
需要到 MAadmin
- 参数设置
中打开 InnoDB
的开关。
如果出现 http 访问正常 而 https 访问 403 的情况,需要到 config.php
做如下修改:
//default
http://yourdomain.com
//change to
https://yourdomain.com