loopixのゲーム開発

ゲーム開発初心者が最初から一歩ずつゲーム開発していきます。環境作りからプログラム・サーバ構築までさまざまな内容を書くと思います。
皆さんにも参考になれば幸いです。
よろしくお願いいたします。

メモ3

rubyの勉強


教科書100pまで勉強する。
describe/it/expectを勉強する。


■ ドキュメントを読む
https://about.gitlab.com/documentation/


■ GitLab APIについて
APIの Users について


プライベートトークンってのが見れる。
https://ec2-54-249-3-176.ap-northeast-1.compute.amazonaws.com/api/v3/users?private_token=s7HEdKf2zLAZeVBdYmsG


■ GitLab CIについて
repositoryのrootディレクトリの.gitlab-ci.ymlファイルにビルド定義を書く。

job1:
script: "execute-script-for-job1"


job2:
script: "execute-script-for-job2"


■ GitLab OAuth2について


■ GitLab Basics


■ Importing to GitLab


■ Markdown



-- Administrator documentation


■ 



--ディレクトリを見る。


■ /opt/gitlab/bin/


gitlab-ctl
--start --stop --restart
また、gitlab-ctl restart nginxとか個別に再起動ができる。



gitlab-rails
sudo gitlab-rails console
→ rootのパスワードをリセットしたりとか。


gitlab-rake
sudo gitlab-rake gitlab:check


■ /opt/gitlab/embedded


■ /bin
2to3   →    python2からpython3へ移行するためのもの。
といったように実行ファイルがおいてある。


■ /conf
fastcgi.confとか


■ /cookbook
chef?で、ここで、具体的な設定ができるかも


■ /etc
→カーネルパラメータ


■ /html
index.htmlとかおいてあるが、ドキュメントルートは違うのでたぶん使わない。


■ include
ヘッダファイルがたくさん


■ lib
モジュールがたくさん


■ libexec
git関係のコマンドがたくさん


■ man


■ nodes
どうやら、gitlab.rbから生成されたファイル?っぽいのが作られているっぽい。json形式。


■ sbin
コマンドがたくさん


■ selinux
sshの設定らしきものとか


■ service
なんか、画像ファイルとかあるので、これつかわれてるっぽい?重要そう。
あとhamlファイルがある。


■ share
ここにはサンプルファイルがほとんど。


---embedde終了


■ /etc
gitlab-rails→HOMEが/var/opt/gitlabらしい。


■ /init
→nginxとかgitlab-workhorseなどのデーモンのinitスクリプトがある。


■ /service
→ logの出力先とか、runとかlockファイルがある。


■ sv
serviceといっしょ?なぜ2つあるのか不明。


■ unicorn
unicornのpidファイルだけある。


■ /var/opt/gitlab


■ /git-data
リポジトリがここに作られる。


■ /gitlab-ci
ciのymlファイル置き場?


■ /gitlab-rails
大事そう。
etcは、ymlでいろいろな定義をしている。ほかはとくにでふぉだとふぁいるなし。


■ gitlab-shell
ここもconfig.ymlにいろいろかいてある。


■ gitlab-workhorse
ここにはsocketファイルしか置いていない。


■ logrotate
ここはログローテートの設定


■ 


puma, sidekiqなどの素敵なミドルウェアが利用されている。




■ newprojectのところ
vi _default.html.haml
./app/views/layouts/header/_default.html.haml.orig:
であっている。


参考

http://qiita.com/yousan/items/d102833d867972fbed6d


メモ2

git 勉強


「地獄からの情報マネージャ
ビールにおけるフリー
gitのマスターリポジトリ http://git.kernel.org/git/git.git.


2015/12/05 GitLab 8.2がリリースされた。
→ Git LFSに対応。リリースを保存できる?。ビルド結果を保管できる。


GITLABは3つある
■ gitlab CE
説明            種類
OSS/on-premise   GitHub Like
無料


バージョン8.0からGitLab CIと統合
→ 別途 CI Runnerを用意する必要あり


容量制限:設定次第   LFS:設定次第   CI:内臓  サービス:まあまあ


■ gitlab EE
説明            種類
有償版/on-premise GitHub Like


GitLab EE(BASIC) $390(年額)
GitLab EE(Standard) $4,900(年額)
GitLab EE(PLUS) $14,900(年額)


バージョン8.0からGitLab CIと統合
→ 別途 CI Runnerを用意する必要あり


■ gitlab.com(クラウドサービス)
説明            種類
GitLab EE/Cloud GitHub Like


GitLab.com(Public)
GitLab.com(Private)
→ FREE


CI Runnerが提供→すぐにビルドできる。


容量制限:10GB/repo*3 LFS:10GB/repo*3 CI:内臓  サービス:まあまあ


*3 リポジトリとあわせて10GB→ 意味がわからない


■ GitLab CI
説明            種類
OSS/on-premise   CI Server


Travis CI, CircleCIに近く、Jenkinsのような細かいことはできない。
プロジェクト専用 CI Runnerが作れる。


http://doc.gitlab.com/ce/ci/yaml/README.html


■ GitLab Mattermost
説明            種類
OSS/on-premise   Slack Like
http://doc.gitlab.com/omnibus/gitlab-mattermost/README.html


■ Bitbucket
説明            種類
Cloud    GitHub Like


Private/5 users 無料
Private/10 users $10


LFS対応→Bitbucket


■ GitBucket
OSS/on-premise GitHub Like
無料


容量制限:設定次第     LFS:なし?確認する→   CI:外部   サービス:少なめ


■ GitHub Enterprise
$5000(年額)


■ GitHubとGitLabの違い
UIが違う
用語が違う
・ リポジトリ→ プロジェクト
・ Organization→Group
・ Pull Request→Merge Request
このドキュメントはGitHub用語で統一している。
・外部サービス連携の違いがある。外部連携できるサービスがそんなに多くない。
でも必要なのはまあまあそろってそう。
・GitHubにある、フォロー・フォロワーなどのSNS機能がありません。
・TEAMがない。GitHubではひとつのOrganizationで、複数のTeamをもてるけど、GitLabにはそれがない
・GitHub Pagesがない。(このスライドとか・・)サードパーティで、GitLab Pagesというのがあるみたい?



■ ほかのGitHubクローン
・ SourceForge
・ BitBucket
・ GitOrious
・ Google Code
・ CodePlex
・ Visual Studio team Services
・ Universions
・ GitBucket→日本人が開発。オンプレミス版→ ほぼ一人で開発




■ GitHub
public : 無料
private (Micro/Personal) $7 (5repos)
private (Bronze/Organization) $25 (10repos)


容量制限:1GB/repo*1 LFS : 1GB/repo*2 CI:外部 サービス:豊富
Travis CIなどとの連携が難しいはずなので、無償でここまでできるのはすごい


*1 100MB/file
*2 1GB以上は有料


☆ 考え方
サーバの管理をしたくない人はGitLab.com
社内にサーバーがないと不安jな人はGitLab CE/EE






■ GIT LFSについて
大きなサイズのファイルを扱う Git LFSに対応
ストレージ機能を内蔵しているので、別途Git LFS Serverを立てる必要なし
リポジトリとLFSあわせて、10GBまで使える。


・使い方について
http://doc.gitlab.com/ce/workflow/lfs/manage_large_binaries_with_git_lfs.html




http://masakura.github.io/gitlab-slide/#/3



機能
・Gitリポジトリ
・Issue Tracking System
・Pull Request
・Organization
・Markdown






■ インストール手順
■ 依存関係のあるパッケージをインストール。必要な設定をしておく。
sudo yum install curl policycoreutils openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
→ ここでエラーがでる場合
yum install firewalld
systemctl start firewalld.service
sudo firewall-cmd --permanent --add-service=http
success


sudo systemctl reload firewalld


公式のページにはないが・・・・
systemctl enable gitlab-runsvdir


■ インストール
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce


configure と GitLabサービスの開始
sudo gitlab-ctl reconfigure
sudo gitlab-ctl status




■ 設定
いろいろインストールするとメモリをくうので、swapを足しておく
dd if=/dev/zero of=/swapfile bs=1M count=2000
2000+0 records in
2000+0 records out
2097152000 bytes (2.1 GB) copied, 71.1382 s, 29.5 MB/s


mkswap /swapfile
Setting up swapspace version 1, size = 2047996 KiB
no label, UUID=d514e1fc-c431-4bd0-84f3-b618da0ea289


# vi /etc/fstab


以下を追記
/swapfile swap swap defaults 0 0  ←/swapfileをswap領域としてマウントさせる



■ 日本語化


yum install git patch
git clone https://github.com/ksoichiro/gitlab-i18n-patch.git
patch -p1 < /etc/gitlab/gitlab-i18n-patch/patches/v8.2.0/app_ja.patch


■ https化


※ ここでは、開発用として、おれおれ証明書を作成する。
openssl genrsa 2048 > server.key
openssl req -new -key server.key > server.csr
Country Name (2 letter code) [XX]: JP
State or Province Name (full name) []:<空エンター>
Locality Name (eg, city) [Default City]:<空エンター>
Organization Name (eg, company) [Default Company Ltd]:<空エンター>
Organizational Unit Name (eg, section) []:<空エンター>
Common Name (eg, your name or your server's hostname) []: localhost
Email Address []:<空エンター>


Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<空エンター>
An optional company name []:<空エンター>


SSLサーバ証明書の作成(有効期限10年)
openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt


秘密鍵とSSL証明書を、適切な場所に移動
mv -i server.key /etc/pki/tls/private/
mv -i server.crt /etc/pki/tls/certs/


パーミッションを変更
chmod 400 /etc/pki/tls/private/server.key
chmod 400 /etc/pki/tls/certs/server.crt


CSRを削除
rm server.csr


GitLab のHTTPS設定
vi /etc/gitlab/gitlab.rb


external_url 'http://localhost'
 ↓
external_url 'https://gitlab.example.com'


# nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{node['fqdn']}.crt"
# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqdn']}.key"
 ↓
nginx['ssl_certificate'] = "/etc/pki/tls/certs/server.crt"
nginx['ssl_certificate_key'] = "/etc/pki/tls/private/server.key"


HTTPS(443)ポートを空けておきます。


firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload


メモ

久しぶりに投稿


最近、web漫画かいたりとふらふらしてる・・・


サーバのチェックを自動化するためのスクリプトを作成してましたー

んで、そのメモです。

まだ完成してないんだけどね。


create_servercheck.sh


#!/bin/sh
#
# コンテンツ毎のサーバチェック用自動チェックスクリプトを生成する。
# Edittor :
#


SERVERCHECKHOME=/home/ec2-user/servercheck/
COMMONDIR=/home/ec2-user/servercheck/common/
CID=
SPEC=
ROLE=
V10_CHECK=FALSE
V20_CHECK=FALSE
V40_CHECK=FALSE
V80_CHECK=FALSE
V160_CHECK=FALSE
V240_CHECK=FALSE
Z240_CHECK=FALSE



function usage {
cat <
$(basename ${0}) is a tool for creating auto check scripts by content.



Usage:
$(basename ${0}) [command] []


Options:
-c [Content ID : ex. aaa~zzz]
-v [SPEC : v10/v20/v40/v80/v160/v240/z240]
-r [ROLE : /vir/phy/apache/mysql/memcached/kt/redis


Example:
sh $(basename ${0}) -c atl -v v10 -r apache


EOF
}


# 引数の数が合わなかったらエラー
if [ $# -ne 6 ] ; then
usage
exit 1
fi


# 引数セット
while getopts c:v:r: OPT
do
case $OPT in
"c" ) CID="$OPTARG" ;;
"v" ) SPEC="$OPTARG" ;;
"r" ) ROLE="$OPTARG" ;;
esac
done


# CIDの命名規則に反していたらエラー
if [ -z "`echo $CID | egrep "^[a-z]{3}$"`" ] ; then
echo "[ERROR] : CID must be [aaa-zzz]"
exit 1
fi


# 対象のSPECがない場合はエラー
case $SPEC in
"v10" ) V10_CHECK=TRUE ;;
"v20" ) V20_CHECK=TRUE ;;
"v40" ) V40_CHECK=TRUE ;;
"v80" ) V80_CHECK=TRUE ;;
"v160" ) V160_CHECK=TRUE ;;
"v240" ) V240_CHECK=TRUE ;;
"z240" ) Z240_CHECK=TRUE ;;
* ) echo "[ERROR] : $SPEC spec is not found."
exit 1 ;;
esac


# 対象のROLEがない場合はエラー
case $ROLE in
"vir" ) VIR_CHECK=TRUE ;;
"phy" ) PHY_CHECK=TRUE ;;
"apache" ) APACHE_CHECK=TRUE ;;
"mysql" ) MYSQL_CHECK=TRUE ;;
"memcached" ) MEMCACHED_CHECK=TRUE ;;
"kt" ) KT_CHECK=TRUE ;;
"redis" ) REDIS_CHECK=TRUE ;;
* ) echo "[ERROR] : $ROLE is not found."
exit 1 ;;
esac


# コンテンツ用ディレクトリが作成されていなかったら作成する。
if [ -e $SERVERCHECKHOME/$CID ] ; then
mkdir $SERVERCHECKHOME/$CID
if [ $? -eq 0 ] ; then
echo "Creating Directory $CID."
else
echo "[ERROR] : Don't create Directory."
exit 1
fi
fi




server_check.sh


#!/bin/sh
#
# servercheck のテンプレート
# edit by
#
#


HOSTFILE=/etc/hosts
CID=%CID%
CONFFILE=/home/ec2-user/servercheck/%CID%/%CID%.conf
CHECKFILE=/home/ec2-user/servercheck/%CID%/bin/virtual_check



if [ $# -eq 0 ] ; then
echo "Usage: `basename $0` [cid]"
fi


array=("# start array")


while read line
do
array+=("$line")
done < $CONFFILE


hostarray=("# start hostarray")
midwarearray=("#start midwarearray")


### conffileのhost,middle,attrを配列に入れる。
for i in "${array[@]}"
do


if [[ `echo "$i" | grep -v "^\s*#"` ]] ; then
hostarray+=("`echo "$i" | awk '{print $1,$2,$3}'`")


fi
done



for i in "${hostarray[@]}"
do
if [[ `echo "$i" | grep -v "^\s*#"` ]] ; then
echo $i
fi
done
###


### conffileのhostにひもづくIPアドレスを調べる。
iparray=("# start iparray")


###
while read line
do
cidhost=`echo $line | awk '{print $2}'`
for i in "${hostarray[@]}"
do
grephost=`echo $i | awk '{print $1}'`
middle=`echo $i | awk '{print $2}'`
attr=`echo $i | awk '{print $3}'`
if [[ `echo "$cidhost" | egrep "$grephost"` ]] ; then
iparray+=("`echo "$line" | awk '{print $1}' ; printf "$cidhost $middle $attr"`")
fi
done
done < $HOSTFILE



### チェック
while read shells
do
shell=`echo "$shells" | awk -F "->" '{print $1}'`
ans=`echo "$shells" | awk -F "->" '{print $2}'`
echo -e "\e[33m\e[40mCommand : $shell \e[0m"
for i in "${iparray[@]}"
do
if [[ `echo "$i" | grep -v "^\s*#"` && `echo "$i" | grep -i "vir"` ]] ; then
host=`echo $i | awk '{print $2}'`
if [[ `ssh -n $host "$shell" | grep $ans` ]] ; then
echo -ne "\e[33m\e[44m$host :\e[40m\e[32m" ; ssh -n $host "$shell"
echo -ne "\e[0m"
else
echo -ne "\e[33m\e[44m$host :\e[40m\e[31m" ; ssh -n $host "$shell" ; echo -e "Not equal $ans"
echo -ne "\e[0m"
fi
fi
done
sleep 1
done < $CHECKFILE
wait



[ec2-user@xxxxx bin]$ cat virtual_check
cat /etc/redhat-release->7.1
grep nameserver /etc/resolv.conf->172.31.0.2