已升级至php7.0.0-dev

探针地址:https://www.cevin.me/phpinfo.php

编译参数(记住buildconf):

./configure –prefix=/usr/local/php7 –with-config-file-path=/usr/local/php/etc –with-jpeg-dir –with-gd –with-png-dir –with-freetype-dir –with-mhash –with-mcrypt –with-openssl –with-curl –without-pear –with-libxml-dir –with-zlib –enable-bcmath –enable-exif –enable-ftp –with-gettext –enable-mbstring –with-mysql=mysqlnd –with-pdo-mysql=mysqlnd –with-mysqli=mysqlnd –enable-soap –enable-zip –with-iconv-dir –enable-fpm –with-pdo-pgsql=/usr/local/pgsql –with-pgsql=/usr/local/pgsql –enable-sockets –enable-mysqlnd

php7-dev最新版本源码:https://github.com/php/php-src/archive/master.zip

弱弱的说一下:性能提升明显 🙂

Systemd脚本规范

/etc/systemd/system/pgsql.service

[Unit]
Description=PostgreSQL-XL Master Node

[Service]
Type=forking
User=pgsql
GuessMainPID=yes
ExecStart=/usr/local/pgxl/bin/pg_ctl -D /data/pg-hma -l /data/pglog/hma start
ExecStop=/usr/local/pgxl/bin/pg_ctl -D /data/pg-hma -l /data/pglog/hma stop
# 如果进程意外终止自动重新启动 systemctl 结束不会自动重启
Restart=always

[Install]
WantedBy=multi-user.target

启动: systemctl start pgsql
状态:systemctl status pgsql

mysql:

[Unit]
Description=MySQL RDBMS

[Service]
#类型simple
Type=simple
GuessMainPID=yes
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf
Restart=always

[Install]
WantedBy=multi-user.target

了解更多点击这里:https://zh.opensuse.org/openSUSE:How_to_write_a_systemd_service

Postgis安装指南

1.下载
http://www.posgtis.net/
建议下载源码,自行编译安装

2.安装依赖

apt-get install libgeos++-dev  libproj-dev libjson0-dev libjson-c-dev -y

其他依赖:gdal,请在www.gdal.org下载
编译gdal

./configure --with-pg=/usr/local/postgresql/bin/pg_config --with-geos
make && make install

*gdal编译完成后会提示支持哪些功能扩展,建议能开启的都开启

3.安装Postgis
安装过程中提示缺少的lib*自行安装

./configure --with-pgconfig=/usr/local/postgresql/bin/pg_config && make && make install

4.登录Psql,在指定数据库中开启postgis扩展(不要问为啥已经安装了还要开启)

postgres#: create extension postgis;
CREATE EXTENSION
postgres#: create extension postgis_topology;
CREATE EXTENSION

安装完成。

Linux 下 iptables 双网卡 外网到内网端口转发

由于业务需要,服务器越来越多,内网服务器无外网环境管理甚是不便,所以折腾了一下外网到内网的端口转发以达到轻松管理的目的,贴一下心得。

S1:
eth0 10.0.0.1
eth1 x.x.x.x

S2:
eth0 10.0.0.2

S1 8082端口转发到内网机器22端口

iptables规则配置如下:

iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 8082 -j DNAT --to-destination 10.0.0.2:22
iptables -t nat -A POSTROUTING -d 10.0.0.2 -p tcp --dport 22 -j SNAT --to-source x.x.x.x
iptables -t nat -A PREROUTING -d "对外公网ip" -p tcp --dport "对外端口" -j DNAT --to "内部实际提供服务的ip":"实际提供服务的端口"
iptables -t nat -A POSTROUTING -d "内部实际提供服务的ip"-p tcp --dport "实际提供服务的端口" -j SNAT --to-source "运行iptables机器的内网ip"

阿里云使用Atlas从外网访问MySQL(RDS),Or, 自动分表

先纠正误区:
在ECS上使用Atals中转访问RDS不会影响效率,不要认为使用Atals后连接数据库会慢,连接数会疯狂占用,事实情况是刚好相反。

Atlas不处理主从数据库数据同步,只是个负载均衡的连接池工具,主从同步请使用其他工具另行实现,本文只为了外网访问RDS(流量免费),实现连接池,有效利用RDS连接数。

Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。

主要功能:
读写分离 从库负载均衡 IP过滤 自动分表 DBA可平滑上下线DB 自动摘除宕机的DB

继续阅读阿里云使用Atlas从外网访问MySQL(RDS),Or, 自动分表

Nginx日志分割

nginx 配置:

server {
    ....
    access_log /data/logs/web_domain.com.log;
    ....
}

日志分割脚本:

#!/bin/bash
# /data/sh/rotate.sh

log_path="/data/logs/"
nginx="/usr/local/bin/sbin/nginx"

mv ${log_path}/web_domain.com.log ${log_path}/web_domain.com_`date +"%Y%m%d"`.log

# 删除7天前的日志
find ${log_path} -amin +10080 -exec rm -r {} \;

# 重启nginx
/usr/local/nginx/sbin/nginx -s reload

设置crontab

# 编辑crontab
crontab -e

# 添加
00 * * * * bash /data/sh/rotate.sh

搞掂~

Linux更改时区

Debian/Ubuntu可以直接执行dpkg-reconfigure tzdata,在可视化界面选择Asia->Shanghai(Chongqing)即可更改默认时区(Debian 7.5/Ubuntu 14.04及以下版本测试通过)。

CentOS及其他Linux发行版通用做法:
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
然后重启系统后更改到亚洲+8时区