昨日为了彻底解决 pip, Pyhton2, Python3, yum 等之间的兼容性问题, 便将 CentOS 6 升级成了 CentOS 7. 之后兼容性问题便不再困扰过我. 这某种程度又印证了那句话:

重启能解决大部分问题, 若不行则重装系统.

说得更准确点, 重装系统成了我解决问题的一种方法. 相对于折腾不同版本间的兼容性问题, 或许重装系统要更简单些, 特别是在服务器配置本身就不多的前提下.

以下是我的服务器笔记. 虽然这些问题都不算什么大问题, 但在我这个强迫症重度患者看来, 这些问题是难以忍受的.

环境

装了 lnmpCentos 7 x86_64, 服务器的地理位置是纽约.

rc.local 的命令不完全执行的问题

之前在树莓派初次用 Ubuntu 时就遇过加在 rc.local 的命令不执行的问题, 严格来说是命令不完全执行. 现在将服务器从 CentOS 6 x86 换成 Centos 7 x86_64 后又遇到了同样的问题. 尝试了很多网上的方法, 包括使用命令

chmod +x /etc/rc.d/rc.local

问题也得不到解决. 最后偶然发现, 只要把 rc.local 的第一行改成 !/bin/sh -x, 问题即可完美解决.

这是什么原理?

http 自动跳转到 https

首先你的网站得支持 https 访问, 这点很关键.

把文件

/usr/local/nginx/conf/vhost/grassyiyi.com.conf

中的 listen 80 部分注释掉并改成

server
    {
        listen 80;
        server_name grassyiyi.com www.grassyiyi.com;
        rewrite ^(.*) https://grassyiyi.com$1 permanent;
    }

域名从带 www 跳转到不带 www

这种方法包含了 https 自动跳转.

把文件

/usr/local/nginx/conf/vhost/grassyiyi.com.conf

中相应部分的改成如下.

server
    {
        listen 80;
        server_name grassyiyi.com www.grassyiyi.com;
        rewrite ^(.*) https://grassyiyi.com$1 permanent;
    }
server
    {
        listen 443 ssl http2;
        server_name grassyiyi.com www.grassyiyi.com;
        if ($http_host !~ "^grassyiyi.com") 
        {
        rewrite /.* https://grassyiyi.com$uri permanent;
        }
    ...
    }

将语言环境设置成 UTF-8

若不做这步设置终端的某些中文字符可能无法正常显示. 若只是暂时设置, 只需运行以下命令.

export LC_ALL=en_US.UTF-8; 
export LANG=en_US.UTF-8;

输入 locale 回车可见语言环境已改成 en_US.UTF-8. 若想永久修则将以上两句命令添加到文件 /etc/profile 的最后.

注意, 不推荐把 en_US.UTF-8 换成 zh_CN.UTF-8, 这会使某些习惯英文变成中文. 在我这种强迫症看来, 夹在命令中的中文很丑.

给网站添加目录浏览功能

在网站根目录下创建名为Folder目录, 然后在/usr/local/nginx/conf/vhost/grassyiyi.com.conf中添加

location /Folded {
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
        charset utf-8
        }

这样Folder目录就能直接以grassyiyi.com/Folder的形式访问了. 其中charset utf-8是为了保证中文正常显示.

MathJax 安装在服务器

其实这步某种程度上也是多余的, 因为本来可以直接引用 cdn.mathjax.orgMathJax. 可见将 MathJax 安装在服务器唯一的好处是, 在 cdn.mathjax.org 挂了而服务器却没挂时, MathJax 的数学公式能正常显示. 显然这种事发生的概率几乎为零. 同时, 其中的缺点不是没有, 除了折腾, 还占用了 186M 的服务器空间.

我之所以选择将 MathJax 安装在服务器, 应该纯粹是因为强迫症吧.

先将 MathJax 下载到网站根目录, 并将其解压, 重命名.

cd /home/wwwroot/grassyiyi.com/
wget https://github.com/mathjax/MathJax/archive/master.zip
unzip master.zip
mv MathJax-master/ MathJax

然后再将下面这段添加到主题文件 header.php 的最后.

<script type="text/x-mathjax-config">
      MathJax.Hub.Config({
      extensions: ["tex2jax.js"],
      jax: ["input/TeX", "output/HTML-CSS"],
      tex2jax: {
        inlineMath: [ ['$','$'], ["\\(","\\)"] ],
        displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
        processEscapes: true
      },
      "HTML-CSS": { linebreaks: { automatic: true, width: "container" } }, availableFonts: ["TeX"]
      });
</script>
<script type="text/javascript" src="https://grassyiyi.com/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
  TeX: { equationNumbers: { autoNumber: "AMS" } }
});
</script>

以上代码包括了 equation 环境的自动编号和公式自动断行. 不明白为什么默认情况下是没这两个功能的.

youtube-dlbypy

youtube-dlbypy 配合起来真的很好用. youtube-dl 可以 50M/s 的平均速度将 Youtube 的视频(列表)下载到服务器, bypy 则可用来上传到百度云. 这上传速度相对比较慢, 并且很不稳定. 上传 1G 大约需要一个小时.

youtube-dl 配置(分别代表下载路径及文件名格式, 下载全部字幕, 最佳画质):

-o ~/download_ChJ/%(title)s.%(ext)s
--all-subs
-f 'best'

并将其保存为 /etc/youtube-dl.conf.

更多配置见 youtube-dlbypy 的 github 网页1.


  1. 值得一提的是, 有 github 个名字类似的 Youtube 视频下载软件 youtube-dl-gui, 这跟 youtube-dl 的作者应该不是同一个人. youtube-dl-gui 由于有界面, 用在 Windows 系统还是挺方便的. 另外, 这段脚注应该顶格写, 不然无法正常显示.

标签: none

评论已关闭