$ elixir --erl "-detached" -S mix phx.server
Category: ‘CentOS’
Phoenix Server をバックグラウンドにて動作させる方法
Read-only file system のファイルシステムエラー発生
■現象
○SVNコミット時に下記エラーで、コミットできない。
選択されたリソースのいくつかがコミットされませんでした。 svn: E204900: Commit failed (details follow): svn: E204900: Can't create directory '/var/www/svn/repos/project/db/transactions/12345-1.txn': Read-only file system svn: E175002: MKACTIVITY of '/svn/repo/project/!svn/act/b2f11144-123-0010-abcd-c12345678f7': 500 Internal Server Error (http://xx.xx.xx.xx)
■原因
○svnレポジトリ他、/mydisc に対するファイル書き込みができなくなっている。
■対応内容
○/mydisc に対して再マウント ⇒ 失敗
[root]# mount -o remount /dev/sdc1 mount: ブロックデバイス /dev/sdc1 は書き込み禁止です、読込み専用でマウントします
○/mydisc に対してアンマウント ⇒ 失敗
[root]# umount /dev/sdc1 umount: /mydisc: デバイスを使用中です
○/mydisc を利用中のプロセス確認
[root]# fuser -muv /dev/sdc1 USER PID ACCESS COMMAND /dev/sdc1: root 2461 F.... (root)httpd root 5684 F.... (root)PassengerWatchd root 5687 F.... (root)PassengerHelper root 5696 F.... (root)ruby nobody 5700 F.... (nobody)PassengerLoggin apache 5720 F.... (apache)httpd apache 5721 F.... (apache)httpd apache 5722 F.... (apache)httpd mysql 11773 F.c.. (mysql)mysqld root 14145 F.... (root)java
○/mydisc を利用中の httpd / mysqld / java プロセス終了
[root]# /etc/rc.d/init.d/httpd stop httpd を停止中: [ OK ] [root]# /etc/rc.d/init.d/mysqld stop MySQL を停止中: [ OK ] [root]# fuser -muv /dev/sdc1 USER PID ACCESS COMMAND /dev/sdc1: root 14145 F.... (root)java [root]# kill -KILL 14145
○/mydisc に対してアンマウント ⇒ 成功
[root]# umount /dev/sdc1
○マウントの確認
[root]# mount -t ext3 /dev/sdc1 /mydisc
[root]# mount -v /dev/sdc1 on /mydisc type ext3 (rw)
Capstrano3とRuby2.2 on Rails4.2 の設定
Capstrano3を使用しようと試しているが、かなりハマっている。
下記は覚え書き。
rbenvでrubyのバージョンが設定されていないエラー
ERROR rbenv: rbenv_ruby is not set
rbenvのパスが検出されないエラー
ERROR rbenv: 2.2.2 is not installed or not found in ~/.rbenv/versions/2.2.2
deploy.rb
## デプロイサーバのパスを記述 set :rbenv_path, '/var/rbenv' set :rbenv_ruby, '2.2.2' set :application, 'Sample' set :repo_url, 'ssh://hoge@whoocus.com/path/to/git/repo/sample.git'
サーバ上でbundleが見つからないエラー
bundle stderr: rbenv: bundle: command not found
サーバ上でインストール。
gem install bundler
JavaScript runtimeが見つからないとのエラー。
JS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
Gemfile
gem 'execjs' gem 'therubyracer', platforms: :ruby
Nginxのバーチャルホスト設定
バーチャルホストの設定についての体系的な記述が見当たらなかった。
下記の設定方法が正当であるかどうかは不明であるが一つの定番例として覚え書き。
バーチャルホスト設定ファイル配置用のディレクトリ作成
これは習慣的な方法らしく、sites-available
に設定ファイル実体を配置して、sites-enabled
に設定ファイルへのシンボリックリンクを張るらしい。
シンボリックリンクを削除することで、簡単にバーチャルホストのサイトを閉鎖することが可能となる。
$ mkdir /etc/nginx/sites-available $ mkdir /etc/nginx/sites-enabled
sites-availableに設定ファイルを配置
/etc/nginx/sites-available/virtualhost.com
server { listen 80; server_name www.virtualhost.com; access_log /var/log/nginx/virtualhost.com.access.log; location / { root /var/www/html/virtualhost; index index.html index.htm index.php; } location ~ \.php$ { root /var/www/html/virtualhost; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/virtualhost$fastcgi_script_name; include fastcgi_params; } }
$ cd /etc/nginx/sites-enabled/ $ ln -s /etc/nginx/sites-available/virtualhost.com virtualhost.com
シンボリックリンクのあるsites-enabledに対してインクルード
/etc/nginx/nginx.conf
include /etc/nginx/sites-enabled/*;
Apache HTTP Serverに比べると、直感的にも設定ファイルがわかりやすく記述できる。
Ruby2.X.XのCentOS6へのインストール方法
Rubyのバージョンを管理しやすいようにrbebv
を使用して最新Rubyをインストールしようと思い覚え書き。
rbenvのインストール
$ mkdir /var/rbenv $ git clone git://github.com/sstephenson/rbenv.git $ chmod -R 777 /var/rbenv $ cd /var/rbenv/plugins $ git clone git://github.com/sstephenson/ruby-build.git
環境変数設定
$ vi /etc/profile.d/rbenv.sh export RBENV_ROOT="/var/rbenv" export PATH="${RBENV_ROOT}/bin:${PATH}" eval "$(rbenv init -)"
必要なライブラリのインストール
$ yum install -y readline-devel
Rubyのインストール
$ rbenv install 2.X.X Installing ruby-2.X.X...
Rubyバージョンの選択
$ rbenv global 2.X.X
Rubyバージョンの確認
$ ruby --version ruby 2.X.X (2015-08-18 revision 51636) [x86_64-linux]
成功した。
MySQL5.6のCentOS6へのインストール方法
リポジトリ設定
$ yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
インストール
$ yum install mysql-community-server
バージョンの確認
$ mysqld --version mysqld Ver 5.6.26 for Linux on x86_64 (MySQL Community Server (GPL))
自動起動設定
$ chkconfig mysqld on $ chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
サーバの起動
$ service mysqld start
サーバの停止
$ /etc/init.d/mysqld stop
Nginx1.8のCentOS6へのインストール方法
普通にyumインストールすると、古いバージョンのNginx
がインストールされてしまう。
リポジトリ設定
$ rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
インストール
$ yum install nginx
自動起動設定
$ chkconfig nginx on $ chkconfig nginx --list nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
サーバの起動
$ nginx
ブラウザで確認
サーバの停止
$ nginx -s stop
簡単です。
mount時に正常なブロックデバイスではありませんエラー
CentOSからWindowsサーバへバックアップを取る為にマウントする必要がある。
$ mount -t cifs -o username=hoge,password=xxxx "//192.168.0.5/Backup/" /mnt/win
mount時に正常なブロックデバイスではありませんエラーが発生。
samba-clientが必要らしくインストール。
$ yum install samba-client
それでもまだ同じエラーが起きていたので、cifs-utilsのインストール。
CIFS-UTILs
$ tar jxvf cifs-utils-6.3.tar.bz2 $ cd cifs-utils-6.3 $ ./configure --prefix=/usr $ make $ make install
マウント可能となった。
ちなみに、rootユーザ以外がmountする必要がある場合、visudoにて下記を追記する。
$ sudo visudo %ユーザ名 ALL=(ALL) /bin/mount, /bin/umount
Redmineのファイルバックアップスクリプト
特にエラーハンドリングしていないが、覚え書きで。
#!/bin/sh # # Redmine DB backup script FILE_DIR=/app/redmine/files/ DMP_DIR=/var/tmp/ MNT_DIR=/mnt/svn/ BAK_DIR="//10.10.10.10/windows/Backup/server/dir" PERIOD=5 DB_USER=user DB_PASS=pass USER_NAME=winuser PASSWD=winpass EXIT_STATUS=0 FILE_NAME=`date +%y%m%d` RM_FILE_NAME=`date --date "$PERIOD days ago" +%y%m%d` DMP_FILE=$DMP_DIR/Redmine_DB_$FILE_NAME.sql.gz ARC_FILE=$DMP_DIR/Redmine_FILE_$FILE_NAME.tar.gz RM_DMP_FILE=$MNT_DIR/Redmine_DB_$RM_FILE_NAME.sql.gz RM_ARC_FILE=$MNT_DIR/Redmine_FILE_$RM_FILE_NAME.tar.gz # ファイルサーバへマウント mount -t cifs -o username=$USER_NAME,password=$PASSWD $BAK_DIR $MNT_DIR # データのダンプ mysqldump --opt --single-transaction --default-character-set=binary -u $DB_USER --password=$DB_PASS --all-databases | gzip > $DMP_FILE # 添付ファイルのアーカイブ tar cfvz $ARC_FILE $FILE_DIR # ファイルの移動 mv $DMP_FILE $MNT_DIR mv $ARC_FILE $MNT_DIR # ファイルの削除 rm $RM_DMP_FILE rm $RM_ARC_FILE echo "Redmine Backup OK" umount -l $MNT_DIR exit $EXIT_STATUS
gem install mysql2 インストールエラー
対象環境
- CentOS 6.7
- Ruby2.1
- Rails4.1
- MySQL Community Server 5.6.26
概要
Redmineをインストールするにあたって、MySQLをインストールし、Railsで使用するライブラリmysql2のインストールでエラーとなる。
$ gem install mysql2 -v '0.3.19' Fetching: mysql2-0.3.19.gem (100%) Building native extensions. This could take a while... ERROR: Error installing mysql2: ERROR: Failed to build gem native extension. /usr/local/ruby2.2/bin/ruby -r ./siteconf20150814-32250-1l3iwxf.rb extconf.rb checking for ruby/thread.h... yes checking for rb_thread_call_without_gvl() in ruby/thread.h... yes checking for rb_thread_blocking_region()... no checking for rb_wait_for_single_fd()... yes checking for rb_hash_dup()... yes checking for rb_intern3()... yes ----- Using mysql_config at /usr/bin/mysql_config ----- checking for mysql.h... no checking for mysql/mysql.h... no ----- mysql.h is missing. Try 'apt-get install libmysqlclient-dev' or 'yum install mysql-devel', check your installation of mysql and try again. ----- *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/local/ruby2.2/bin/$(RUBY_BASE_NAME) --with-mysql-dir --without-mysql-dir --with-mysql-include --without-mysql-include=${mysql-dir}/include --with-mysql-lib --without-mysql-lib=${mysql-dir}/lib --with-mysql-config --without-mysql-config extconf failed, exit code 1
Windows環境でハマった時の対応方法は、この記事であるが、今回の環境はまた異なるし、対応方法が異なるようだ。
そこで下記`mysql-devel`をインストール。
$ yum install mysql-devel 読み込んだプラグイン:fastestmirror, security インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: centos.usonyx.net パッケージ mysql-devel は mysql-community-devel によって不要になりました。代わりに mysql-community-devel-5.6.26-2.el6.x86_64 のインストールを試みています。 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package mysql-community-devel.x86_64 0:5.6.26-2.el6 will be インストール --> 依存性解決を終了しました。 依存性を解決しました ==================================================================================================== パッケージ アーキテクチャ バージョン リポジトリー 容量 ==================================================================================================== インストールしています: mysql-community-devel x86_64 5.6.26-2.el6 mysql56-community 3.2 M トランザクションの要約 ==================================================================================================== インストール 1 パッケージ 総ダウンロード容量: 3.2 M インストール済み容量: 20 M これでいいですか? [y/N]y パッケージをダウンロードしています: mysql-community-devel-5.6.26-2.el6.x86_64.rpm | 3.2 MB 00:01 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : mysql-community-devel-5.6.26-2.el6.x86_64 1/1 Verifying : mysql-community-devel-5.6.26-2.el6.x86_64 1/1 インストール: mysql-community-devel.x86_64 0:5.6.26-2.el6 完了しました!
再度、試したら上手く行った。
$ gem install mysql2 Building native extensions. This could take a while... Successfully installed mysql2-0.3.19 Parsing documentation for mysql2-0.3.19 Installing ri documentation for mysql2-0.3.19 Done installing documentation for mysql2 after 1 seconds 1 gem installed