使用Memcached加速WordPress

  之前分享了CentOS7编译安装Memcached的方法,现在我们就将Memcached投入到实战中去,用来加速WordPress!

首先安装依赖程序:

yum install cyrus-sasl-devel autoconf

安装libmemcached:

wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz

下载libmemcached

tar zxf libmemcached-1.0.18.tar.gz

解压缩

cd libmemcached-1.0.18

进入安装程序目录

./configure --prefix=/usr/local/libmemcached && make && make install

编译安装

然后生成PHP的Memcached扩展:

wget https://github.com/php-memcached-dev/php-memcached/archive/master.zip
unzip php-memcached-master.zip
cd php-memcached-master
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir=/usr/local/zlib --with-libmemcached-dir=/usr/local/libmemcached && make && make install

在php.ini中,加入:

extension=memcached.so

  最后下载WordPress的Memcached插件,将object-cache.php文件放到wp-content目录中即可。

CentOS7编译安装Memcached

  Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

首先安装libevent:

wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz

下载libevent

tar zxf libevent-2.1.8-stable.tar.gz

解压缩

cd libevent-2.1.8-stable

进入安装目录

./configure --prefix=/usr/local/libevent && make && make install

编译安装

接着安装Memcached:

wget http://www.memcached.org/files/memcached-1.5.0.tar.gz

下载memcached

tar zxf memcached-1.5.0.tar.gz

解压缩

cd memcached-1.5.0

进入安装目录

./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent && make && make install

编译安装

运行命令与参数:

/usr/local/memcached/bin/memcached

启动memcached

启动参数说明:
-d  启动一个守护进程。
-m  分配给Memcache使用的内存数量,单位是MB,默认64MB。
-l  监听的IP地址。(默认:INADDR_ANY,所有地址)
-p  设置Memcache的TCP监听的端口,最好是1024以上的端口。
-u  指定运行Memcache的用户。
-c  选项是最大运行的并发连接数,默认是1024。
-P  设置保存Memcache的pid文件。

CentOS7安装Vsftpd并启用SSL加密和修改控制端口

安装依赖程序:

yum install libcap-devel

下载Vsftps,注意需要梯子:

wget https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz

解压缩

tar zxf vsftpd-3.0.3.tar.gz

进入目录

cd /usr/local/xz/vsftpd-3.0.3

编辑安装配置文件:

vi builddefs.h

#undef VSF_BUILD_SSL 改为 #define VSF_BUILD_SSL ,保存退出,然后安装:

make && make install

复制配置文件

cp vsftpd.conf /etc

复制必要文件

cp RedHat/vsftpd.pam /etc/pam.d/ftp

编辑ftp文件,把所有的lib改为lib64,然后保存退出

vi /etc/pam.d/ftp

编辑配置文件

vi /etc/vsftpd.conf

找到 anonymous_enable=YES 在前面加上 # ,意思是禁止匿名登陆;
找到 #local_enable=YES 去掉前面的 # ,意思是允许本地用户登陆;
找到 #write_enable=YES 去掉前面的 # ,意思是允许写入;
找到 #local_umask=022 去掉前面的 # ,意思是授予必须的权限;

然后在底部添加以下内容:

listen_port=

等号后面填写需要设置的FTP控制端口

ssl_enable=YES

开启SSL

ssl_tlsv1=YES

使用TLS加密

strict_ssl_read_eof=YES

上传数据使用SSL

strict_ssl_write_shutdown=YES

下载数据使用SSL

force_local_data_ssl=YES

所有非匿名用户强制使用SSL发送和接受数据

force_local_logins_ssl=YES

所有非匿名用户强制使用SSL进行登陆

rsa_cert_file=

等号后面填写证书文件路径

rsa_private_key_file=

等号后面填写证书私钥路径

CentOS7升级OpenSSH并修改端口允许Root登录

  目前使用的OpenSSH版本是6.6.1,到官网看了一下,发现官方最新版已经是7.5了,差距有点大,马上动手升级:

wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz

下载OpenSSH 7.5

tar zxf openssh-7.5p1.tar.gz

解压缩

cd openssh-7.5p1

进入目录

/bin/systemctl stop sshd.service

关闭SSH

rpm -e openssh-server

卸载旧版服务端

rpm -e openssh-clients --nodeps

卸载旧版客户端

rpm -e openssh --nodeps

卸载旧版文件

rm -rf /etc/ssh

删除旧版目录

./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib --with-md5-passwords && make && make install

编译安装,注意把OpenSSL和Zlib的路径改成你的

cp contrib/redhat/sshd.init /etc/init.d/sshd

复制控制脚本

chmod +x /etc/init.d/sshd

授予权限

vi /etc/init.d/sshd

查找 SSHD=/usr/sbin/sshd 将其改为 SSHD=/usr/local/openssh/sbin/sshd 然后保存退出

chkconfig --add sshd

将控制脚本添加到服务

service sshd start

启动SSH

  需要注意的是,由于安装过程中需要终止SSH服务,一旦有SSH连接中断的意外,将无法再次连接,因此请做好预防措施!!
  接着我们修改一下SSH的端口号,编辑SSH配置文件:

vi /etc/ssh/sshd_config

找到 #port 22 然后把#去掉,再把后面的22改为你想要的端口号,最后保存退出即可。重启一下SSH,即可生效。

  还有就是新版的OpenSSH默认是禁止Root用户登陆的,如果需要使用Root登陆的话,再次编辑SSH配置文件,找到#PermitRootLogin prohibit-password然后把#去掉,再把后面的prohibit-password改为yes,最后保存退出即可。重启一下SSH,即可生效。

免插件纯代码禁用WordPress谷歌字体

  WordPress本身以及大多数的主题,均采用了谷歌字体库中的字体,但是由于众所周知的原因,在国内使用这些字体会严重影响网站的速度。
  下面就分享一个不用插件纯代码禁止加载谷歌字体的方法,只需要把以下内容添加到当前主题的模板函数(functions.php)中即可。

if ( ! defined( 'ABSPATH' ) ) exit;

class Disable_Google_Fonts {

  public function __construct() {
    add_filter( 'gettext_with_context', array( $this, 'disable_open_sans'             ), 888, 4 );
    add_action( 'after_setup_theme',    array( $this, 'register_theme_fonts_disabler' ), 1      );
  }

  public function action_links( $links, $plugin_file ) {
    _deprecated_function( __METHOD__, '1.3' );

    return $links;
  }

  public function disable_open_sans( $translations, $text, $context, $domain ) {
    if ( 'Open Sans font: on or off' == $context && 'on' == $text ) {
      $translations = 'off';
    }

    return $translations;
  }

  public function disable_lato( $translations, $text, $context, $domain ) {
    if ( 'Lato font: on or off' == $context && 'on' == $text ) {
      $translations = 'off';
    }

    return $translations;
  }

  public function disable_source_sans_pro( $translations, $text, $context, $domain ) {
    if ( 'Source Sans Pro font: on or off' == $context && 'on' == $text ) {
      $translations = 'off';
    }

    return $translations;
  }

  public function disable_bitter( $translations, $text, $context, $domain ) {
    if ( 'Bitter font: on or off' == $context && 'on' == $text ) {
      $translations = 'off';
    }

    return $translations;
  }

  public function disable_noto_sans( $translations, $text, $context, $domain ) {
    if ( 'Noto Sans font: on or off' == $context && 'on' == $text ) {
      $translations = 'off';
    }

    return $translations;
  }

  public function disable_noto_serif( $translations, $text, $context, $domain ) {
    if ( 'Noto Serif font: on or off' == $context && 'on' == $text ) {
      $translations = 'off';
    }

    return $translations;
  }

  public function disable_inconsolata( $translations, $text, $context, $domain ) {
    if ( 'Inconsolata font: on or off' == $context && 'on' == $text ) {
      $translations = 'off';
    }

    return $translations;
  }

  public function disable_merriweather( $translations, $text, $context, $domain ) {
    if ( 'Merriweather font: on or off' == $context && 'on' == $text ) {
      $translations = 'off';
    }

    return $translations;
  }

  public function disable_montserrat( $translations, $text, $context, $domain ) {
    if ( 'Montserrat font: on or off' == $context && 'on' == $text ) {
      $translations = 'off';
    }

    return $translations;
  }

  public function disable_libre_franklin( $translations, $text, $context, $domain ) {
    if ( 'Libre Franklin font: on or off' == $context && 'on' == $text ) {
      $translations = 'off';
    }

    return $translations;
  }

  public function register_theme_fonts_disabler() {
    $template = get_template();

    switch ( $template ) {
      case 'twentyseventeen' :
        add_filter( 'gettext_with_context', array( $this, 'disable_libre_franklin'  ), 888, 4 );
        break;
      case 'twentysixteen' :
        add_filter( 'gettext_with_context', array( $this, 'disable_merriweather'    ), 888, 4 );
        add_filter( 'gettext_with_context', array( $this, 'disable_montserrat'      ), 888, 4 );
        add_filter( 'gettext_with_context', array( $this, 'disable_inconsolata'     ), 888, 4 );
        break;
      case 'twentyfifteen' :
        add_filter( 'gettext_with_context', array( $this, 'disable_noto_sans'       ), 888, 4 );
        add_filter( 'gettext_with_context', array( $this, 'disable_noto_serif'      ), 888, 4 );
        add_filter( 'gettext_with_context', array( $this, 'disable_inconsolata'     ), 888, 4 );
        break;
      case 'twentyfourteen' :
        add_filter( 'gettext_with_context', array( $this, 'disable_lato'            ), 888, 4 );
        break;
      case 'twentythirteen' :
        add_filter( 'gettext_with_context', array( $this, 'disable_source_sans_pro' ), 888, 4 );
        add_filter( 'gettext_with_context', array( $this, 'disable_bitter'          ), 888, 4 );
        break;
    }
  }
}

$disable_google_fonts = new Disable_Google_Fonts;

备注:此代码提取自插件“Disable Google Fonts”,你也可以选择安装此插件来禁用谷歌字体。

CentOS7使用Extundelete恢复误删除的文件

  今天清理服务器的时候,不小心把一个重要文件给删除了。于是马上停止服务器的一切写入操作,开始着手恢复被误删的文件。恢复工具我使用的是Extundelete,恢复过程记录如下:

安装Extundelete

yum install e2fsprogs-devel

首先安装依赖程序

wget https://ncu.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

下载Extundelete

tar -jxvf extundelete-0.2.4.tar.bz2

解压缩包

cd extundelete-0.2.4

进入安装程序目录

./configure --prefix=/usr/local/extundelete && make && make install

编译安装

开始恢复文件

/usr/local/extundelete/bin/extundelete --restore-file 需要恢复的文件名 /dev/vda1

  其中, /usr/local/extundelete/bin/extundelete 是恢复程序的执行路径, --restore-file 的意思是恢复单个文件,后面加上要恢复的文件名, /dev/vda1 是被误删文件的所在位置。