Scripts

php74

直接安装(CentO7.6 下)

sudo yum install epel-release
# 安装 EPEL 软件包
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# 安装 remi 源
sudo yum install yum-utils
# 安装 yum 扩展包
sudo yum-config-manager --enable remi-php74
sudo yum update
# 启用 remi 仓库
sudo yum install php74
# 安装 PHP7.2
sudo yum install php74-php-fpm php74-php-gd php74-php-json php74-php-mbstring php74-php-mysqlnd php74-php-xml php74-php-xmlrpc php74-php-opcache
# 安装 php-fpm 和一些其他模块
sudo systemctl enable php74-php-fpm.service
# 设置开机自启

依赖(以下为 Ubuntu 20.04 下)

sudo apt install libsystemd-dev libsqlite3-dev libbz2-dev libcurl4-openssl-dev libenchant-dev libgd-dev libgmp-dev libc-client2007e-dev libkrb5-dev libkrb5-3 libonig-dev libzip-dev

Configure

./configure --prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/ --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-fpm-systemd --with-openssl --with-external-pcre --with-pcre-jit --with-zlib --enable-bcmath --with-bz2 --enable-calendar --with-curl --with-enchant --enable-exif --with-ffi --enable-ftp --with-openssl-dir --enable-gd --with-external-gd --with-webp --with-jpeg --with-xpm --with-freetype --enable-gd-jis-conv --with-mhash --without-iconv --with-gmp --with-gettext --with-imap --with-imap-ssl --enable-intl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-sockets --with-xmlrpc --with-xsl --with-zip --enable-mysqlnd --with-iconv --enable-inline-optimization --enable-shared --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-pcntl --enable-soap --enable-session --enable-opcache --enable-fast-install --with-kerberos

其他

service 文件的 ProtectSystem 应当设置为 false,否则会挂载 /usrRead Only

phpmyadmin 需要将 localhost 修改为 127.0.0.1,因为 localhost 使用 socket 连接,而 127.0.0.1 使用 tcp/ip 连接,如果是 localhost,需要配置 phpmysqlsocket 的位置,使用 find / -name 'mysql.sock' 或者 find / -name 'mysqld.sock' 获得。

Nginx

依赖

sudo apt install gcc g++ libpcre2-dev libpcre3-dev libssl-dev lib32z1-dev lib32z1 libxslt-dev make
sudo apt install make vim

Configure

--prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=www --group=www --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --with-http_dav_module --add-module=../dav/

Systemd 服务

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)"

[Install]
WantedBy=multi-user.target

ipv6

服务器内核开启 ipv6 支持,nginx 使用 listen [::]:80; 然后开放端口,然后路由器支持 ipv6,然后浏览器使用中括号括起来后访问。

只有首页不 404

加入 try_files $uri $uri/ /index.php?$query_string; 或许能解决(导致原因为 /index.php/ 被识别为目录)。

WordPress

安装前便捷操作

cp wp-config-sample.php config.php
vim config.php

可以直接替换数据库名,数据库密码等信息,跳过开始的安装部分。

还可以加入一些指令,例如

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

以强制在安装过程以及后续的 admin 开启 https,该开启方法不影响网页的呈现。

子主题

新建一个主题文件夹,再新建 style.css(引入父主题的样式表),写入 Template 和 Theme Name 就可以完成了。

注意若副主题的 cdn 的 url 引入了 version,则需要加上 Version 属性。例如

/*
 Theme Name:   argon child
 Template:     argon
 Version:      1.1.7
*/

@import url("../argon/style.css");

Typecho 404

一般的 nginx 的 .conf 文件时这样的

location ~ .*\.php$

要改成这样的

location ~ .*\.php(\/.*)*$

老版本的还要打开 php.ini 里的

cgi.fix_pathinfo = 1

MathJax

网页

在使用 LateX 时,可以使用 \\ 表示换行,但是在 MathJax3 中,这只表示一个 \,因此需要 \\\\ 来表示换行。对于 \left\{ 等同理。

微信公众号

(MathJax 3.1.2)需要开启 svg 渲染,然后关闭 fontcache,然后关闭用来做 accessibility 的 assistiveMml。

配置文件需要的修改如下

<script>
  MathJax = {
    svg: {
      fontCache: "none",
    },
    options: {
      renderActions: {
        assistiveMml: [],
      },
    },
  };
</script>
<script async src="https://cdn.jsdelivr.net/npm/mathjax@3.1.2/es5/tex-svg.js"></script>

HTML

上下居中

一般使用的 static 无法确定上下位置,因此父元素应当设置为非 static,然后子元素设置为 absolute,再为子元素加上 top: 0px; bottom: 0px; margin-top: auto; margin-bottom: auto; 即可。

此外还有一个从这里看到的方法

parentElement{
    position:relative;
}
childElement{
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}

左右居中的话,加上 lefttranslateX 即可。

大概意思就是 top 使得 childElement 向下移动父元素一半的位置,再用 transform 向上移动自己的一半,就到了居中的位置。

table 上下居中

table 的外面再加一个 table,然后用 tdvalign 来控制居中,注意外面的 table 要设置 width:100%;height:100%

CSS

伪类顺序

a 元素的伪类顺序要求 hover 要在 linkvisited 后面,active 要在 hover 后面。

Ubuntu

apt-get install --print-uris wpasupplicant 可以查看包和依赖包的 url

setterm --blank 1 每分钟自动关闭屏幕。

acme.sh

注意 dns 检测使用的是 dns.google,因此建议加上 -–dnssleep <timesec> 指定等待一段时间后直接进行申请。

此外由于默认域名遭到污染,需要添加以下 hosts。

175.45.42.217 ocsp.int-x3.letsencrypt.org

然后在 nginx 中添加

ssl_stapling on; #开启OCSP
ssl_stapling_verify on; #开启OCSP验证
ssl_trusted_certificate /[用户名]/.acme.sh/sakunight.xyz/fullchain.cer; #验证证书路径

参考