php7系でcomposer installするとOpenSSL Error

症状

php5.6のCentOSサーバーでcomposer installしようとしたら下記エラーがでた。

[Composer\Downloader\TransportException]                                                                                           
  The "https://packagist.org/packages.json" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages:  
  error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed                                                  
  Failed to enable crypto                                                                                                            
  failed to open stream: operation failed

ググったところ、仮想マシンの再起動や、php.iniファイルに
openssl.cafile=/etc/ssl/certs/ca-bundle.crt

を追記すると治るケースがあるという情報がありましたがどちかも解決しませんでした。

改善した方法

結果下記で改善されました。

$ sudo yum install ca-certificates

※nginxやphp-fpm等の再起動も反映には必要かもしれません。

その後 composer installが通るようになりました。


CentOS7にag(the silver searcher)をyumでインストール

ボクの環境用に備忘録

昔ながらのよく標準で入っている、ファイルの横断検索grep

これはカレントの場所から横断検索している例


$ find ./ -type f -print | xargs grep -n '検索文字'

ただ、この方法だとファイル数が多いと検索結果がでるまで遅い。
もうこの方法を使っている人は少ないはず。

で、


$ ag '検索文字'

でgrepするためのag(the silver searcher)のインストール方法

CentOS7にyumでインストール


$ sudo yum install the_silver_searcher

MacのHomebrewでインストール


$ brew install the_silver_searcher

SQLite3の.sqlite3ファイル操作中の挙動メモ

最近ゲームサーバーのランキングデータを、

簡単に扱えるSQLite3を使って運用した際に、びっくりした挙動もメモ。

即席で作ったのでベタソース2枚のみw

構成

  • SQLite3のsqlite3ファイルをマスター用とスレーブ(読み取り専用)用の2つ用意し、
  • Redisをキャッシュ&集計処理用として利用をしていて。

下記のようなアクセスが秒間で数十あり。


// redisから現在のスコア取得 $currentScore = $redis->hGet('score', $_user); // SQliteで現在順位を取得 $pdo = new PDO('sqlite:db.sqlite3', "", ""); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $pdo->prepare("SELECT * FROM rankTable order by abs( ? - score) limit 1"); $stmt->execute([$currentScore]); $searchRank = $stmt->fetch();

毎回ソートとする集計はさすがに重いので、

下記のようなバッチソースをcronで一定間隔で集計。


// sqlite3ファイル上書きコピー if( copy($MasterDbFile, $ReadDbFile) ){ echo "db 上書きOK"; }else{ alertPush("sqlitecopy エラー"); }

このsqlite3ファイル、、毎回copyで上書きしている、、、!!!!
なのに、ReadDbFileのsqlite3ファイルへの接続は、、、

なんと生きているんす、、!!!

普通にselectで検索できちゃってます。。!

コピー中にアクセスしてもエラーにならない、、ロック処理みたいのがはたらいるのかな。。特に意識せずにやってけど、、

実際数十万のスコアデータランキングを格安(月額1000円未満の1台)サーバーでやって一度もエラーになっていませんでした(今のところ)wすごい

MySQL 『ロック関連』の入門メモ

たまにしか使わないので、よく忘れてしまうMySQLのロック処理。

この機会メモ!

mysqldump 時にread lock (読み込みのみ許可)をする際は、下記オプションをつける。


mysqldump -u root -p --lock-all-tables -A > dump20110120.sql

「–lock-all-tables」 = FLUSH TABLES WITH READ LOCKと同じ。(全テーブルをreadロック)

テーブルをreadロック


mysql> LOCK TABLES friends READ; READロックを取得

mysql> LOCK TABLES friends WRITE; WRITEロックを取得

mysql> LOCK TABLES table_a READ, table_b WRITE; 複数のテーブルを同時にロック

テーブルのロックを解除する場合は、以下のようにする。


mysql> UNLOCK TABLES;

※ロック中は、挙動としてselectやupdateをした際に、ロックがはずれるまで応答をまつ。

Cakephp3をCentOS7( php7 + php-fpm + nginx + MySQL )にインストールした際のメモ

大分出遅れた感がありますが、最近cakephp3のサービスを構築したので、
それを兼ねてメモ。

早速、cakephp3の公式サイトでインストール方法を確認。

http://book.cakephp.org/3.0/ja/installation.html

システム要件を確認すると。。。

システム要件
HTTPサーバー。例: Apache。mod_rewrite が推奨されますが、必須ではありません。
PHP 5.5.9 以上 (PHP 7 も含む)
PHP mbstring 拡張
PHP intl 拡張

…(PHP 7も含む)!

せっかくなので、速いとウワサのphp7に、php-fpmと、nginxの構成で、
yumでインストールしてみました!!

はじめてのCentOS7 セットアップめもw

CentOS7にのりかえて、ちょっと焦ったのでめも。
ちょっと触ると逆に6よりわかりやすいかもw

※rpmforage

# rpm -ivh http://apt.sw.be/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

※epel

# rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

※remiを追加

# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

yumをアップデート

# yum update

nginx + php-fpm + redis のインストール

CentOS7から デフォルトでserviceコマンドではなく、systemctlコマンドでサービスを管理するようになった。

nginxのインストール

# yum install nginx
# systemctl status nginx.service
# systemctl start nginx.service
# systemctl enable nginx.service

※php-fpm.d/www.conf のuser と group を apahce → nginx へ

php-fpmのインストール

# yum install php-fpm php-mbstring php-gd  php-mysql php-redis
# systemctl status php-fpm.service
# systemctl start php-fpm.service
# systemctl enable php-fpm.service

redisのインストール

# yum install redis
# systemctl status redis.service
# systemctl start redis.service
# systemctl enable redis.service

CentOS6.5に docker + fig のインストール

まずdockeryumでインストール

$sudo yum install docker
$sudo docker --version

次にfigをインストール

curlでインストール

$sudo sh -c "curl -L https://github.com/docker/fig/releases/download/0.5.2/linux > /usr/bin/fig"
$sudo chmod +x /usr/bin/fig
$sudo fig --version 

僕の場合これで下記のようなエラーになったが、

fig: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /tmp/_MEIieSV5R/libz.so.1)

pipでインストールすると

$sudo yum install python-pip
$sudo pip install -U fig
$fig --version
fig 1.0.1

おお、成功!!

あとはfig.ymlなどつくって、fig up