分类: WEB技术

  • mysql数据库mysql-bin文件清理

    mysql数据库mysql-bin文件清理

    MySQL-bin文件是MySQL数据库产生的二进制日志文件,在数据备份和恢复,以及主从同步等方面有着重要的作用。由于二进制日志文件会不断增长,会消耗服务器硬盘空间,所以有时候需要清理MySQL-bin文件,以释放硬盘空间。

    1. 不建议手动删除MySQL-bin文件,因为二进制文件是MySQL数据库的重要组成部分,误删会导致数据库出错或数据丢失;

    2. 如果要删除MySQL-bin文件,可以通过在MySQL命令行界面使用PURGE BINARY LOGS语句进行删除,该语句可以删除指定日期前的二进制文件,或者删除所有二进制文件。

    3. 查看MySQL-bin文件的存储路径,通过SHOW BINARY LOGS命令查看:

    mysql>SHOW BINARY LOGS;

    4. 在MySQL命令行界面使用PURGE BINARY LOGS语句进行删除。

    mysql>PURGE BINARY LOGS BEFORE '2020-10-01 00:00:00';

    该语句可以删除2020年10月1日之前的所有MySQL-bin文件。

    5. 删除所有MySQL-bin文件:

    mysql>RESET MASTER;
  • Linux系统System has not been booted with systemd as init system (PID 1). Can’t operate问题

    Linux系统System has not been booted with systemd as init system (PID 1). Can’t operate问题

    最近使用的一台debian不知道为何重后出现运行service命令出现:System has not been booted with systemd as init system (PID 1). Can’t operate的错误。经过答复确认应该是更新或者安装某个软件的时候安装了sysinit替换了系统systemctl

    目前linux系统主流用的都是systemd,也就是大家常用的systemctl命令,不知道哪个软件安装的时候没有注意我同意了替换为sysinit。解决办法也很简单,装回systemctl和systemd-sysv,特别是systemd-sysv是最重要的。

    apt install systemd-sysv systemctl

    安装完成需要重启,但是此时可能系统还没有切换回systemctl无法响应重启命令。可以使用以下强制重启命令中的一种:

    reboot -nf
    reboot -nnf
    echo 1 > /proc/sys/kernel/sysrq
    echo b > /proc/sysrq-trigger
  • PHP 8.4.1发布:新特性强化开发者体验,安全性能大幅提升

    PHP 8.4.1发布:新特性强化开发者体验,安全性能大幅提升

    2024年11月21日,PHP开发团队正式发布了PHP 8.4.1版本,标志着8.4主要分支的首次亮相。该版本不仅修复了多个重要的安全漏洞,还引入了一系列新特性和改进。这一版本的发布对于PHP社区而言,既是安全性的一次强化,也是开发者使用体验的一次重大提升。

    主要特性属性:

    钩子新版本最引人注目的特性之一是“属性钩子”。这一功能大大简化了开发者在处理计算属性时所需的代码。通过属性钩子,开发者不再需要依靠可能会失效的注释来保证静态分析工具和IDE的正确工作。此外,这项功能还允许开发者在值被调用之前或之后进行可靠的预处理或后处理,无需再检查类中是否存在配套的getter或setter。这一改进不仅提升了代码的可读性,也降低了维护成本。

    非对称可见性:

    另一项重大的更新是“非对称可见性”,这一新特性使得开发者能够独立控制属性的写入和读取权限。这意味着开发者可以更灵活地设计类的接口,而无需编写繁琐的getter方法来公开属性值,同时又可以确保属性不被外部随意修改。这种灵活性不仅增强了代码的安全性,也使得面向对象编程的实践更加高效。

    其他增强:

    PHP 8.4.1还新增了处理HTML5文档的DOM API,以及其他多个功能增强和优化,比如延迟加载对象、数组处理工具,甚至允许新的实例化对象属性和方法被访问而无需使用括号。这些特性均为开发者提供了更为高效和便捷的开发体验。在实际使用中,开发者发现,这些新功能大幅度提升了应用程序的响应速度和用户体验,尤其是在处理大型数据和复杂业务逻辑时表现尤为突出。

    在市场上,PHP一直占据着重要的地位,尤其是在网站开发和服务器端处理方面。与其他编程语言相比,PHP以其简单易用和广泛的社区支持赢得了许多开发者的青睐。而PHP 8.4.1的重要更新无疑是在竞争激烈的开发环境中再次巩固了其市场地位。这些新特性使得PHP能够更好地与现代化编程语言展开竞争,满足开发者对高效、安全和灵活性的需求,对社区形成良好的吸引力。

    PHP 8.4.1的发布显著提升了开发者的工作效率和代码安全性,尤其对于中小型企业和初创团队,能够用更少的成本实现更高效的开发流程。面对愈加复杂的市场需求,开发者们应及时更新至PHP 8.4.1,利用其新特性来优化自己的项目,抓住数字化转型的机遇。

  • Nginx禁止未绑定的域名访问

    Nginx禁止未绑定的域名访问

    Nginx默认会启用未绑定的域名解析访问,也就是只要解析到你的IP,即使你服务器未绑定该域名,这样的坏处就是别人可以用你的服务器ip造成嫁祸做一些坏事

    使用以下nginx.conf配置默认解析,用于避免未绑定的域名访问到你的服务器。

     server {
       
            listen 80 default_server;
            listen 443 ssl;
            server_name _;
    
            ssl_certificate       /credential/default/default.crt;
            ssl_certificate_key   /credential/default/default.key;
    
            return       444;
        }
    JavaScript

    这里我们采用设定default_server锁定回收未绑定的解析域名,然后使用访问处理444输出拦截并断开链接。虽然比较粗暴,当时这样可以尽可能减少暴露服务器信息。当然你也可以用403 404等状态码拦截。

  • 安装PHP Composer

    安装PHP Composer

    若要在当前目录中快速安装 Composer,请在终端中运行以下脚本:

    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    php composer-setup.php
    php -r "unlink('composer-setup.php');"
    ShellScript

    这个安装程序脚本将简单地检查一些设置, 如果设置不正确,请警告您,然后 下载当前目录中的最新版本。

    上面的 4 行将按顺序排列:php.inicomposer.phar

    • 将安装程序下载到当前目录
    • 验证安装程序 SHA-384,您也可以在此处进行交叉检查
    • 运行安装程序
    • 删除安装程序

    最有可能的是,您希望将 放入 PATH 上的目录中,以便您可以简单地从任何目录(全局安装)调用,例如:composer.pharcomposer

    sudo mv composer.phar /usr/local/bin/composer
    ShellScript

    测试:

    composer -V
    composer self-update
    ShellScript

    输出如下:

    Composer version 2.7.4 2024-04-22 21:17:03
    PHP version 8.3.6 (/usr/local/php/bin/php)
    Run the "diagnose" command to get more detailed diagnostics output.
    You are already using the latest available Composer version 2.7.4 (stable channel).
    ShellScript

    参考:Composer官方网站 (getcomposer.org)

  • NGINX + BoringSSL 编译错误

    NGINX + BoringSSL 编译错误

    在使用最新版本的Nginx和Boringssl编译的时候会出现如下错误提示:

    ./configure: error: SSL modules require the OpenSSL library.
    You can either do not enable the modules, or install the OpenSSL library
    into the system, or build the OpenSSL library statically from the source
    with Angie by using --with-openssl=<path> option.

    出现以上的原因在于Boringssl项目在清除其他代码后遗留下来了一个C或者C++的运行时runtime检查.

    因此libssl 现在需要 C++ 运行时,除了
    预先存在的 C++ 要求。某些项目可能需要将最终链接切换到使用 C++ 链接器而不是 C 链接器。

    以上参考链接https://github.com/google/boringssl/commit/c52806157c97105da7fdc2b021d0a0fcd5186bf3

    Nginx社区有人给出了针对三个平台的解决方案如下:

    MacOS:

    auto/configure \
    --with-cc-opt="-I../boringssl/include" \
    --with-ld-opt="-L../boringssl/build/ssl -L../boringssl/build/crypto -lc++"

    C语言环境下Linux:

    auto/configure /
    --with-cc=clang /
    --with-cc-opt="-I../boringssl/include" /
    --with-ld-opt="-L../boringssl/build/ssl -L../boringssl/build/crypto -lstdc++"

    C++语言环境下Linux:

    auto/configure \
    --with-cc=c++ \
    --with-cc-opt="-I../boringssl/include -x c" \
    --with-ld-opt="-L../boringssl/build/ssl -L../boringssl/build/crypto"

    多少情况下用的C++环境。通过以上方式编译,即可解决openssl库无法连接的问题。

  • Drupal Nginx rewrite配置

    Drupal Nginx rewrite配置

    Drupal推荐一般使用Apache Httpd进行部署,但是我们也可以直接使用Nginx进行部署,只是官方的nginx配置一直没有名正言顺的写出来,一直琢磨和查询了很久其实只有3条配置如下,即可。

    rewrite ^/core/authorize.php/core/authorize.php(.*)$ /core/authorize.php$1;
    if (!-e $request_filename) {
      rewrite ^/update.php(.*)$ /update.php?q=$1 last;
      rewrite ^/(.*)$ /index.php?q=$1 last;
    }

  • lookssl免费的DV SSL证书

    lookssl免费的DV SSL证书

    SSL证书一直是我们所追求网站安全性所必须的,除了各大云提供的各种免费SSL证书,近期我们又发现一家lookssl免费的DV SSL证书。什么来头暂时未知,但是其免费提供Certum–一家波兰老牌的SSL证书的子品牌ROOT CA的证书。

    可惜只提供RSA算法的证书,不提供ECC算法证书。有需要的朋友可以去申请。https://www.lookssl.com/

  • VIM实现默认语法高亮

    VIM实现默认语法高亮

    在一些LINUX系统中,大家常用VIM是没有启用默认的语法高亮的,我们在使用终端的过程中,对着黑白的界面看着多少有点不爽,通过以下方法,我们可以实现VIM默认的语法高亮。

    vim /etc/vim/vimrc

    修改其中的;syntax on,去掉注释。同时在下面增加set term=ansi或者set term=color_xterm,如下

    syntax on
    set term=ansi

    退出VIM,再次打开就可以见到默认的语法高亮了。当然有时候你的终端不支持也需要设置你的终端。例如在secureCRT中需要设置依次选择:Session Option –> Emulation –> Terminal ,选择ANSI,勾选”ANSI color”和”Use color scheme”,退出,重新连接会话即可。

  • PHP安装apcu扩展

    PHP安装apcu扩展

    下载地址 http://pecl.php.net/get/apcu-5.1.16.tgz

     tar zxvf apcu-5.1.16.tgz
    cd apcu-5.1.16

    生成configure文件

    执行,其中/usr/local/php为php安装目录

     /usr/local/php/bin/phpize 

    配置编译参数,其中usr/local/php为php安装目录

    ./configure --with-php-config=/usr/local/php/bin/php-config 

    编译并安装

    make &amp;&amp; make install

    修改配置文件php.ini

    extension = apcu.so
    apc.enabled= on
    apc.shm_size= 64M
    apc.enable_cli = on

    重启php-fpm

    service php-fpm restart
  • 设置Rocky Linux国内源

    Rocky目前国内主流云镜像还没上线,从centos迁移后只能使用官方源,但是实际上国内源已经有,用以下命令可以更新为国内源:

    sed -e 's|^mirrorlist=|#mirrorlist=|g' \
        -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.sjtug.sjtu.edu.cn/rocky|g' \
        -i.bak \
        /etc/yum.repos.d/Rocky-*.repo

    官方列表:https://mirror.rockylinux.org/mirrormanager/mirrors

    更换其他源,对应按照上面替换 Mirror Name 即可,注意路径“/rocky”。

    官方列表:https://mirror.rockylinux.org/mirrormanager/mirrors

  • Centos 8升级内核版本

    Centos 8升级内核版本

    1. 查看当前内核版本使用的系统版本,当前日期CentOS最新版:

    cat /etc/redhat-release 
    CentOS Linux release 8.2.2004 (Core)

    查看当前系统内核版本:

    uname -r
    4.18.0-193.6.3.el8_2.x86_64

    当前日期 Linux 的内核很多都 5.x,各方面考虑还是有必要升级一下的,内核可以从这里直接下载:https://www.kernel.org/


    2. 使用ELRepo仓库
    这里使用ELRepo仓库,ELRepo 仓库是基于社区的用于企业级 Linux 仓库,提供对 RedHat Enterprise(RHEL)和其他基于 RHEL的 Linux 发行版(CentOS、Scientific、Fedora 等)的支持。ELRepo 聚焦于和硬件相关的软件包,包括文件系统驱动、显卡驱动、网络驱动、声卡驱动和摄像头驱动等。网址:http://elrepo.org/tiki/tiki-index.php :

    导入ELRepo仓库的公共密钥:

     rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

    安装ELRepo仓库的yum源:

    $ yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm

    可用的系统内核安装包:

    yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
    bpftool.x86_64 5.7.7-1.el8.elrepo elrepo-kernel
    kernel-ml-devel.x86_64 5.7.7-1.el8.elrepo elrepo-kernel
    kernel-ml-doc.noarch 5.7.7-1.el8.elrepo elrepo-kernel
    kernel-ml-headers.x86_64 5.7.7-1.el8.elrepo elrepo-kernel
    kernel-ml-modules-extra.x86_64 5.7.7-1.el8.elrepo elrepo-kernel
    kernel-ml-tools.x86_64 5.7.7-1.el8.elrepo elrepo-kernel
    kernel-ml-tools-libs.x86_64 5.7.7-1.el8.elrepo elrepo-kernel
    kernel-ml-tools-libs-devel.x86_64 5.7.7-1.el8.elrepo elrepo-kernel
    perf.x86_64 5.7.7-1.el8.elrepo elrepo-kernel
    python3-perf.x86_64 5.7.7-1.el8.elrepo elrepo-kernel

    3. 安装最新版内核

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

    4. 设置以新的内核启动
    0 表示最新安装的内核,设置为 0 表示以新版本内核启动:

    grub2-set-default 0

    以后不需要第5步,直接使用这条指定不同数字设置不同内核版本启动。

    5. 生成grub配置文件并重启系统

    grub2-mkconfig -o /boot/grub2/grub.cfg
    reboot

    这一步可以不用执行生成grub配置的命令,直接重启!

    6. 验证新内核

    uname -r
    2 5.7.7-1.el8.elrepo.x86_64

    这个版本就是本文第一张截图中稳定版 v5.7.7

    7. 查看系统中已安装的内核
    可以看到这里一共安装了3个版本的内核,分别是 v4.18.0-193.6.3 和 v4.18.0-147.5.1以及 v5.7.7-1。

    rpm -qa | grep kernel
    kernel-core-4.18.0-193.6.3.el8_2.x86_64
    kernel-modules-4.18.0-147.5.1.el8_1.x86_64
    kernel-ml-modules-5.7.7-1.el8.elrepo.x86_64
    kernel-devel-4.18.0-147.5.1.el8_1.x86_64
    kernel-4.18.0-80.el8.x86_64
    kernel-tools-libs-4.18.0-193.6.3.el8_2.x86_64
    kernel-core-4.18.0-80.el8.x86_64
    kernel-4.18.0-147.5.1.el8_1.x86_64
    kernel-modules-4.18.0-80.el8.x86_64
    kernel-4.18.0-193.6.3.el8_2.x86_64
    kernel-tools-4.18.0-193.6.3.el8_2.x86_64
    kernel-ml-5.7.7-1.el8.elrepo.x86_64
    kernel-headers-4.18.0-193.6.3.el8_2.x86_64
    kernel-core-4.18.0-147.5.1.el8_1.x86_64
    kernel-devel-4.18.0-193.6.3.el8_2.x86_64
    kernel-modules-4.18.0-193.6.3.el8_2.x86_64
    kernel-ml-core-5.7.7-1.el8.elrepo.x86_64

    8. 删除旧内核
    删除旧内核,这一步是可选的。

    yum remove kernel-core-4.18.0 kernel-devel-4.18.0 kernel-tools-libs-4.18.0 kernel-headers-4.18.0

    再查看系统已安装的内核,确认旧内核版本已经全部删除:

    rpm -qa | grep kernel
    kernel-ml-modules-5.7.7-1.el8.elrepo.x86_64
    kernel-ml-5.7.7-1.el8.elrepo.x86_64
    kernel-ml-core-5.7.7-1.el8.elrepo.x86_64

    也可以安装 yum-utils 工具,当系统安装的内核大于3个时,会自动删除旧的内核版本:

    yum install yum-utils

    删除旧的版本使用 package-cleanup 命令。