申请Let’s Encrypt泛域名证书并自动更新(CloudFlare DNS验证,certbot)

首先登录CloudFlare的个人中心获取 Global API key

My Profile --> API Token --> Global API Key

创建配置文件

mkdir .secrets
vim /root/.secrets/cloudflare.ini
sudo chmod 0700 /root/.secrets/
sudo chmod 0400 /root/.secrets/cloudflare.ini

内容

dns_cloudflare_email = cloudflare@example.com //cloudflare邮箱
dns_cloudflare_api_key = 0123456789abcdef0123456789abcdef01234 //Global API key

安装certbot

pip3 install certbot

安装cloudflare dns 验证插件

sudo apt -y install python3-certbot-dns-cloudflare

生成证书 注意这里的通配符域名必须加引号 '*.biubiu.run'

certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /root/.secrets/cloudflare.ini \
  -d biubiu.run \
  -d '*.biubiu.run'

校验证书

openssl x509 -in /etc/letsencrypt/live/biubiu.run/cert.pem  -noout -text

如果看到输出有如下内容,则表示成功

X509v3 Subject Alternative Name: 
    DNS:*.biubiu.run, DNS:biubiu.run

配置定时更新脚本

15 2 * * * certbot renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"

参考文献

Wildcard certificate from Let’s Encrypt with CloudFlare DNS
Welcome to certbot-dns-cloudflare’s documentation!

安装phalcon报错 php 5 is no longer supported

最近项目中有用到 phalcon框架进行开发

于是帮助测试是同学在centos下搭建phalcon环境,

直接打开根据官网文档源码安装,
phalcon官方文档

sudo yum install php-devel pcre-devel gcc make

git clone https://github.com/phalcon/cphalcon

cd cphalcon/build
sudo ./install

出现报错

php 5 is no longer supported

但是 php -v 得到的版本是 7.0.30

经过一番追查发现主机上有多个 php 版本 ,

php默认是php7.0

但是 phpize 的默认版本却不是 php7.0 自带的 而是系统自带的php5.0的版本,

所以安装的时候需要使用指定的phpize

安装命令改为

sudo ./install --phpize /usr/local/php7.0.30/bin/phpize --php-config /usr/local/php7.0.30/bin/php-config

编译成功 !

当php.ini添加extension=phalcon.so后,重启php-fpm,
报错

PHP Warning:  Cannot load module 'phalcon' because required module 'psr' is not loaded in Unknown on line 0

执行

php -m|gerp phalcon

发现扩展并没有加载进来

一追查才发现phalcon4.0加了依赖条件,必须先安装psr扩展

而3.X的版本不需要,

直接依据官方文档编译安装3.4 的版本,搞定!

centos7搭建wordpress

安装nginx

yum install -y nginx

# 配置开机自启
systemctl enable nginx

centos7,yum 安装Mariadb的默认版本是 5.5,我们先对之前的版本进行卸载

安装mariadb

#卸载之前的版本
yum remove mariadb mariadb-server

#安装最新版mariadb
vim /etc/yum.repos.d/MariaDB.repo

#添加以下内容 (这里使用的是国内中科大的源,速度快)
# MariaDB 10.4 CentOS repository list - created 2020-01-04 13:32 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64/
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

#清除 yum 缓存 
yum clean all 
yum makecache

#安装 MariaDB 新版本 
yum install MariaDB-server MariaDB-client

#配置服务自启动
systemctl enable mariadb

#启动mariadb
systemctl start mariadb

#设置mariadb密码
mysql -u root -p

#然后直接回车进入修改密码
ALTER user 'root'@'localhost' IDENTIFIED BY '123456';

#创建用户
create user 'blog'@'localhost' identified by '123456';

#用户授权
grant all on wordpress.* to 'blog'@'localhost';

安装最新版PHP

# 获取源
yum install -y yum-utils
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum update -y

# 配置默认的 php 源为 7.3
yum-config-manager --enable remi-php73

# 验证默认的 php 版本信息
yum info php

# 安装php
yum install -y php

# 安装php扩展
yum -y install php-fpm php71w-mysql php-xml php-cli php-devel php-mbstring php-common php-gd php-mcrypt php-opcache php-pear zip unzip

# 配置开机自启
systemctl enable php-fpm

# 启动php-fpm
systemctl start php-fpm

安装wordpress

# 创建wordpress文件夹
cd /var/www/html


wget https://cn.wordpress.org/latest-zh_CN.tar.gz

tar -xzvf wordpress-5.3.2-zh_CN.tar.gz

#复制默认配置
cp wp-config-sample.php wp-config.php

#修改数据库配置
vim wp-config.php

配置nginx

#增加配置文件 /etc/nginx/conf.d/www.mysite.com.conf
server {
    listen 80 default_server;
    listen [::]:80 default_server;


    server_name www.mysite.com;
    root /var/www/html/wordpress;

    index index.php index.html index.htm;

    if (!-e $request_filename) {
        rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        #fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

重启nginx

systemctl restart nginx

访问域名进行配置

http://服务器IP/wp-admin

大功告成!

利用mysql存储过程批量插入数据

在日常开发中经常会遇到批量增加数据的情况,手动增加少量数据还可以,若是量一大的话,便比较麻烦

用PHP或者python之类的语言批量添加的话,还要写数据库连接等等,不够快捷

利用mysql的存储过程,我们可以很快的造出自己想要的数据,具体代码如下

#创建存储过程
CREATE PROCEDURE data_insert ()
    BEGIN
        #定义变量
        DECLARE i INT DEFAULT 0;
            WHILE i<100
            DO
                #SQL
                INSERT INTO my_table set uid=1, res_id=i,update_time=0,input_time=0;
                #变量增加
                SET i=i+1;
            END WHILE ;
        commit;
    END;

执行

CALL data_insert();
  • 使用完后记得删除存储过程

删除存储过程

drop procedure data_insert ;

查看存储过程

SHOW PROCEDURE STATUS ;

查看创建存储过程的语句

SHOW CREATE PROCEDURE data_insert ;

Nginx 502 报错 upstream sent too big header while reading response header from upstream

业务中一个php的接口get信息的时候 ,会偶然引起nginx 502 错误
查看nginx错误日志 得到报错信息:

upstream sent too big header while reading response header from upstream

可以看出是header头信息过大引起nginx报错

需要修改nginx的主配置文件
在http模块加入

http {
  proxy_buffer_size   128k;
  proxy_buffers   4 128k;
  proxy_busy_buffers_size   256k;
  proxy_temp_file_write_size 256k;
}

在server块的配置中加入

location ~ .php$ {
    fastcgi_buffer_size 128k;
    fastcgi_buffers 4 128k;
    fastcgi_busy_buffers_size 256k;
}

注意 proxy_temp_file_write_size 的值必须要大于等于 proxy_buffer_size 和 proxy_buffers的值,否则nginx会报错

"proxy_temp_file_write_size" must be equal to or greater than the maximum of the value of "proxy_buffer_size" and one of the "proxy_buffers" in /usr/local/nginx/config/nginx.conf:134

参考链接

https://stackoverflow.com/questions/13894386/upstream-too-big-nginx-codeigniter

chrome地址栏显示www和https

chrome不知道什么时候开始在地址栏中,会自动隐藏 www 和 https://
这对开发人员还是造成了不少的困扰

其实在地址栏显示www和https://还是很简单的,在地址栏分别输入

显示https

chrome://flags/#omnibox-ui-hide-steady-state-url-scheme

显示www

chrome://flags/#omnibox-ui-hide-steady-state-url-trivial-subdomains


选择disable 重启后就可以啦

最终效果

php安装扩展并使用composer引入包(以mongodb为例)

安装扩展

首先安装pecl

//php版本 > 7
wget http://pear.php.net/go-pear.phar
php go-pear.phar

安装扩展

pecl install mongodb
echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

若需要安装指定版本mongodb扩展

pecl install mongodb-1.6.0
echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

检查是否安装成功

php -m |grep mongodb

使用composer 在项目中引入 mongodb

安装composer

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

注意: 如果上述命令因为权限执行失败, 请使用 sudo 再次尝试运行 mv 那行命令

composer require mongodb/mongodb