本 Wiki 开启了 HTTPS。但由于同 IP 的 Blog 也开启了 HTTPS,因此本站必须要支持 SNI 的浏览器才能浏览。为了兼容一部分浏览器,本站保留了 HTTP 作为兼容。如果您的浏览器支持 SNI,请尽量通过 HTTPS 访问本站,谢谢!
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
other:website:misc [2022/06/24 11:48] – 创建 codinghare | other:website:misc [2024/02/04 16:17] (当前版本) – [Disqus loading on scroll] codinghare | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ======常è§è¿ç»´é®é¢===== | + | ======常见运维问题===== |
- | ä¸äºä¸ªäººç½ç«ç¯å¢é ç½®å常è§é®é¢è®°å½ã | + | 一些个人网站环境配置及常见问题记录。 |
---- | ---- | ||
====AMH==== | ====AMH==== | ||
- | Referencesï¼ | + | References: |
- | * [[https:// | + | * [[https:// |
- | ===AMH | + | ===AMH |
- | 使ç¨ä»¥ä¸å½ä»¤åå¯ä»¥æ¥çï¼ | + | 使用以下命令则可以查看: |
<code bash> | <code bash> | ||
cat / | cat / | ||
</ | </ | ||
- | ===MySQLæ æ³èªå¨å¯å¨=== | + | ===MySQL无法自动启动=== |
- | MYSQL å¨éå¯æå¡å¨æ¶ä¸è½å¯å¨ï¼å°è¯ä»¥ä¸æ¹æ³ï¼ | + | MYSQL 在重启服务器时不能启动,尝试以下方法: |
\\ | \\ | ||
\\ | \\ | ||
- | å é¤ | + | 删除 |
<code bash> | <code bash> | ||
cd /etc/ | cd /etc/ | ||
rm my.inf | rm my.inf | ||
+ | </ | ||
+ | ==PID file not found== | ||
+ | <code bash> | ||
+ | #error msg | ||
+ | ERROR! MySQL server PID file could not be found! | ||
+ | </ | ||
+ | 这种情况多半是硬盘空间满了导致系统强制结束了 mysql 的进程。用下面的命令之后再重启一下 mysql 进系统看看。 | ||
+ | <code bash> | ||
+ | rm -f / | ||
</ | </ | ||
- | ===SSL | + | ===SSL |
- | ==SSLå¤èæ主æº== | + | ==SSL多虚拟主机== |
- | åIPçå¤ä¸ªèæ主æºåªéè¦ä¸ä¸ª SSLè¯ä¹¦å³å¯ãé ç½®æ¥éª¤ï¼ | + | 单IP的多个虚拟主机只需要一个 SSL证书即可。配置步骤: |
- | - å¨ | + | - 在 '' |
- | - å°å¾å°çè¯ä¹¦å¨ | + | - 将得到的证书在 |
- | - å¶å®èªå¨æ´æ°ççç¥ã | + | - 制定自动更新的策略。 |
====Dokuwiki==== | ====Dokuwiki==== | ||
- | Rreferencesï¼ | + | Rreferences: |
* [[https:// | * [[https:// | ||
- | ===Dokuwiki Nginx Rewrite | + | ===Dokuwiki Nginx Rewrite |
- | å°ä¸åè§åæ·»å å° | + | 将下列规则添加到 |
<code nginx> | <code nginx> | ||
行 62: | 行 71: | ||
} | } | ||
</ | </ | ||
- | ==Dokuwiki | + | ==Dokuwiki |
- | Dokuwiki URL Rewrite | + | Dokuwiki URL Rewrite |
<code nginx> | <code nginx> | ||
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$ { | location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$ { | ||
行 69: | 行 78: | ||
} | } | ||
</ | </ | ||
- | è | + | 而 AMH 的 '' |
- | ===Dokuwiki Nginx å®å ¨è§å=== | + | ===Dokuwiki Nginx 安全规则=== |
- | 该段代ç ç¨äºé²æ¢é¤ | + | 该段代码用于防止除 |
\\ | \\ | ||
- | 使ç¨ï¼æ·»å 以ä¸ä»£ç å° | + | 使用:添加以下代码到 |
<code nginx> | <code nginx> | ||
# Block access to data folders | # Block access to data folders | ||
行 86: | 行 95: | ||
} | } | ||
</ | </ | ||
+ | ===所有 MIMe 类型=== | ||
+ | [[https:// | ||
+ | ===Dokuwiki 使用=== | ||
- | ===Dokuwiki 使ç¨=== | + | * 插件的安装:直接到后台的插件管理器中寻找指定的插件下载安装即可。 |
- | * æ件çå®è£ ï¼ç´æ¥å°åå°çæ件管çå¨ä¸å¯»æ¾æå®çæ件ä¸è½½å®è£ å³å¯ã | + | ==常用插件== |
- | ==常ç¨æ件== | + | |
- | + | * Code Prettifier:非常好用的代码高亮。 | |
- | | + | * Edittable |
- | * Code Prettifierï¼é常好ç¨ç代ç é«äº®ã | + | * Fastwiki |
- | * Edittable | + | * Google Document Viewer |
- | * Fastwiki | + | * MathJax |
- | * Google Document Viewer | + | * Pure SVG Insert:使 |
- | * MathJax | + | * DokuWiki |
- | * Pure SVG Insertï¼ä½¿ | + | * Wrap:很好用的内容排版插件。 |
- | * DokuWiki | + | ===Dokuwiki |
- | * Wrapï¼å¾å¥½ç¨çå 容æçæ件ã | + | ==Dokuwiki |
- | ===Dokuwiki | + | 解决方法:进入服务器的 |
- | ==Dokuwiki | + | |
- | 解å³æ¹æ³ï¼è¿å
¥æå¡å¨ç | + | |
<code php> | <code php> | ||
always_populate_raw_post_data = -1 | always_populate_raw_post_data = -1 | ||
</ | </ | ||
- | ====æå¡å¨éç¨å端ä¼å==== | + | ==Igor 版本 svg 缩放不正确== |
+ | <WRAP center round important 100%> | ||
+ | 官方 issue 中解释该设置是一个 guard,不应修改。推荐对指定插件进行修改。 | ||
+ | </ | ||
+ | 将 ''/ | ||
+ | <code css> | ||
+ | width: 1.2em; | ||
+ | </ | ||
+ | 替换为 | ||
+ | <code css> | ||
+ | width: auto; | ||
+ | </ | ||
+ | |||
+ | ====服务器通用前端优化==== | ||
===Leverage browser caching=== | ===Leverage browser caching=== | ||
- | <del>å¦æä½¿ç¨ | + | <del>如果使用 |
- | < | + | < |
- | < | + | < |
- | 解å³æ¹æ³ï¼ä½¿ç¨æ°çæ¬çéåè§åï¼è¯·åè§åé¢ã | + | 解决方法:使用新版本的重写规则,请参见前面。 |
</ | </ | ||
行 123: | 行 146: | ||
\\ | \\ | ||
\\ | \\ | ||
- | **Nginx** | + | **Nginx** |
<code nginx> | <code nginx> | ||
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { | location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { | ||
行 136: | 行 159: | ||
====Typecho==== | ====Typecho==== | ||
- | ä¸äº | + | 一些 |
- | ===åå° | + | ===后台 |
- | å¨ | + | 在 AMH 中开启 |
- | ===Typecho | + | ===Typecho |
- | ==è¯è®ºï¼æ·»å é¢å¤æ ·å¼ç»ç®¡çå== | + | ==评论:添加额外样式给管理员== |
- | Typecho | + | Typecho |
\\ | \\ | ||
\\ | \\ | ||
- | é¦å
æ们éè¦å®æ¹å¸®å©ææ¡£ä¸çèªå®ä¹å½æ°ã该å½æ°ç¨äºå¤æå½åè¯è®ºç¨æ·æ¯å¦ä¸ºç®¡çåï¼éè¿ | + | 首先我们需要官方帮助文档中的自定义函数。该函数用于判断当前评论用户是否为管理员,通过 |
<code php> | <code php> | ||
<?php function threadedComments($comments, | <?php function threadedComments($comments, | ||
行 153: | 行 176: | ||
if ($comments-> | if ($comments-> | ||
if ($comments-> | if ($comments-> | ||
- | $commentClass .= ' comment-by-author'; | + | $commentClass .= ' comment-by-author'; |
} else { | } else { | ||
- | $commentClass .= ' comment-by-user'; | + | $commentClass .= ' comment-by-user'; |
} | } | ||
} | } | ||
- | $commentLevelClass = $comments-> | + | $commentLevelClass = $comments-> |
?> | ?> | ||
- | /* èªå®ä¹è¯è®ºç代ç ç»æ | + | /* 自定义评论的代码结构 |
<?php } ?> | <?php } ?> | ||
</ | </ | ||
\\ | \\ | ||
- | æ¥ä¸æ¥ä¼éè¿ä¸æ®µå½æ°å°å¢å çæ ·å¼è¡¨æå°åºæ¥ï¼ç»ææ¯ | + | 接下来会通过一段函数将增加的样式表打印出来,结果是 |
<code php> | <code php> | ||
<li id=" | <li id=" | ||
行 178: | 行 201: | ||
</ | </ | ||
\\ | \\ | ||
- | æäºè¿ä¸¤æ®µå½æ°ä»¥åï¼å©ä¸çå·¥ä½å°±å¾ç®åäºã以æè¦æ¿æ¢ç®¡çåå¨è¯è®ºä¸ååçèæ¯ä¸ºä¾ãé¦å
å°æå°åºæ¥çå段åºç¨å° | + | 有了这两段函数以后,剩下的工作就很简单了。以我要替换管理员在评论中名字的背景为例。首先将打印出来的字段应用到 |
<code php> | <code php> | ||
<span class=" | <span class=" | ||
</ | </ | ||
- | ä¸é¢ç代ç ç´æ¥æ | + | 上面的代码直接把 |
\\ | \\ | ||
\\ | \\ | ||
- | æåå» | + | 最后去 |
<code css> | <code css> | ||
.comment-author.comment-by-author {background: | .comment-author.comment-by-author {background: | ||
</ | </ | ||
- | ==è¯è®ºï¼éåå表è¯è®ºæ¶é´== | + | ==评论:重写发表评论时间== |
- | Typecho | + | Typecho |
\\ | \\ | ||
\\ | \\ | ||
- | é¦å
æ们éè¦å¾ | + | 首先我们需要往 |
<code php> | <code php> | ||
- | //æ¶é´è½¬æ¢è¾åº | + | //时间转换输出 |
function timesince($older_date, | function timesince($older_date, | ||
$chunks = array( | $chunks = array( | ||
行 213: | 行 236: | ||
if (($count = floor($since / $seconds)) != 0) break; | if (($count = floor($since / $seconds)) != 0) break; | ||
} | } | ||
- | /*å¦ææ¯ä¸æåä¸éè¦ | + | /*如果是中文则不需要 |
if ($count == 1) { | if ($count == 1) { | ||
$output = $count.' | $output = $count.' | ||
行 221: | 行 244: | ||
} | } | ||
</ | </ | ||
- | è¿ä¸ªå½æ°ä¼è·å以åçæ¶é´ä½ä¸ºåæ%ld(dsq); | + | 这个函数会获取以前的时间作为参数,并转换成相应的字段,我们只需要拿到 '' |
+ | <code php> | ||
+ | <?php echo timesince($comments-> | ||
+ | </ | ||
+ | ==评论:回复评论自带@跳转== | ||
+ | 首先到 '' | ||
+ | <code php> | ||
+ | // | ||
+ | function get_comment_at($coid) | ||
+ | { | ||
+ | $db = Typecho_Db:: | ||
+ | $prow = $db-> | ||
+ | | ||
+ | $parent = $prow[' | ||
+ | if ($parent != " | ||
+ | $arow = $db-> | ||
+ | | ||
+ | $author = $arow[' | ||
+ | $href = '<a href="# | ||
+ | echo $href; | ||
+ | } else { | ||
+ | echo ''; | ||
+ | } | ||
+ | } | ||
+ | // | ||
+ | function get_filtered_comment($coid){ | ||
+ | $db = Typecho_Db:: | ||
+ | $rs=$db-> | ||
+ | | ||
+ | $content=$rs[' | ||
+ | echo $content; | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | \\ | ||
+ | 再到 '' | ||
+ | <code linenums: | ||
+ | <?php get_comment_at($comments-> | ||
+ | </ | ||
+ | ==添加自定义html标签到文章内容== | ||
+ | 找到文件夹 ''/ | ||
+ | ===Typecho 升级指南=== | ||
+ | |||
+ | //Typecho// 可以通过以下方式来进行升级: | ||
+ | |||
+ | - 下载最新的版本:[[https:// | ||
+ | - 删除服务器上三个目录的文件,如果修改了源代码可以使用 //Github// 的对比工具来进行合并。三个目录分别是:''/ | ||
+ | - 上传最新的对应文件即可。 | ||
+ | |||
+ | ===Typecho URL重写=== | ||
+ | |||
+ | ==Apache 重写规则== | ||
+ | 添加如下代码到 '' | ||
+ | <code apache> | ||
+ | < | ||
+ | RewriteEngine On | ||
+ | RewriteBase / | ||
+ | RewriteCond | ||
+ | RewriteCond %{REQUEST_FILENAME} !-d | ||
+ | RewriteRule ^(.*)$ index.php [L, | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===InstantClick=== | ||
+ | |||
+ | '' | ||
+ | |||
+ | ==安装InstantClick== | ||
+ | |||
+ | 下载 [[http:// | ||
+ | \\ | ||
+ | \\ | ||
+ | 在 '' | ||
+ | <code js> | ||
+ | ... | ||
+ | <script src=" | ||
+ | <script data-no-instant> | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==点击时候的预加载== | ||
+ | |||
+ | 默认情况下是在鼠标悬停到链接上方即开始加载,有时候这样会带来服务器的额外开销问题。将 '' | ||
+ | < | ||
+ | InstantClick.init(' | ||
+ | </ | ||
+ | |||
+ | ==修改预加载条的颜色== | ||
+ | |||
+ | 在样式表中加入如下代码即可: | ||
+ | <code css> | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | ==与 PrismJS兼容== | ||
+ | |||
+ | 先对 '' | ||
+ | \\ | ||
+ | \\ | ||
+ | 打开 '' | ||
+ | <code html js> | ||
+ | < | ||
+ | </ | ||
+ | 改为: | ||
+ | <code html> | ||
+ | <script data-no-instant> | ||
+ | </ | ||
+ | 找到 '' | ||
+ | <code html> | ||
+ | <script src="' | ||
+ | </ | ||
+ | 改为: | ||
+ | <code html> | ||
+ | <script src="' | ||
+ | </ | ||
+ | 找到 '' | ||
+ | <code html> | ||
+ | <script defer=" | ||
+ | </ | ||
+ | 改为: | ||
+ | <code html js> | ||
+ | <script defer=" | ||
+ | </ | ||
+ | \\ | ||
+ | 再修改位于 '' | ||
+ | <code js> | ||
+ | if (typeof Prism !== ' | ||
+ | var pres = document.getElementsByTagName(' | ||
+ | for (var i = 0; i < pres.length; | ||
+ | if (pres[i].getElementsByTagName(' | ||
+ | pres[i].className | ||
+ | Prism.highlightAll(true, | ||
+ | </ | ||
+ | PHP 部分: | ||
+ | <code php> | ||
+ | {<? | ||
+ | </ | ||
+ | 对判断插件是否使用了行号。如果没启用插件,会导致网站 **505** 错误。 | ||
+ | \\ | ||
+ | \\ | ||
+ | 如果不使用行号,直接使用以下代码: | ||
+ | <code php> | ||
+ | if (typeof Prism !== ' | ||
+ | </ | ||
+ | |||
+ | ===Mathjax=== | ||
+ | ==mathjax 3 简单配置== | ||
+ | <code js> | ||
+ | MathJax = { | ||
+ | showProcessingMessages: | ||
+ | messageStyle: | ||
+ | tex: { | ||
+ | inlineMath: [ [" | ||
+ | displayMath: | ||
+ | processEscapes: | ||
+ | }, | ||
+ | svg: { | ||
+ | fontCache: " | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ==igor 版本的缩放问题== | ||
+ | 添加以下代码到 ''/ | ||
+ | <code cpp> | ||
+ | mjx-container[jax=" | ||
+ | height: auto; | ||
+ | width: auto; | ||
+ | } | ||
+ | </ | ||
+ | ==Mathjax与InstantClick不兼容== | ||
+ | |||
+ | 在 '' | ||
+ | < | ||
+ | if (typeof MathJax !== ' | ||
+ | </ | ||
+ | ==Mathjax的直接添加== | ||
+ | |||
+ | 在 '' | ||
+ | <code html> | ||
+ | <script type=" | ||
+ | MathJax.Hub.Config({ | ||
+ | extensions: [" | ||
+ | jax: [" | ||
+ | tex2jax: { | ||
+ | inlineMath: [ [' | ||
+ | displayMath: | ||
+ | processEscapes: | ||
+ | }, | ||
+ | |||
+ | " | ||
+ | }); | ||
+ | </ | ||
+ | <script type=" | ||
+ | | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP center round info 100%> | ||
+ | 近日 //MathJax// 自营 CDN 已经停止服务,需自行寻找相关 CDN。 | ||
+ | </ | ||
+ | \\ | ||
+ | ==Mathjax按需加载== | ||
+ | 首先在 '' | ||
+ | <code php> | ||
+ | <?php $GLOBALS[' | ||
+ | </ | ||
+ | 接着到 Mathjax.js 调用的地方设置条件(我的是'' | ||
+ | <code php> | ||
+ | <?php if($GLOBALS[' | ||
+ | < | ||
+ | <script type=" | ||
+ | <?php endif;?> | ||
+ | </ | ||
+ | |||
+ | ==Mathjax不显示加载信息== | ||
+ | 在 '' | ||
+ | <code js> | ||
+ | showProcessingMessages: | ||
+ | messageStyle: | ||
+ | </ | ||
+ | |||
+ | ===Disqus=== | ||
+ | |||
+ | ==Disqus loading on scroll== | ||
+ | |||
+ | < | ||
+ | \\ | ||
+ | <WRAP round tip 60%> | ||
+ | 新版本不再使用 jquery。 | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | \\ | ||
+ | 在 '' | ||
+ | <code js> | ||
+ | < | ||
+ | var disqus_loaded = false; | ||
+ | |||
+ | function load_disqus() | ||
+ | { | ||
+ | disqus_loaded = true; | ||
+ | var dsq = document.createElement(' | ||
+ | dsq.src = " | ||
+ | (document.getElementsByTagName(' | ||
} | } | ||
行 233: | 行 499: | ||
</ | </ | ||
\\ | \\ | ||
- | 注ææ¿æ¢ | + | 注意替换 |
\\ | \\ | ||
\\ | \\ | ||
- | html è°ç¨ï¼ | + | html 调用: |
<code html> | <code html> | ||
<div id=" | <div id=" | ||
</ | </ | ||
- | \\ | + | |
- | \\ | + | |
====Flarum==== | ====Flarum==== | ||
- | ===è§£å³ | + | ===解决 |
- | Flarum | + | Flarum |
- | - | + | - |
- | - ç»å® | + | - 绑定 |
- | - ç»å®åç®å½ä¸å¡«å | + | - 绑定子目录中填写 |
- | - å¨å主æºä¸å
å« | + | - 在子主机中包含 |
- | ===Flarum | + | ===Flarum |
<code bash> | <code bash> | ||
- | $chown www:www -R / | + | $chown www:www -R / |
</ | </ | ||
===InnodB=== | ===InnodB=== | ||
- | å¦æéå°ä»¥ä¸çéè¯¯ï¼ | + | 如果遇到以下的错误: |
>flarum Something went wrong: SQLSTATE[42000]: | >flarum Something went wrong: SQLSTATE[42000]: | ||
- | éè¦å° | + | 需要到 |
===https 403=== | ===https 403=== | ||
- | å¦æåºç° | + | 如果出现 |
<code cpp> | <code cpp> | ||
//default | //default |