分类 运维 下的文章

curl和wget 在linux下出现证书错误的另类解决方案

今天在部署两台新机器的时候,rpm、wget 和 curl 均出现:

Peer certificate cannot be authenticated with known CA certificates

然后整了很多方法,例如:

curl https://curl.haxx.se/ca/cacert.pem --insecure -o /etc/pki/tls/certs/ca-bundle.crt

例如:

update-ca-trust

结果依旧无法识别证书。

甚至在准备要升级下 tlinux 内核...

正当一愁莫展的时候,ls 发现新建的文件时间都是2015年...心想会不会和时间有关?

于是立马执行:

rdate -s time.nist.gov

成功后,再试一次 curl https

结果成功了。。。。。。

这踏马就尴尬了,低级错误。。。。

写到这里,希望后来有人遇到这个问题可以看到。

操作系统:centos 6.7 / centos 6.8

如何在PHP7中安装ImageMagick扩展(centos版)

(YUM 安装 PHP7 的方法在这里:PHP7安装

yum 命令(先安装 php7、PHP7-devel、ImageMagick-devel):

yum install -y php70w php70w-devel ImageMagick-devel

mkdir download/
cd download/
git clone https://github.com/mkoppanen/imagick.git
cd imagick
phpize
./configure
make && sudo make install
echo extension=imagick.so >> /etc/php.d/imagick.ini

然后,看看扩展是否正常安装:

php -m | grep imagick

返回结果为imagick 即安装成功。

利用 MYSQL 的 PARTITION 来实现海量数据高性能研究笔记(一)

PARTITION 分区技术介绍就在这里不细述了,有心人请自行百度。

遇到问题

我这里遇到的情况是,一个平台,下边有许多许多的代理商,每个代理商对应一个 site_id.

因为每个代理商之间的数据都是互不影响的,想根据 HASH(site_id) 来分区。

数据量因为不是很大,而且写比读频繁,所以暂时只考虑 MYISAM 引擎。

CREATE TABLE `test` (
   `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
   `site_id` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '站点id',
    PRIMARY KEY (`id`),
    KEY `siteIndex` (`site_id`)
)ENGINE=MYISAM DEFAULT CHARSET=utf8 PARTITION BY HASH (site_id) PARTITIONS 10;

于是遇到

错误码: 1503
A PRIMARY KEY must include all columns in the table's partitioning function

这个问题的原因是因为 分区的参数必须包含 PRIMARY KEY , 主键id, 必须放在HASH(id)中。

所以,在创建表的时候不能设置主键。因此 id 字段也不能自增。

解决方案

将id 改成 char(16),创建使用唯一 guid的方案:

/**
 * get guid by
 *
 * @return string|void
 */
function guid($pre = '') {
    return ($pre ? $pre : '') . substr(md5(uniqid(($pre ? $pre : '') . mt_rand(), true)), 9, 16);
}

因为 id 必须要为数字(需要coreseek配合全文索引),所以这个方案暂时放一放。

后来,还是决定把 id 字段 INT(10) 不变,变为索引字段。

然后外建一个表:

CREATE TABLE `maxid` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `tb` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '表名',
  `maxid` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT '最大自增id',
  `step` INT(5) UNSIGNED NOT NULL DEFAULT '1' COMMENT '步长',
  PRIMARY KEY (`id`),
  UNIQUE KEY `tb` (`tb`)
) ENGINE=MYISAM DEFAULT CHARSET=utf8;

手工统计自增的id。
(在高并发的系统中,需要在获取 maxid 之前要加锁。否则极有可能会产生重复的id。)

PHP 5.3.22在windows7中安装 imagick 扩展。

开发机上win7因为依赖扩展等的原因停留在5.3.22上,最近在处理缩小 PNG 和 GIF 图片时,发现 GD 对图片大小不但没有减少,而且还巨大无比,这是无法接受的。

记一下如何安装 PHP-imagick 扩展:

1、下载对应版本的php_imagick.dll,解压至PHP扩展目录,例如C:\php\ext\

下载地址:http://windows.php.net/downloads/pecl/releases/imagick/

(博主用的版本是3.1.2)

2、安装重启server后,打开 页面,发现:

ImageMagick number of supported formats: 0
ImageMagick supported formats : no value

这时,说明你本机没有安装 ImageMagick。

那你的机器适合 ImageMagick 哪个版本呢?

还是 phpinfo 页面:

imagick.jpg

这里提示你应该安装哪个版本:

ImageMagick version ImageMagick 6.8.8-4 Q16 x86 2014-01-29 http://www.imagemagick.org

这个版本年代太比较久远,我只在CSDN上找到下载:http://download.csdn.net/detail/lqt0307/5184966

下载,安装路径选个:c:\imagick\ 一路下一步,安装结束

3、计算机->右键->属性->高级系统设置->高级->环境变量,添加「系统变量」:
变量名:MAGICK_HOME
变量值:C:\ImageMagick\ (你的安装路径)

path.jpg

4、将C:\ImageMagick\modules\coders\ 和C:\ImageMagick\modules\filters\ 里的文件拷至C:\ImageMagick\目录。

5、重启你的 webserver。

再次打开phpinfo页面,你能看到:

phpinfo.jpg

恭喜,安装成功!

后续

centos 安装 imagick 扩展顺带如下:

yum install php-pear php-devel gcc
yum install ImageMagick ImageMagick-devel
pecl install imagick
echo "extension=imagick.so" > /etc/php.d/imagick.ini

利用七牛自带的 qshell 定期清理过期文件~

新项目需要上传临时图片在七牛中,七牛对存储空间有收费,于是乎,我们需要定期删除(仅保存半天内内)的文件,附上代码:

#!/bin/bash 
#要删除的bucket 
bucket="text"
currentTime=`date "+%Y-%m-%d %H:%M:%S"`
timestamp=`date -d "$currentTime" +%s`
# 保存多久的文件
let starttime=($timestamp-43200)
#配置您的账号信息,具体请参考:https://github.com/qiniu/qshell
qshell account xxx xxx
#取出bucket中的有文件
qshell listbucket $bucket ${bucket}_file.org
#取出key和创建时间
cat ${bucket}_file.org | awk '{print $1,$4}' > ${bucket}_file.list
let count=0
while read line
do
   time=${line#* }
   key=${line%% *}
   let time=time/10000000
   # 对比时间戳
   if [ $time -le $starttime ]; then
      res=`qshell delete ${bucket} ${key}`
      let count+=1
      echo $count, $key, $res
   fi
done < ${bucket}_file.list
# 清除产生的临时
rm -rf ${bucket}_*

每个小时清理一次的crontab:

    0 * * * * cd /home/www/ && sh clear_qiniu.sh > /home/www/clear_qiniu.log