解决执行 pecl upgrade-all 提示 Error getting channel info from pear.php.net: Connection to `ssl://pear.php.net:443' failed:Connection to 'ssl://pecl.php.net:443' failed: Unable to find the socket 错误。

出现这个错误主要是因为缺失默认证书导致的,具体原因不明。

下面说一下解决方案:

1、查看 default_cert_file 的路径

php -r "print_r(openssl_get_cert_locations());"

2、下载证书

wget -P /etc/ssl/ http://curl.haxx.se/ca/cacert.pem
chmod 744 /etc/ssl/cacert.pem

注意:其中 /etc/ssl/cacert.pem 替换为自己的真实路径

我们以Nginx 1.18.0为例子,手动编译升级Nginx,使Nginx支持HTTP2和TLS 1.3。

一、准备编译环境

1、检查 OpenSSL 版本

由于 TLS 1.3 需要 OpenSSL 1.1.1 或更高的版本支持,所以为了确保TLS1.3的正常运行,先检查 OpenSSL 版本

openssl version

OpenSSL 1.0.2k-fips 26 Jan 2017

如果低于 OpenSSL 1.1.1,请参考 https://www.24kplus.com/linux/97.html 升级 OpenSSL

2、安装依赖库

yum -y install libxml2 libxml2-devel libxslt-devel gd-devel gperftools libuuid-devel libblkid-devel libudev-devel fuse-devel libedit-devel libatomic_ops-devel gcc-c++

如果要启用 GeoIP2 模块,还需要安装 libmaxminddb;启用 IP2Location 模块需要安装 IP2Location C Library

3、获取上一次编译的参数

nginx -V

把红色框框的参数拷贝出来,后面会用到。

二、下载&编译&升级

1、下载解压

wget https://nginx.org/download/nginx-1.18.0.tar.gz
tar -xvf nginx-1.18.0.tar.gz
cd nginx-1.18.0

2、配置编译参数

把原版本编译参数(上面拷贝出来的)粘贴上去,如果 --with-http_v2_module 参数没有则在最后加入一行 --with-http_v2_module

./configure \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules
......
--with-http_v2_module

3、编译

make

4、升级 Nginx

停止 Nginx 服务

systemctl stop nginx

备份旧版本 Nginx

注意:sbin实际路径可能和教程的不一样,具体路径看 nginx -V 命令输出的 --sbin-path 参数

cp /usr/sbin/nginx /usr/sbin/nginx.bak

拷贝新版本到 /usr/sbin

cp objs/nginx /usr/sbin/

开始升级 Nginx

make upgrade

最后,启动 Nginx

systemctl start nginx

5、检查升级结果

nginx -V

C# .NET Hallo world

要解决中文乱码问题,首先我们需要知道原因,一开始我尝试了gb2312,utf-8等多种编码格式导出,使用 Execl 打开均为乱码,后来无意中发现,必须为“带 BOM 的 UTF-8”。

代码示例:

using(var sw = new File.CreateText(fileName))
{
	sw .WriteLine(csvContent);
}

如果是asp.net页面输出,则为:

Response.Clear();
Response.Buffer = true;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToShortDateString() + fileName + ".xls");
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Charset = "utf-8";
Response.ContentType = "text/csv";
using(var outputWriter = new StreamWriter(Response.OutputStream, System.Text.Encoding.UTF8))
{
	outputWriter.WriteLine(csvContent);
}
Response.Flush();
Response.End();

1、准备编译环境

yum install autoconf automake libtool make gcc libwebp libwebp-devel -y

2、下载并解压

wget https://imagemagick.org/download/ImageMagick.tar.gz
tar -xzf ImageMagick.tar.gz
#注意:如果是CnetOS 8则需要输入完整路径
cd ImageMagick*

3、配置并编译

由于7.0之后的版本默认开启webp支持,所以不再需要 --with-webp 参数

./configure --prefix=/usr
make
sudo make install
ldconfig

4、PHP 安装 imagick 模块

pecl install imagick

会提示:Please provide the prefix of ImageMagick installation [autodetect] :,输入ImageMagick的安装路径:

/usr

回车,等待完成安装。

5、配置 imagick 模块

在php.ini文件加入一行

extension=imagick.so

然后重启 php-fpm,使 imagick 模块生效

Oracle 团队提交的一个补丁将有望使 Linux 内核的引导时间大大缩减,最高可以提速 49%。

Oracle 提交补丁,可使 Linux 内核引导提速 6%-49%

Oracle 开发者在邮件列表中指出,该补丁扩展了 padata,使其可以处理多线程作业。padata 原本只是可以用于处理多个并行单线程作业的框架,补丁添加了 padata 在 CPU 内核之间平均分配工作来处理多线程作业的能力,它会将最小工作量分配给适合处理的协作线程,并且在这些协作线程之间进行负载均衡。

该补丁会推迟 Linux 引导中的 struct page init,这是内核引导过程中的一大性能瓶颈,它并不需要并发限制、资源控制或优先级调整。在各种 x86 系统上进行测试,开发者发现该补丁将延迟的初始化速度提高 63% 至 91%,而这可以将内核引导速度提高 6% 至 49%。尤其是在具有大量 RAM 的多节点环境中,性能改进更为明显。

此补丁的改进同时也使启动虚拟机的时间缩减,这对于云计算环境来说非常重要,因为需要应对不断变化的容量/需求伸缩变化的情况。

解决 CentOS 8 安装 Docker 报错:package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3

需要安装新版containerd.io

yum install https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.3.7-3.1.el8.x86_64.rpm

去年 8 月,谷歌开始在 Chrome 76 版本中的 URL 栏内隐藏 “www” 子域和 “https://” 标识符,目前为止,它们都仍是默认隐藏状态,即便这一做法招致广大用户的不满。

除了单击地址栏外,另一种查看网页完整 URL 的方法是,安装谷歌的 Suspicious Site Reporter(可疑站点报告)扩展。曾经有一段时间,Chromium 团队通过临时的 “Omnibox UI Hide Steay-State URL Scheme and Trivial Subdomains” 标识允许用户重新显示 “https://” 和 “www”,不过后来该设置已不可用。

现在,谷歌又在 Chrome 83 Canary 版本的 Omnibox 上下文菜单中提供了一个内置选项,可通过启用它来显示网页完整 URL。

具体操作方式如下:

  • 使用 Chrome 83 Canary 或更高版本;
  • 前往 chrome://flags 页面;
  • 加载 chrome://flags/#omnibox-context-menu-show-full-urls;
  • 选择启用,然后重新启动浏览器;
  • 重新启动 Chrome 后,访问任意网站,在 Omnibox 中选择域,然后右键单击并选中 “Show URL” 选项,最后单击网页上的任何其他区域以恢复 URL 的默认状态。

消息来源:techdows

CentOS 7 源码安装 CMake 3.17.0 最新稳定版。解决 cmake: command not found 问题。

1、准备编译环境

yum -y install gcc gcc-c++ openssl openssl-devel tar make

2、获取源码,并解压

wget https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0.tar.gz
tar -zxf cmake-3.17.0.tar.gz
cd cmake-3.17.0

备用下载地址:https://down.24kplus.com/linux/cmake/cmake-3.17.0.tar.gz

3、编译安装

./bootstrap --prefix=/usr --datadir=share/cmake --docdir=doc/cmake && make
sudo make install

4、检查是否正确安装

cmake --version

cmake version 3.17.0

CMake suite maintained and supported by Kitware (kitware.com/cmake).

一、命令格式

mkpasswd [ args ] [ user ]

二、 命令功能

mkpasswd命令是make password的简写。可以随机生成密码字符串。

三、 命令参数

-l 定义密码长度。默认为9。
-d 至少包含阿拉伯数字的个数。默认为2。
-c 至少包含的小写字母个数。默认为2。
-C 至少包含的大写字母个数。默认为2。
-s 至少包含的特殊字符个数。默认为1。
-p 设置密码的程序命名。 默认情况下,使用/etc/yppasswd(如果存在),否则使用/bin/passwd。

例子:

[root@myvps ~]# mkpasswd -l 20 -d 4 -c 6 -C 5 -s 5
uSp9,|Lp2'F8Ra8r!"zP