VirtualBox centos6.8で、Apache+Passenger+Sinatraでの環境構築
してみる
sudoを使えるようにする
使用できるか確認する
1 |
sudo ls / |
・結果表示 We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for centos: ##←パスワードを入力 centos は sudoers ファイル内にありません。この事象は記録・報告されます。 [centos@localhost ~]$
使用できない
1 |
su |
Passwordを入力
1 |
visudo |
ALL=を検索する
1 |
/ALL= |
root ALL=(ALL) ALL
の下に
ユーザー名 ALL=(ALL) ALLを追加する
1 |
centos ALL=(ALL) ALL |
vi のコマンドなので
iで、挿入モードとして
ユーザー名 ALL=(ALL) ALL
を入力し
[Esc]+:+wq+改行で上書き終了
suから抜ける
1 |
exit |
suから抜ける
もう一度ためして見る
1 |
sudo ls / |
・表示結果 [sudo] password for centos: bin dev home lib64 media mnt opt root selinux sys usr boot etc lib lost+found misc net proc sbin srv tmp var [centos@localhost ~]$
できた。
必要なアプリをインストール
1 |
sudo yum -y install git gcc gcc-c++ libcurl-devel httpd httpd-devel openssl-devel readline-devel zlib-devel |
1 2 3 4 5 6 |
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"'>> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc source ~/.bashrc mkdir ~/.rbenv/plugins cd ~/.rbenv/plugins |
1 |
git clone git://github.com/sstephenson/ruby-build.git |
1 |
rbenv install 2.2.5 |
15分ぐらいかかります・・・・
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
rbenv shell 2.2.5 gem install bundler cd mkdir sina cd sina mkdir vendor mkdir vendor/bundle mkdir public mkdir tmp touch tmp/always_restart.txt bundle init echo 'gem "sinatra"' >> Gemfile echo 'gem "passenger"' >> Gemfile bundle install --path vendor/bundle |
1 |
bundle exec passenger-install-apache2-module |
・結果表示 Here's what you can expect from the installation process: 1. The Apache 2 module will be installed for you. 2. You'll learn how to configure Apache. 3. You'll learn how to deploy a Ruby on Rails application. : : Press Enter to continue, or Ctrl-C to abort. 1を、選択 ・結果表示 Use <space> to select. If the menu doesn't display correctly, press '!' ‣ ⬢ Ruby ⬢ Python ⬡ Node.js ⬡ Meteor entrで、進んで行く
1 2 3 4 5 6 7 |
echo "#coding: utf-8" >app.rb echo "require 'sinatra'" >>app.rb echo "get '/' do" >>app.rb echo "'Hello World'" >>app.rb echo "end" >>app.rb echo "require File.expand_path(File.dirname(__FILE__)) + '/app'" >config.ru echo "run Sinatra::Application" >>config.ru |
1 |
su |
1 2 |
bundle exec passenger-install-apache2-module --snippet >> /etc/httpd/conf/httpd.conf echo "DocumentRoot /home/centos/sina/public" >> /etc/httpd/conf/httpd.conf |
1 |
/etc/rc.d/init.d/httpd restart |
エラーがでます
・結果表示 [root@localhost sina]# /etc/rc.d/init.d/httpd restart httpd を停止中: [ OK ] httpd を起動中: httpd: Syntax error on line 1010 of /etc/httpd/conf/httpd.conf: Cannot load /home/centos/sina/vendor/bundle/ruby/2.2.0/gems/passenger-5.0.29/buildout/apache2/mod_passenger.so into server: /home/centos/sina/vendor/bundle/ruby/2.2.0/gems/passenger-5.0.29/buildout/apache2/mod_passenger.so: cannot open shared object file: Permission denied
cannot open shared object file: Permission denied
Permission関係なので、SELinuxの設定を変えてみます
1 |
setenforce 0 |
1 |
/etc/rc.d/init.d/httpd restart |
[root@localhost sina]# /etc/rc.d/init.d/httpd restart httpd を停止中: [ OK ] httpd を起動中: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName [ OK ]
apacheの起動はできた
http://localhost/にアクセスしてみます
1 |
curl 'http://localhost/' |
エラーがでる
[root@localhost sina]# curl 'http://localhost/' <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access / on this server.</p> <hr> <address>Apache/2.2.15 (CentOS) Server at localhost Port 80</address> </body></html> [root@localhost sina]#
apacheのエラーログを調べてみる
まず、error_logのありかを調べる
1 |
find / -name error_log |
・結果表示 /var/log/httpd/error_log
エラーを表示してみる
1 |
cat /var/log/httpd/error_log |
・表示結果 : : [Sat Jun 25 05:17:15 2016] [error] [client ::1] (13)Permission denied: access to / denied
(13)Permission denied: access to / denied
で、Googleに聞いてみる
ユーザホームディレクトリのパーミッションが原因のようだ
http://dqn.sakusakutto.jp/2010/05/apache_13permission_denied_acc.html http://toybox-v2.blogspot.jp/2011/10/13permission-denied-access-to-denied.html(13)Permission denied: access to hoge denied の対処
Permissionを変えてみる
まず、現状を調べる
1 |
ls -la /home/ |
・表示結果 合計 12 drwxr-xr-x. 3 root root 4096 6月 22 05:18 2016 . dr-xr-xr-x. 25 root root 4096 6月 25 04:16 2016 .. drwx------. 33 centos centos 4096 6月 25 05:00 2016 centos
実行権限を付与する
1 2 |
chmod 755 /home/*** ls -la /home/ |
・表示結果 合計 12 drwxr-xr-x. 3 root root 4096 6月 22 05:18 2016 . dr-xr-xr-x. 25 root root 4096 6月 25 04:16 2016 .. drwxr-xr-x. 33 centos centos 4096 6月 25 05:00 2016 centos [root@localhost sina]#
実行権限が付与された
drwx------. 33 centos centos 4096 6月 25 05:00 2016 centos ↓↓ drwxr-xr-x. 33 centos centos 4096 6月 25 05:00 2016 centos
もう一度行ってみる
1 |
/etc/rc.d/init.d/httpd restart |
1 |
curl 'http://localhost/' |
[root@localhost sina]# curl 'http://localhost/' Hello World[root@localhost sina]#
うまく表示された
Firfoxからhttp://localhost/を呼んでも、うまくいった
再起動して確認してましす
必要はファイルなどは、保存後、アプリを終了しておいて、下さい。
リブートします
1 |
reboot |
SELinuxを確認
1 |
getenforce |
[centos@localhost ~]$ getenforce Enforcing [centos@localhost ~]$
Enforcing → SELinux機能、アクセス制御が有効
無効に設定する
/etc/selinux/config
ファイルの
SELINUX=enforcing
を
SELINUX=disabled
に変更します
1 |
sudo vim /etc/selinux/config |
apacheの状態を調べる
1 |
/etc/rc.d/init.d/httpd status |
httpd は停止しています [centos@localhost ~]$
1 |
chkconfig --list | grep httpd |
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
1 |
sudo chkconfig httpd on |
1 |
chkconfig --list | grep httpd |
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
レベル2から5がon(自動起動)になる
再度、リブートしてみます
1 |
reboot |
SELinuxを確認
1 |
getenforce |
[centos@localhost ~]$ getenforce Disabled [centos@localhost ~]$
無効なのでOK
apacheの状態を調べる
1 |
sudo /etc/rc.d/init.d/httpd status |
[sudo] password for centos: httpd (pid 2021) を実行中... [centos@localhost ~]$
実行中なのでOK
localhostにアクセスしてみる
1 |
curl 'http://localhost/' |
[centos@localhost ~]$ curl 'http://localhost/' Hello World[centos@localhost ~]$
接続できた
Firfox
http://localhost/
にアクセスする
Hello World
無事表示されました