kowabana :ローカル環境作成時:エラー対処集

はじめに

ローカル環境:vagrant + virtualbox仮想マシン(Debian8)

リモートリポジトリをローカル環境で立ち上げようと思った時、いろいろエラーが起きました。

エラーに関する、自分なりの対処法です。

cloneする時:fatal: could not create work tree`

fatal: could not create work tree dir 'kivy'

ディレクトリを作成し、その中でcloneを実行して下さい。 アクセスの権限を変えることでも可能だと思います。

$ mkdir my_git
$ cd my_git
$ git clone git@github.com:_git_name_.git

bundle:”An error occurred while installing mysql2”が起きたら

エラーメッセージに従い、以下で解決しました。

$ sudo apt-get install libmysqlclient-dev
$ bundle

rails サーバー起動する時:  There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)

Gemfileに追記

gem 'therubyracer', platforms: :ruby

Rake aborted, Error while trying to load the gem 'uglifier'

$ sudo apt-get install nodejs

でも解決するならこちらが良いかも(Gemfileを汚さない)。

※nodejsをインストールすると、'uglifier'のエラーは回避できますが、railsサーバー起動時に、ExecJS::RuntimeErrorが出てしまったので、結局、therubyracerの方向で行きました。

rails サーバーを起動する時: Could not open library 'libcurl'

$ sudo apt-get install libcurl3

Could not open library 'libcurl': libcurl: cannot open shared object file: No such file or directory

rails s しても何も表示されない

ターミナル上は起動しているように見えるけど、対象のアドレスにアクセスできない。

$ rails s -b 0.0.0.0

rails sで起動したサーバにブラウザからアクセスできない

mysql: Access denied for user 'root'@'localhost' (using password: NO)

railsのapp作成でmysqlを使用する時の導入とハマるところ rake db:createができるまでの流れ

config/database.ymlにあるファイルにあるパスワードの欄が空白なので自分で値を入れて設定する。

Mysql2::Error: Specified key was too long; max key length is 767 bytes

Rails(ActiveRecord)とMySQLでutf8mb4を扱う設定

ActiveRecordのstring型カラムがvarchar(255)で定義されるので、utf8mb4ではインデックスのキープレフィックスが767byteを超えてしまう。

Railsの設定に関して、

MySQL5.7.9以上を利用しているならdatabase.ymlにおいてutf8mb4を設定すればよく、とくべつなことをする必要はない。

ようなので、MySQLを最新のものに入れます。 (my.cnfへの追記などもしたけど、上手くいかなかった。)

Ubuntu14.04 に mysql 5.6 を再インストールした

mysql-serverの削除

$ sudo apt-get remove --purge mysql-server* mysql-common
$ sudo apt-get autoremove --purge

②APTリポジトリ設定用のパッケージ取得(2017/10月では以下が最新) https://dev.mysql.com/downloads/repo/apt/

$ wget http://dev.mysql.com/get/mysql-apt-config_0.8.8-1_all.deb
$ sudo dpkg -i mysql-apt-config_0.8.8-1_all.deb

リポジトリの更新後、インストール

$ sudo apt-get update
$ sudo apt-get install mysql-server
$ mysql-server --version

現時点では、5.7.19がはいる。

アップグレードするとlibmysqlclient_r.so.16: cannot open shared object file: No such file or directoryみたいなエラーがでるかもしれない。

CentOs 6.4(sakura vps)でMySQLのバージョンを5.6にする

mysql 5.6にアップデートすると、libmysqlclient_r.so.16がlibmysqlclient_r.so.18に変わっていました。

$ gem uninstall mysql2
$ gem install mysql2

で解決する。

Rails サーバー起動時に、自動的にkilledされてサーバーが落ちてしまう。

Why does my WEBrick server get killed?

It runs out of memory. The linux kernel kills it. Droplets don't come with any 'swap' by default, so when the memory gets full, it kills a process or won't let you start a new one. Kinda crazy.

超訳linux kernel はメモリー不足が起きるとkillしちまうのさ!

そうです。 vagrantの設定が問題です。

Vagrant で Virtualbox 仮想マシンのメモリ割り当てを増加させる

$ free -m

このコマンドでわかりますが、vagrantではデフォルトのでは480MBが仮想マシンに振り分けられています。

なので、これを拡張します。

ローカル環境に移動して、Vagrantfileをいじります(以下では参照に従い、1GB 割り当てます)。

コメントアウトしてあった部分を有効化しただけです。

config.vm.provider "virtualbox" do |vb|
      vb.memory = "1024"
end

vagrantをリロードして仮想マシンに入ります。

$ vagant reload
$ vagrant ssh

メモリが拡張されていることがわかります。

$ free -m

killedの問題も解決しました。