WordPress 禁用feeds订阅

我用的百度BCE搭建的该站点,这天它检查我的站点后,告知我一个安全隐患,吓我一跳,赶紧解决啊

因何而起

百度检查我的站点发现一个安全隐患:

http://blog.itjsz.com/?cat=http%3A%2F%2Fcirt.net%2Frfiinc.txt&feed=rss2

其实呢,这就是一个rss订阅功能,作为一个小博主,没有必要。

设置

这里可以限制feed输出,但不能完全限制。

wordpress setting

插件禁用

有个插件 disable feeds

disable feeds

好久没更新了,不知能用不。

手动改代码

这里需要改动,你正在使用的主题文件。

<?php
// WordPress/wp-content/themes/xxx/function.php
function wpjam_disable_feed() {
    wp_die(__('<h1>本博客不再提供 Feed,请访问网站<a href="'.get_bloginfo('url').'">首页</a>!</h1>'));
}
add_action('do_feed',      'wpjam_disable_feed', 1);
add_action('do_feed_rdf',  'wpjam_disable_feed', 1);
add_action('do_feed_rss',  'wpjam_disable_feed', 1);
add_action('do_feed_rss2', 'wpjam_disable_feed', 1);
add_action('do_feed_atom', 'wpjam_disable_feed', 1);

没有生效,尝试切换主题,多刷新试试。

Mac Homebrew 使用

HomeBrew 是 MacOS 上使用非常广泛的包管理工具. 他有着自由开放特点,广受喜爱。作为程序员,它太好用了,必须学会使用brew

是什么

HomeBrew 是 MacOS 上使用非常广泛的包管理工具. 他有着自由开放特点,广受喜爱。

好比 Debian 上的 apt-get, CentOS 上的 yum。

安装

## 官方推荐的默认安装方式
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

## 手动安装方式
$ mkdir homebrew && curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

试试看,安装好没有。

## 检查版本
$ brew -v

通过brew安装的文件会自动设置环境变量,所以不用担心命令行不能启动的问题。 比如安装好了gradle,即可运行 gradle -v。

包管理

HomeBrew 软件的命令入口是 brew.

注意,使用HomeBrew软件不要加上sudo权限,哪怕是有报错,或者提示没有权限覆盖系统自带软件,也不要加sudo!

## 检查版本
$ brew -v

## 帮助
$ brew --help

## 安装一个软件
$ brew install wget

## 卸载软件
$ brew uninstall wget

## 通过 *.rb 文件的方式安装软件,如:mpv
$ wget https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/mpv.rb
$ brew install ./mpv.rb

## 搜索软件 vim
$ brew search vim

升级软件

## 升级 HomeBrew
$ brew update

## 升级所有已过时的软件,(这里软件指,通过brew安装的软件)
$ brew upgrade

## 指定升级某个软件
$ brew upgrade python

## 升级所有软件包,包裹未清理干净的旧版本包
$ brew upgrade --all
  • 不让某些包的升级
## 锁住 git,不让其更新
$ brew pin git

## 解锁 git
$ brew unpin git

卸载 & 清理

## 清理所有旧版本的软件包
$ brew cleanup

## 
$ brew cleanup -n

## 清理具体的一个包 node
$ brew cleanup node

## 强制卸载,不管依赖
$ brew unistall <fromula> --force

## 移除软件包
$ brew remove <fromula> 

查看

HomeBrew 安装的软件会放到文件夹 /usr/local/Cellar/ 下.

## 查看已安装列表
$ brew list

## 查看一个具体软件信息, 如 nginx
$ brew info nginx

## 查看各个包的依赖关系
$  brew deps

## 查看已安装的包的依赖,树形显示
$ brew deps --installed --tree

通过依赖关系,就能知道哪些包还在使用。

为 HomeBrew 软件,新增图标

$ brew linkapps mpv

HomeBrew 管理

自检

如果你的 Hombrew 没有办法正常的工作,你可以执行 brew doctor 来开启 Homebrew 自带的检查,从而确认有哪些问题,并进行修复。

服务

诸如 Nginx、MySQL 等软件,都是有一些服务端软件在后台运行,如果你希望对这些软件进行管理,可以使用 brew services 命令来进行管理

好比是 Linux 上的 systemctl

## 查看所有服务
$ brew services list

## 单次运行某个服务 nginx
$ brew services run nginx

## 运行某个服务,并设置开机自动运行。 sleepwatcher
$ brew services start sleepwatcher 

## 停止某个服务 nginx
$ brew services stop nginx

## 重启某个服务 nginx
$ brew services restart nginx

HomeBrew 加速

换源

  • 中科大 镜像
cd "$(brew --repo)"
git remote set-url origin git://mirrors.ustc.edu.cn/brew.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin git://mirrors.ustc.edu.cn/homebrew-core.git
  • 清华大学 镜像
git -C "$(brew --repo)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

网络代理

brew支持全局socks代理,使用前打开终端,加上这一句:


$ export ALL_PROXY=socks5://127.0.0.1:port ## 或者仅这条命令使用代理 $ ALL_PROXY=socks5://127.0.0.1:port brew upgrade

结语

(完)

PHP Opcache 使用

Opcache 是PHP上简单好用,立马见效的优化神器,鸟哥都推荐,那我也要用啊。

Opcache 介绍

Opcache 呢。它的目标是提供一个自由、 开放,和健全的框架用于缓存和优化PHP的中间代码。

OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。

PHP 5.5.0 及后续版本中已经绑定了 OPcache 扩展。 对于 PHP 5.25.35.4 版本可以使用 » PECL 扩展中的 OPcache 库。

— 摘自 PHP.net

注意,它和 Alternative PHP Cache (APC) 是一个开放自由的PHP opcode 缓存,是两个东西,别搞混了。

安装

PHP 5.5.0 及后续版本

OPcache 只能编译为共享扩展。 如果你使用 --disable-all 参数 禁用了默认扩展的构建, 那么必须使用 --enable-opcache 选项来开启 OPcache。

编译之后,就可以使用 zend_extension 指令来将 OPcache 扩展加载到 PHP 中。

PHP 5.4 以及更低版本

pecl 下载安装

运行时配置

/php/php.ini

[opcache]
; dll地址
zend_extension=php_opcache.dll

; 启用该拓展打开
opcache.enable=1

; 在cli模式页开启opcache加速 
opcache.enable_cli=1

; 可用内存, 酌情而定, 单位为:Mb
opcache.memory_consumption=128

; Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB)
opcache.interned_strings_buffer=8

; 对多缓存文件限制, 命中率不到 100% 的话, 可以试着提高这个值
opcache.max_accelerated_files=4000

; 启用,那么 OPcache 会每隔 opcache.revalidate_freq 设定的秒数 检查脚本是否更新。如果禁用此选项,你必须使用 opcache_reset() 或者 opcache_invalidate() 函数来手动重置 OPcache,也可以 通过重启 Web 服务器来清空
opcache.validate_timestamps=0

; Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 设置为 0 会导致针对每个请求, OPcache 都会检查脚本更新。单位:秒。 
opcache.revalidate_freq=60

; 打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高
opcache.fast_shutdown=1

; opcache 不保存注释,减少opcode大小
opcache.save_comments=0


; 启用或禁用在共享内存中的 opcode 缓存。
opcache.file_cache_only=0

;设置不缓存的黑名单
; opcache.blacklist_filename=/png/php/opcache_blacklist

; 配置二级缓存目录并启用二级缓存。 默认值为空字符串 "",表示禁用基于文件的缓存。
opcache.file_cache=/var/www/html/php_cache/
; opcache.file_cache=/var/www/php/cache

更多配置见: php.net

配置好之后,我们运行phpinfo试试看。

如果能看到这界面,说明这个拓展装好了,

注意看到标红,这个说明命中次数,为啥7次呢,因为这个页面我刷行了7次。

使用

opcache_compile_file

该函数可以用于在不用运行某个 PHP 脚本的情况下,编译该 PHP 脚本并将其添加到字节码缓存中去。 该函数可用于在 Web 服务器重启之后初始化缓存,以供后续请求调用。

<?php
/**
* @params string $file 被编译的 PHP 脚本的路径。
* @return boolean 便已成功否
*/
function opcache_compile_file ( string $file ) : boolean

注意事项,Opcache 倾向于编译面向对象编程的代码。并且是在不运行脚本的情况下去编译,也就是它不会判断该脚本在运行时,哪些代码肯定会被执行,哪些不会被执行。也不会判断你的代码执行顺序。它会假设你的代码都会被执行,所以,一些函数的重复定义,会报错。

opcache_invalidate

该函数的作用是使得指定脚本的字节码缓存失效。 如果 force 没有设置或者传入的是 FALSE,那么只有当脚本的修改时间 比对应字节码的时间更新,脚本的缓存才会失效。

<?php
/**
 * @param string $script    缓存需要被作废对应的脚本路径
 * @param bool   $force     
如果该参数设置为TRUE,那么不管是否必要,该脚本的缓存都将被废除。
 * @return bool 成功否,如果脚本的字节码缓存失效设置成功或者该脚本本来就没有缓存,则返回 TRUE;如果字节码缓存被禁用,则返回FALSE。
 */
function opcache_invalidate ( string $script [, boolean $force = FALSE ] ) : boolean

opcache_is_script_cached

此函数检查PHP脚本是否已缓存在OPCache中。这可用于更轻松地检测特定脚本的缓存“变化”。

<?php
/**
 * @param string $file  需要被检查的脚本路径
 * @return bool 如果被Opcache缓存就返回true
 */
function opcache_is_script_cached ( string $file ) : bool

opcache_reset

该函数将重置整个字节码缓存。 在调用 opcache_reset() 之后,所有的脚本将会重新载入并且在下次被点击的时候重新解析。

<?php
/**
 * @return bool 如果字节码缓存被重置成功,则返回 TRUE;如果字节码缓存被禁用,则返回 FALSE。
 */
function opcache_reset ( void ) : boolean

使用说明: 该函数不能和 opcache_compile_file 函数在同一个脚本生命周期调用。 reset 需要用脚本单独调用。

实战

<?php
// file: opcach_init.php
define('DS', DIRECTORY_SEPARATOR);
$basePath = $argv[1];
if (empty($basePath)) {
    $basePath = __DIR__ . DS . '..' . DS . 'php_project';
}
//opcache_reset();  // 不能先reset,再刷缓存,需要在另外一个脚本运行。
//sleep(2);
opcache_compile_files($basePath);
function opcache_compile_files($dir) {
    foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)) as $v) {
        if(!$v->isDir() && preg_match('%\.php$%', $v->getRealPath())) {
            opcache_invalidate($v->getRealPath(), true);
            opcache_compile_file($v->getRealPath());
            echo $v->getRealPath()."\n";
        }
    }
}

PHP cli 模式下运行该命令,就会为该目录,以及子目录下php文件生成Opcache 缓存。

$ php ./opcach_init.php ./../php_project/

cachetool

官方网站github

兼容性

  • CacheTool 5.x works with PHP >=7.2
  • CacheTool 4.x works with PHP >=7.1
  • CacheTool 3.x works with PHP >=5.5.9
  • CacheTool 2.x works with PHP >=5.5.9
  • CacheTool 1.x works with PHP >=5.3.3

下载

  1. githup 下载 cachetool.phar:
  1. 从 composer 下载
$ composer require gordalina/cachetool

$ composer require gordalina/cachetool:~1.0

使用


$ php cachetool.phar --help $ php cachetool.phar apcu:cache:info --fcgi $ php cachetool.phar apcu:cache:info --fcgi=127.0.0.1:9000 $ php cachetool.phar opcache:status --fcgi=/var/run/php5-fpm.sock $ php cachetool.phar opcache:status --cli $ php cachetool.phar opcache:status --web --web-path=/path/to/your/document/root --web-url=http://url-to-your-document.root

Laravel 加速

Laravel 一时爽,上线火葬场。赶紧优化一下,不然Laravel做的项目就只剩下优雅的代码了。

好慢

是的,在Laravel开发模式下,有时候会有种在开发JSP应用的感觉一样,改一下重启一下Tomcat的那种速度。

发布到线上,访问的人一多CPU就100%了。

这篇文章就是来改进这个的,让你的Laravel应用加速。

官方推荐

以下Laravel自己优化自己的一些操作。

## 类映射加载优化 ,额,这个命令在Laravel5.6 被移除了
$ php artisan optimize
$ php artisan clear-compiled ## 清理上面的缓存

## 把配置信息 缓存一下
$ php artisan config:cache
$ php artisan config:clear  ## 清理缓存

## 把路由缓存一下
$ php artisan route:cache
$ php artisan route:clear ## 清理缓存

如果你在开发Laravel 过程中,配置没改,路由没改,那么可以把配置,和路由缓存加速一下。

composer 优化

接下来就是路由加速

来自

生成 classmap

执行命令

$ composer dump-autoload --optimize
$ composer dump-autoload -o  ## 或者是简写

这个命令的本质是将 PSR-4/PSR-0 的规则转化为了 classmap 的规则, 因为 classmap 中包含了所有类名与类文件路径的对应关系,所以加载器不再需要到文件系统中查找文件了。可以从 classmap 中直接找到类文件的路径。

权威的(Authoritative)classmap

$ composer dump-autoload --classmap-authoritative
$ composer dump-autoload -a 

执行这个命令隐含的也执行了 Level-1 的命令, 即同样也是生成了 classmap,区别在于当加载器在 classmap 中找不到目标类时,不会再去文件系统中查找(即隐含的认为 classmap 中就是所有合法的类,不会有其他的类了,除非法调用)

注意事项
如果你的项目在运行时会生成类,使用这个优化策略会找不到这些新生成的类。

使用 APCu cache

$ composer dump-autoload --apcu

使用这个策略需要安装 apcu 扩展。
apcu 可以理解为一块内存,并且可以在多进程中共享。
这种策略是为了在 Level-1 中 classmap 中找不到目标类时,将在文件系统中找到的结果存储到共享内存中, 当下次再查找时就可以从内存中直接返回,不用再去文件系统中再次查找。

在生产环境下,这个策略一般也会与 Level-1 一起使用, 执行composer dump-autoload -o –apcu, 这样,即使生产环境下生成了新的类,只需要文件系统中查找一次即可被缓存 , 弥补了Level-2/A 的缺陷。

Opcache 加速

PHP 5.5 都默认打包了该扩展。在配置中启用即可。

下面是一个简单的默认配置:

/etc/php/7.3/fpm/conf.d/10-opcache.ini

; configuration for php opcache module
; priority=10
zend_extension=opcache.so

opcache.enable=1

opcache.memory_consumption=128

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=4000

opcache.revalidate_freq=60

WordPress 加速

自建的Wordpress打开那么慢,想查个资料等半天,那我为啥不去百度呢?停停停,那我还自建什么站,找个写作平台入住就完事了呗。回来,我们还是优化一下自己的博客站点吧。

转圈圈

一访问自建的Wordpress博客,就是——爱的魔力转圈圈。那么如何优化加速自己的博客网站呢。

静态资源 缓存

通过 nginx 配置, 把WordPress里面的jscsspng, jpeg, gif, woff等资源,开启浏览器缓存。

文件路径: /etc/nginx/sites-enabled/wp.www.conf

server {

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)
        {
            expires      1d;
        }

        location ~ .*\.(js|css)
        {
            expires      1d;
        }
}

CDN加速

还可以把这些静态资源放到CDN上,这样加载js,css,png…这些资源就不用和我们html一起挤那根小水管了。

启用Opcache

为Wordpress运行的环境开启Opcache,在php-fpm 中配置, cli 中配置,只影响 php 明亮行程序。

文件路径: /etc/php/7.3/fpm/conf.d/10-opcache.ini

; configuration for php opcache module
; priority=10
zend_extension=opcache.so

opcache.enable=1

opcache.memory_consumption=128

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=4000

opcache.revalidate_freq=60

一些插件

使用WordPress插件加速。这些插件放链接了,自己了解。

WP Fastest Cache 插件

wp fastest cache

WP Optimize 插件

WP Optimize