宝塔lsc优化

7个月前 小七
0

一、重装系统至centos8.2

ELRepo有两种类型的Linux内核包,kernel-lt和kernel-ml。 他们之间有什么区别?

kernel-ml软件包是根据Linux Kernel Archives的主线稳定分支提供的源构建的。内核配置基于默认的RHEL-7配置,并根据需要启用了添加的功能。这些软件包有意命名为kernel-ml,以免与RHEL-7内核发生冲突,因此,它们可以与常规内核一起安装和更新。

kernel-lt包是从Linux Kernel Archives提供的源代码构建的,就像kernel-ml软件包一样。不同之处在于kernel-lt基于长期支持分支,而kernel-ml基于主线稳定分支。

二、升级liunx内核

1.查看当前的Linux内核版本

uname -sr

显示内容如下

Linux 4.18.0-80.11.2.el8_0.x86_64

2.查看安装了哪个内核升级包

rpm -qa | grep elrepo.noarch

显示如下

elrepo-release-8.0-2.el8.elrepo.noarch

已经安装了,就先卸载掉,然后再安装新的

yum -y remove elrepo-release-8.0-2.el8.elrepo.noarch.rpm

3.需要升级内核的ELRepo 源:

rpm --import //www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install //www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

在yum的elrepo源中,看看有没有最新版本内核

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

显示内容如下

bpftool.x86_64 5.4.6-1.el8.elrepo elrepo-kernel
kernel-ml.x86_64 5.4.6-1.el8.elrepo elrepo-kernel
kernel-ml-core.x86_64 5.4.6-1.el8.elrepo elrepo-kernel
kernel-ml-devel.x86_64 5.4.6-1.el8.elrepo elrepo-kernel
kernel-ml-doc.noarch 5.4.6-1.el8.elrepo elrepo-kernel
kernel-ml-headers.x86_64 5.4.6-1.el8.elrepo elrepo-kernel
kernel-ml-modules.x86_64 5.4.6-1.el8.elrepo elrepo-kernel
kernel-ml-modules-extra.x86_64 5.4.6-1.el8.elrepo elrepo-kernel
kernel-ml-tools.x86_64 5.4.6-1.el8.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 5.4.6-1.el8.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 5.4.6-1.el8.elrepo elrepo-kernel
perf.x86_64 5.4.6-1.el8.elrepo elrepo-kernel
python3-perf.x86_64 5.4.6-1.el8.elrepo elrepo-kernel

4.升级内核,查看系统默认安装了哪些内核文件

rpm -qa | grep kernel

显示内容如下:

kernel-4.18.0-80.11.2.el8_0.x86_64
kernel-modules-4.18.0-80.11.2.el8_0.x86_64
kernel-tools-4.18.0-80.11.2.el8_0.x86_64
kernel-core-4.18.0-80.11.2.el8_0.x86_64
kernel-tools-libs-4.18.0-80.11.2.el8_0.x86_64

系统已经安装的内核版本是4.18,最新版的内核是5.4.6,对照着已经安装的内核文件,我们通过下面的命令来升级现有内核:

yum -y install --enablerepo=elrepo-kernel kernel-ml kernel-ml-devel

如果没有意外,现在新的内核就已经安装好了,我们查看一下是不是这样:

rpm -qa | grep kernel

显示如下

kernel-4.18.0-80.11.2.el8_0.x86_64
kernel-ml-devel-5.4.6-1.el8.elrepo.x86_64
kernel-modules-4.18.0-80.11.2.el8_0.x86_64
kernel-tools-4.18.0-80.11.2.el8_0.x86_64
kernel-core-4.18.0-80.11.2.el8_0.x86_64
kernel-ml-core-5.4.6-1.el8.elrepo.x86_64
kernel-ml-5.4.6-1.el8.elrepo.x86_64
kernel-tools-libs-4.18.0-80.11.2.el8_0.x86_64
kernel-ml-modules-5.4.6-1.el8.elrepo.x86_64

5.查看一下当前的默认启动项

grubby --default-kernel

显示如下:

/boot/vmlinuz-5.4.6-1.el8.elrepo.x86_64

我们新安装的内核已经被设置成默认启动了,重启服务器进入使用新的内核文件。

reboot

重启以后,我们查看一下当前的内核是否更新

uname -sr

显示如下:

Linux 5.4.6-1.el8.elrepo.x86_64

6.删除旧内核

新的内核已经生效,下面将旧内核删除就可以了,具体方法是执行命令“yum -y remove ”后将4.18内核的全称贴到这个命令的后面,两个名称之间用空格隔开,查询已经安装内核的命令是“rpm -qa | grep kernel”

yum -y remove kernel-4.18.0-80.11.2.el8_0.x86_64 kernel-modules-4.18.0-80.11.2.el8_0.x86_64 kernel-tools-4.18.0-80.11.2.el8_0.x86_64 kernel-core-4.18.0-80.11.2.el8_0.x86_64 kernel-tools-libs-4.18.0-80.11.2.el8_0.x86_64

看看是不是只有5.4.6内核存在,干净又清爽。

rpm -qa | grep kernel

显示如下

kernel-ml-devel-5.4.6-1.el8.elrepo.x86_64
kernel-ml-core-5.4.6-1.el8.elrepo.x86_64
kernel-ml-5.4.6-1.el8.elrepo.x86_64
kernel-ml-modules-5.4.6-1.el8.elrepo.x86_64

至此,内核升级全部完成。

7.开启BBR

什么是BBR?
BBR 可以显著的减少Linux的TCP链接延迟,并提高吞吐量,它是Google开发的一种新型拥堵控制算法。

BBR只负责解决两个问题:

1.1.降低延迟,方法是降低网络链路上的buffer占用率,这样就非常适合网速比较慢的用户使用。

1.2.在有一定丢包率的高速网络链路上充分利用网络带宽,这又非常适合高带宽高延迟的用户使用。

开启 BBR 要求 4.10及以上版本 Linux 内核,我们已经将内核升级到了5.x,完全符合升级的条件。

执行以下命令开始升级:

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

检查一下是否开启成功,执行命令:

sysctl net.ipv4.tcp_available_congestion_control

显示如下:

net.ipv4.tcp_available_congestion_control = reno cubic bbr

执行命令:

sysctl -n net.ipv4.tcp_congestion_control

显示如下:

bbr

执行命令:

lsmod | grep bbr

显示如下:

tcp_bbr 20480 1

如果你的系统也是显示的如上述内容,都包含“bbr”,那么你的系统开启BBR成功。

三、安装宝塔

试验性Centos/Ubuntu/Debian安装命令 独立运行环境(py3.7)

curl -sSO //download.bt.cn/install/install_panel.sh && bash install_panel.sh

四、安装openlitespeed(笨方法)

1.执行centos8安装命令

sudo rpm -Uvh //rpms.litespeedtech.com/centos/litespeed-repo-1.2-1.el8.noarch.rpm

2.打开/etc/yum.repos.d/litespeed.repo使用您喜欢的文本编辑器编辑文件,并将以下内容添加到文件末尾:

[litespeed-edge]
name=LiteSpeed Tech Edge Repository for CentOS $releasever - $basearch
baseurl=//rpms.litespeedtech.com/edge/centos/$releasever/$basearch/
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-litespeed

[litespeed-edge-update]
name=LiteSpeed Tech Edge Update Repository for CentOS $releasever - $basearch
baseurl=//rpms.litespeedtech.com/edge/centos/$releasever/update/$basearch/
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-litespeed

接下来,编辑/etc/yum.repos.d/litespeed.repo文件,然后更改enabled=0到enabled=1

完成之后,运行yum install openlitespeed。这会将您的OpenLiteSpeed安装更新为最新的Edge层版本。

五、安装php-ext-brotli

1.先安装git命令

yum install -y git

2.安装brotli

git clone --recursive --depth=1 //gitee.com/m73/php-ext-brotli.git
cd php-ext-brotli
/www/server/php/74/bin/phpize
./configure --with-php-config=/www/server/php/74/bin/php-config
make
make install

3.搜索php.ini和brotli.so文件

打开php.ini 如php7.4

添加extension = /www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/brotli.so

重启php,查看phpinfo 是否有brotli扩展

4.若数据库出错,查看并搜索php中

pdo_mysql.default_socket= /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

附:删除;注释,修改

zlib.output_compression_level = 5
opcache.memory_consumption=256

六.配置openlitespeed

1.打开openlitespeed-配置
添加

include /www/server/panel/vhost/openlitespeed/*.conf
include /www/server/panel/vhost/openlitespeed/listen/*.conf
include /usr/local/lsws/conf/modpagespeed.conf

2.启用HTTP3

将以下两个参数添加到 /www/server/panel/vhost/openlitespeed/listen/443.conf

sslSessionTickets       1
enableQuic              1

使用系统防火墙插件将端口443更改为TCP/UDP协议。默认情况下,仅允许使用TCP

3.开启HSTS

打开网站配置文件,在

index  {
  useServer               0
  indexFiles index.php,index.html
}

下添加

context / {
extraHeaders <<<END_extraHeaders
Strict-Transport-Security: max-age=31536000;includeSubdomains;preload
Referrer-Policy strict-origin-when-cross-origin
X-Frame-Options SAMEORIGIN
X-Content-Type-Options nosniff
X-XSS-Protection 1;mode=block
Content-Security-Policy "upgrade-insecure-requests;connect-src *"
END_extraHeaders
}

4.编辑域LSPHP限制

打开/www/server/panel/vhost/openlitespeed/detail/yoursite.conf
更改

maxConns 50
env LSAPI_CHILDREN = 50

5.引用mod_pagespeed

主机根目录,搜索pagespeed,获得

/usr/local/lsws/modules/modepagespeed.so,一般安装openlitespeed后就有,就不用再次安装

在/usr/local/lsws/conf 新建modepagespeed.conf

module modpagespeed {
param <<<END_param
pagespeed on
pagespeed InPlaceResourceOptimization on
pagespeed FetchHttps enable
pagespeed FileCachePath /tmp/lshttpd/pagespeed/
pagespeed EnableFilters remove_comments
pagespeed EnableFilters local_storage_cache
pagespeed EnableFilters extend_cache_pdfs
pagespeed EnableFilters combine_css
pagespeed EnableFilters rewrite_css
pagespeed EnableFilters extend_cache,rewrite_images
pagespeed EnableFilters rewrite_javascript
#pagespeed FileCacheSizeKb 102400
#pagespeed FileCacheCleanIntervalMs 3600000
#pagespeed FileCacheInodeLimit 500000000
pagespeed FetcherTimeoutMs 5000
#pagespeed ModifyCachingHeaders off
#pagespeed MapProxyDomain //127.0.0.1:8088/ //ref.pssdemos.com/
#pagespeed RunExperiment on
#pagespeed EnableFilters inline_images
#pagespeed LoadFromFile //127.0.0.1:7080 /usr/lsws/lsws/admin/html/
#pagespeed LoadFromFile //127.0.0.1:8088 /usr/local/lsws/Example/html/
END_param
}

打开openlitespeed配置,include /usr/local/lsws/conf/modpagespeed.conf

七、配置wp

1.1.配置wp_config文件

添加

//通过剔除对模板路径和样式表路径的数据库查询,这样可提高站点的性能。
define('TEMPLATEPATH', '/wp-content/themes/webstackpro');
define('STYLESHEETPATH', '/wp-content/themes/webstackpro');
//设置地址而不是服务器检查,这将减少服务器查询
define('COOKIE_DOMAIN', '//qigehl.com');
define('WP_HOME', '//qigehl.com');
define('WP_SITEURL', '//qigehl.com');
define( 'WP_CONTENT_URL', '//youyifans.com/wp-content' );
define( 'WP_PLUGIN_URL',  '//youyifans.com/wp-content/plugins' );
//更新时跳过wp-content目录,增加更新效率
define('CORE_UPGRADE_SKIP_NEW_BUNDLED', true);
define('DISABLE_WP_CRON', true);

附:define('WP_DEBUG_DISPLAY', false);禁止在网页上显示调试信息

1.2.添加/** 屏蔽日志修订功能 */

放在定义WordPress目录的绝对路径(if ( !defined(‘ABSPATH’) )define(‘ABSPATH’, dirname(__FILE__) . ‘/’);)前

define('AUTOSAVE_INTERVAL', false );
define('WP_POST_REVISIONS', false);

也有人说//自动保存24小时一次,说在测试的时候发现直接 false 禁用无效,设置为24小时保存一次

define('AUTOSAVE_INTERVAL', 86400);
添加//*禁用帖子和页面修订 开始*/放在主题functions
add_action('admin_init', 'crunchify_disable_revisions');
function crunchify_disable_revisions(){
    remove_post_type_support('post', 'revisions');
    remove_post_type_support('page', 'revisions');
}
remove_action('pre_post_update', 'wp_save_post_revision');
//*禁用帖子和页面修订 结束*/

确保数据库不生成修订,以防万一

1.3.添加

//禁用插件、主题编辑器,以防黑客编辑
define('DISALLOW_FILE_EDIT',true);

2.启用batcache

//与LSC不兼容

下载batcache插件解压,把advanced-cache.php上传到/wp-content/目录

编辑博客根目录的wp-config.php文件,添加下方两段代码进去并保存:

define( 'WP_CACHE', true );
define( 'ENABLE_CACHE', true );

修改advanced-cache.php

var $max_age = 3600; // Expire batcache items aged this many seconds (zero to disable batcache)
var $remote = 0; // Zero disables sending buffers to remote datacenters (req/sec is never sent)
var $times = 2; // Only batcache a page after it is accessed this many times… (two or more)
var $seconds = 0; // …in this many seconds (zero to ignore this and use batcache immediately)

3.修改wordpress内存限制

/wp-includes/default-constants.php
define( ‘WP_MEMORY_LIMIT’, ’64M’ );
define( ‘WP_MEMORY_LIMIT’, ’40M’ );

这个WP_MEMORY_LIMIT是WordPress对于内存的限制,WordPress安装包自带的配置文件,限制的太小。60M和40M是单站点和多站点的显示,目的是为了防止耗尽服务器资源

下面还有个WP_MAX_MEMORY_LIMIT,默认是256M,这个和上面那两个有什么区别呢?
WP_MAX_MEMORY_LIMIT是对后台管理员的内存限制,上面那两个是对网站前台用户的内存限制。So 给管理员的限制更宽一些。

/wp-config.php
define( 'WP_MEMORY_LIMIT', '256M' );

双方修改保证万无一失

4.修改timthumb.php 缩略图质量

打开主题目录,搜索timthumb.php

顺便修改if(! defined('MEMORY_LIMIT') ) define ('MEMORY_LIMIT', '64M');

搜索到 DEFAULT_Q 这个参数,大家可以看到 TimThumb 脚本默认的缩略图片质量是 90,我们可以调整这个数值低一些,设定为25,毕竟缩略图都很小,图片质量要求基本可以无视的。

拓展:禁止wordpress生成特定尺寸缩略图

通过设置→媒体,进入媒体设置页面,全部设为0,但是wordpress仍会生成一个768的缩略文件,//你的域名/wp-admin/options.php访问进入WordPress的全部设置

搜索找到medium_large_size_w选项,将其设置为 0 即可。记得点保存按钮

八、liunx清理

yum autoremove 删除系统不再使用的孤立软件
yum clean all 清理所有软件缓存
删除不必要的自带软件包
yum remove Deployment_Guide-en-US finger cups ypbind
yum remove bluez-libs desktop-file-utils ppp rp-pppoe wireless-tools irda-utils
yum remove sendmail* talk-server finger-server xinetd
yum remove telnet rsh ftp rcp
yum remove nfs-utils nfs-utils-lib rdate fetchmail eject ksh mkbootdisk mtools
yum remove syslinux tcsh startup-notification talk apmd rmt dump setserial portmap yp-tools
yum groupremove "Mail Server" "Games and Entertainment" "X Window System" "X Software Development"
yum groupremove "Development Libraries" "Dialup Networking Support"
yum groupremove "Games and Entertainment" "Sound and Video" "Graphics" "Editors"
yum groupremove "Text-based Internet" "GNOME Desktop Environment" "GNOME Software Development"

禁止无用服务 保存为脚本 直接sh运行

#! /bin/bash
service acpid off
service atd stop
service auditd stop
service avahi-daemon stop
service avahi-dnsconfd stop
service bluetooth stop
service conman stop
service cpuspeed stop
service cups stop
service dnsmasq stop
service dund stop
service firstboot stop
service hidd stop
service httpd stop
service ibmasm stop
service ip6tables stop
service irda stop
service kdump stop
service lm_sensors stop
service mcstrans stop
service messagebus stop
service microcode_ctl stop
service netconsole stop
service netfs stop
service netplugd stop
service nfs stop
service nfslock stop
service nscd stop
service ntpd stop
service oddjobd stop
service pand stop
service pcscd stop
service portmap stop
service psacct stop
service rdisc stop
service restorecond stop
service rpcgssd stop
service rpcidmapd stop
service rpcsvcgssd stop
service saslauthd stop
service sendmail stop
service setroubleshoot stop
service smb stop
service vncserver stop
service winbind stop
service wpa_supplicant stop
service xfs stop
service ypbind stop
service yum-updatesd stop
chkconfig acpid off
chkconfig atd off
chkconfig auditd off
chkconfig avahi-daemon off
chkconfig avahi-dnsconfd off
chkconfig bluetooth off
chkconfig conman off
chkconfig cpuspeed off
chkconfig cups off
chkconfig dnsmasq off
chkconfig dund off
chkconfig firstboot off
chkconfig hidd off
chkconfig httpd off
chkconfig ibmasm off
chkconfig ip6tables off
chkconfig irda off
chkconfig kdump off
chkconfig lm_sensors off
chkconfig mcstrans off
chkconfig messagebus off
chkconfig microcode_ctl off
chkconfig netconsole off
chkconfig netfs off
chkconfig netplugd off
chkconfig nfs off
chkconfig nfslock off
chkconfig nscd off
chkconfig ntpd off
chkconfig oddjobd off
chkconfig pand off
chkconfig pcscd off
chkconfig portmap off
chkconfig psacct off
chkconfig rdisc off
chkconfig restorecond off
chkconfig rpcgssd off
chkconfig rpcidmapd off
chkconfig rpcsvcgssd off
chkconfig saslauthd off
chkconfig sendmail off
chkconfig setroubleshoot off
chkconfig smb off
chkconfig vncserver off
chkconfig winbind off
chkconfig wpa_supplicant off
chkconfig xfs off
chkconfig ypbind off
chkconfig yum-updatesd off

九、修改主题functions文件

//禁止在数据库存储WordPress评论IP
add_filter( 'pre_comment_user_ip', 'remove_comments_ip' );
function remove_comments_ip( $comment_author_ip ) {
return '';
}

2.//使用 Memcached 内存缓存优化 WordPress 自动草稿功能 开始*/

add_action('current_screen', function ($current_screen){
if($screen_base != 'post' || $current_screen->post_type == 'attachment' || $current_screen->action != 'add'){
return;
}
if($last_post_id = wp_cache_get(get_current_user_id(), 'wpjam_'.$current_screen->post_type.'_last_post_id')){
$post = get_post($last_post_id);
if($post && $post->post_status == 'auto-draft'){
wp_redirect(admin_url('post.php?post='.$last_post_id.'&action=edit'));
exit;
}
}
add_action('admin_footer', function(){
global $post;
wp_cache_set(get_current_user_id(), $post->ID, 'wpjam_'.$post->post_type.'_last_post_id', HOUR_IN_SECONDS);
});
}, 10, 2);
//使用 Memcached 内存缓存优化 WordPress 自动草稿功能 结束*/

3.去除worpdress菜单多余的css样式

// 去除worpdress菜单多余的css样式 开始*/add_filter('nav_menu_css_class', 'my_css_attributes_filter', 100, 1);
add_filter('nav_menu_item_id', 'my_css_attributes_filter', 100, 1);
add_filter('page_css_class', 'my_css_attributes_filter', 100, 1);
function my_css_attributes_filter($var) {
return is_array($var) ? array_intersect($var, array('menu-item')) : '';
}
// 去除worpdress菜单多余的css样式 结束*/

4.移除 img 的 width、height、class 属性

//移除img的width、height、class属性 开始*/add_filter( 'post_thumbnail_html', 'remove_images_attribute', 10 );
add_filter( 'image_send_to_editor', 'remove_images_attribute', 10 );
function remove_images_attribute( $html ) {
//$html = preg_replace( '/(width|height)="\d*"\s/', "", $html );
$html = preg_replace( '/width="(\d*)"\s+height="(\d*)"\s+class=\"[^\"]*\"/', "", $html );
$html = preg_replace( '/  /', "", $html );
return $html;
}
//移除img的width、height、class属性 结束*/

5.隐藏js/css附加的WP版本号

// 隐藏js/css附加的WP版本号 开始*/function remove_cssjs_ver( $src ) {
if( strpos( $src, 'ver=' ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver', 999 );
add_filter( 'script_loader_src', 'remove_cssjs_ver', 999 );
// 隐藏js/css附加的WP版本号 结束*/

6.移除前台语言包
// 移除前台语言包 wpjam开始*/

// 移除前台语言包 wpjam开始*/add_filter('locale', function($locale) {
    $locale = ( is_admin() ) ? $locale : 'en_US';
    return $locale;
});
// 移除前台语言包 结束*/

7.内存缓存优化 WordPress 主循环

//内存缓存优化 WordPress 主循环,实现首页 0 SQL 开始*/add_filter('posts_pre_query', function ($pre, $wp_query){
if(!$wp_query->is_main_query()){// 只缓存主循环
return $pre;
}
$cache_key= md5(maybe_serialize($wp_query->query_vars));
$wp_query->set('cache_key', $cache_key);
$post_ids= wp_cache_get($cache_key, 'post_ids');
if($post_ids === false){
return $pre;
}
return get_posts($post_ids);
}, 10, 2);
//内存缓存优化 WordPress 主循环,实现首页 0 SQL 结束*/

8.隐藏个人资料设置

//隐藏个人资料设置 开始*/add_action('show_user_profile','edit_user_profile');
add_action('edit_user_profile','edit_user_profile');
function edit_user_profile($user){
?> user_login;
$_POST['display_name']= $_POST['nickname'];
$_POST['first_name']= '';
$_POST['last_name']= '';
}
//隐藏个人资料设置 结束*/

9.优化多用户博客 WordPress 文章列表页加载

//优化多用户博客 WordPress 文章列表页加载 开始*/add_filter('posts_results', function ($posts){
if(count($posts)>1){
$post_authors= array_unique(wp_list_pluck($posts, 'post_author'));
if(count($post_authors)>1){
cache_users($post_authors);
}
}
return $posts;
});
//优化多用户博客 WordPress 文章列表页加载 结束*/
版权声明:小七 发表于 2021-03-03 11:44:41。
转载请注明:宝塔lsc优化 | 七个葫芦

暂无评论

暂无评论...