已升级至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

阿里云使用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, 自动分表

PostgresSQL启动脚本

建议使用systemd进行管理,不要再使用init脚本了
以下内容更新于2/28/2018

  • 新建文件/etc/systemd/system/postgres.service
[Unit]
Description=Postgresql server
After=network.target

[Service]
User=pgsql
Group=pgsql
Type=forking
ExecStart=/usr/local/postgres/bin/pg_ctl -D /mnt/raid0/data/postgres/10 -l /var/log/pg10.log start
ExecStop=/usr/local/postgres/bin/pg_ctl -D /mnt/raid0/data/postgres/10 -l /var/log/pg10.log stop
ExecReload=/usr/local/postgres/bin/pg_ctl -D /mnt/raid0/data/postgres/10 -l /var/log/pg10.log reload

[Intstall]
WantedBy=multi-user.target
  • 启动并设置开机默认启动
# 每次修改、新增任意一个systemd service或timer、target等都必须先执行一次systemctl daemon-reload
[email protected]:# systemctl daemon-reload
[email protected]:# systemctl start postgres
# 设置开启自动启动
[email protected]:# systemctl enable postgres

# reload和stop
[email protected]:# systemctl reload|stop postgres

以下内容已过时

Debina 7.5 / Ubuntu 14.04 Lts 测试通过

#名字自己取
vim /etc/init.d/pgsql

写入如下内容:

#! /bin/sh

# chkconfig: 2345 98 02
# description: PostgreSQL RDBMS

# 安装路径
prefix=/usr/local/postgres
# 数据路径
PGDATA="/data/pgsql"
# 启动用户
PGUSER=pgsql
# log路径 一般不用改
PGLOG="$PGDATA/pgsql.log"

#OOM_SCORE_ADJ=-1000
#OOM_ADJ=-17


PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DAEMON="$prefix/bin/postmaster"

PGCTL="$prefix/bin/pg_ctl"

set -e

test -x $DAEMON ||
{
    echo "$DAEMON not found"
    if [ "$1" = "stop" ]
    then exit 0
    else exit 5
    fi
}


case $1 in
  start)
    echo -n "Starting PostgreSQL: "
    test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj
    test x"$OOM_ADJ" != x && echo "$OOM_ADJ" > /proc/self/oom_adj
    su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
    echo "ok"
    ;;
  stop)
    echo -n "Stopping PostgreSQL: "
    su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast"
    echo "ok"
    ;;
  restart)
    echo -n "Restarting PostgreSQL: "
    su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w"
    test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj
    test x"$OOM_ADJ" != x && echo "$OOM_ADJ" > /proc/self/oom_adj
    su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
    echo "ok"
    ;;
  reload)
        echo -n "Reload PostgreSQL: "
        su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s"
        echo "ok"
        ;;
  status)
    su - $PGUSER -c "$PGCTL status -D '$PGDATA'"
    ;;
  *)
    # Print help
    echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2
    exit 1
    ;;
esac

exit 0
# 设置自启动
update-rc.d -f pgsql defaults

完成

linux locale一锅烩

/usr/lib/locale/
/usr/share/i18n/locales
/var/lib/locales/supported.d/local ## 已经支持的locale
/usr/lib/locale
/usr/lib/locale/C.UTF-8  ##不明觉厉

当运行某个程序时,会从 /usr/share/locale 这个目录下找对应locale目录下面的LC_MESSAGES目录里找是否有对应的语言文件
如运行gedit时,如果当前locale为zh_CN, 看 /usr/share/locale/zh_CN/LC_MESSAGES目录下有没有gedit.mo文件,如果有会显示出中文的菜单,这里的gedit.mo相当于gedit的汉化包,如果没有则菜单是英文的

记录SVN cannot set locale错误

解决问题之前,先吐槽一下西部数码(fuck west263.com)

西数一直吹嘘自己的云主机多么多么牛掰,别人家的怎么造假,怎么不如他。经不住诱惑购买了一台云主机,第一个月左右还行,没有什么问题,甚至真的感觉他就如当初吹嘘的蜡样流弊!

好景不长,尼玛,就在第二个月!!!刚刚认为靠谱了,突然收到监控短信,HTTP服务异常,马上尝试连接SSH查看情况,诶,还能查看!?为毛?为毛http挂了?查看nginx状态,没问题啊!?@[email protected],见鬼了?,,,,,然后正在维护的过程中,进入到了web目录,ls了一下。。。。尼玛。。。你猜是什么结果!!!!直接尼玛输出 total 0。fk!!!!为毛!!!我的数据呢!!!!!到/data目录,ls,total 0。fk!!!!!神马情况!!!于是,抱着试试看的心态,进入根目录,执行ls,,,,是的,你没猜错。。。total 0!!!!!fk!!!!!!!,  哎,说多了都是泪。。现在正在筹划搬家。

 

——-我是华丽丽的分割线———

 

好了,开始 解决问题。

 

vi /etc/default/locale # 设置LC_ALL=en_US.UTF-8
vi /etc/locale.gen     # 删除掉不需要的
locale-gen             # 重置语言包
echo 'export LC_ALL=C' >> /etc/profile
source /etc/profile

ok。搞定。