ナレッジに記事がある
高橋くんのナレッジ記事も参考に
ユーザの作成
サーバを起動する
まずは管理画面からサーバを起動する。
コンソールから見ると、以下のメッセージで止まっている時間がとても長い。
気長に待つべし。
Updating RPMS on system:
ログイン
rootでログインする。
パスワードは、さくらインターネットから来たメールで確認。
OSの再インストールを行っている場合は、事前に自分で決めているはず。
$ ssh root@<IPアドレス>
ユーザの追加とパスワードの設定
ユーザ名は hoshi005 ということで話を進める。
$ useradd hoshi005
$ passwd hoshi005
sudo権限の付与
$ visudo
# 以下を追加する.
hoshi005 ALL=(ALL) ALL
ホームディレクトリの権限変更
$ chmod 755 /home/hoshi005/
これをしないと...
- WEB公開できない?
- SSHログインできない?
sudo権限を確認してみる
$ sudo su hoshi005
$ sudo ls -ltr /var/log
# ここでパスワードを聞かれる.
# ログが更新時間でソートされていればOK.
秘密鍵と公開鍵を利用したsshログイン
【Mac側】秘密鍵と公開鍵の作成.
一旦、Mac側で秘密鍵と公開鍵を作成する.
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
# 作成される場所。問題なければEnter.
Enter file in which to save the key (/Users/hoshi005/.ssh/id_rsa):
# パスフレーズの入力。省略する場合はそのままEnter.
Enter passphrase (empty for no passphrase):
# パスフレーズの再入力。省略した場合はそのままEnter.
Enter same passphrase again:
公開鍵(デフォルトならid_rsa.pub)をテキストエディタで開く.
このうち、最後のパソコン名部分よりも前の部分をコピーして利用する.
# id_rsa.pubの中身.
ssh-rsa XXXXX..........XXXXX hoshi005@Hoshikawa-no-MacBook-Pro.local
秘密鍵(デフォルトならid_rsa)のアクセス権を変更する.
$ chmod 600 id_rsa
sshの公開キーの設定.
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ vi ~/.ssh/authorized_keys
# あらかじめ作成した公開キーの内容を貼り付ける.
# 改行などはしなくて良い.
$ chmod 600 ~/.ssh/authorized_keys
sshの設定.
rootアカウントに戻って、sshの設定を行う.
# rootに戻る.
$ exit
# sshの設定.
$ vi /etc/ssh/sshd_config
変更内容は以下のとおり.
# 以下のコメントアウトを外し、任意の値に.
Port 50022
# 以下のコメントアウトを外す.
RSAAuthentication yes // これはもう不要っぽい
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 以下を yes > no に変更する.
PasswordAuthentication yes
↓↓↓
PasswordAuthentication no
変更が終わったら、sshdの再起動.
$ service sshd restart
sshの確認.
これで、ターミナルからrootではログインできなくなるはず.
今現在、rootでログインしているターミナルウィンドウは、消さないようにしておく.
hoshi005アカウントでsshログインができないこと、できることを確認する.
# こっちは失敗するはず.
$ ssh hoshi005@<IPアドレス>
# こっちは成功するはず.
$ ssh -p 50022 -i id_rsa hoshi005@<IPアドレス>
今後は、ポートの指定と秘密鍵を利用する必要がある.
各種ネットワーク系の設定.
firewall の設定.
# firewallの起動と自動起動設定.
$ systemctl start firewalld
$ systemctl enable firewalld
# ssh, http, https を許可.
$ firewall-cmd --zone=public --add-port=50022/tcp --permanent
$ firewall-cmd --zone=public --add-service=http --permanent
$ firewall-cmd --zone=public --add-service=https --permanent
$ firewall-cmd --reload
SELinuxの停止.
さくらの場合は、最初からdisabledになっているかもね。
# SELinuxが起動しているかどうかを確認する.
$ getenforce
# SELinuxを停止するなら以下のコマンドを実行.
$ setenforce 0
# 設定の書き換えなら、以下のファイルにて.
$ sudo vi /etc/sysconfig/selinux
# 以下のように書き換える.
SELINUX=disabeld
各種ソフトウェアの更新など.
この辺りも、さくらが用意した時点で、すべて実施済みになっているっぽいかも
$ sudo yum -y update
$ sudo yum -y groupinstall "Development Tools"
$ sudo yum -y install vim-enhanced
Apacheの設定.
Apacheのインストール.
$ sudo yum -y install httpd
起動してみる
$ systemctl start httpd
$ systemctl enable httpd
もし起動時に警告などが表示されるようであれば、設定ファイル(httpd.conf)を確認する.
$ vim /etc/httpd/conf/httpd.conf
# ServerNameの設定を見てみる.
# vmだと警告が出てたのに、さくらだと警告が出ないっぽい?
起動できたら、ブラウザからIPアドレスを入力して確認する.
さくらのコントロールパネルで「グローバルネットワーク」からポートを開ける必要があるかも
index.htmlを作ってみる.
ドキュメントルートを確認してみる.
$ vim /etc/httpd/conf/httpd.conf
# DocumentRootの設定を確認する.
DocumentRoot "/var/www/html"
このディレクトリに、適当な内容で、index.htmlを配置する.
$ sudo vim /var/www/html/index.html
もう一度ブラウザからアクセスし、このHTMLが表示されることを確認する.
MySQLの設定.
MySQLのインストール.
MySQLのクライアントとサーバをインストールする.
SQLite3を使うのであれば、別にやらなくてもいいかも.
$ sudo yum -y install mysql
$ sudo yum -y install mysql-server
MySQLの起動と自動起動への登録.
$ sudo service mysqld start
$ sudo chkconfig mysqld on
$ sudo chkconfig --list mysqld
MySQLの初期設定.
$ sudo /usr/bin/mysql_secure_installation
# パスワードの設定.そのままEnter.
Enter current password for root (enter for none):
# そのままEnterで、パスワード設定.
Set root password? [Y/n]
# 以下も、そのままEnter.
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
MySQLへのログイン.
# 以下のコマンドで、パスワードを入れてログイン.
$ mysql -u root -p
Enter password:
# とりあえずデータベースの表示あたりを行ってみる.
mysql > show databases;
# 辞めるときは以下.
mysql > quit
PHPの設定.
これもとりあえずやっているだけで、PHPは使うつもりないっす.
必要なモジュールのインストール.
- php - PHP本体
- php-mbstring - PHPでマルチバイト文字を扱うためのプラグイン?
- php-pear - コード配布、パッケージ管理
- https://pear.php.net/manual/ja/about.pear.php
$ sudo yum -y install php
$ sudo yum -y install php-mbstring
$ sudo yum -y install php-pear
PHPの環境設定を変更する
必須ではないと思うが、この辺りも参考に初期設定を行う.
# 設定ファイルの編集.
$ sudo vim /etc/php.ini
とりあえず動きを見てみる.
# バージョンの確認.
$ php -v
# 一度Apacheを再起動する.
$ sudo service httpd restart
# 適当なファイルを作ってみる.
$ sudo vim /var/www/html/info.php
<?php
phpinfo();
?>
ブラウザで、http://IPアドレス/info.php を入力してみる.
Rubyの設定.
この辺りを参考にしています.
事前に必要なパッケージをインストールする.
まずは、yumで必要なパッケージをインストールしておく.
すでにインストールされているものも挙げておく.
- git
- gcc
- gcc++
- make
- openssl-devel
- zlib-devel
- readline-devel
# コマンドはこちら.
$ sudo yum -y install git gcc gcc++ make openssl-devel zlib-devel readline-devel
rbenvのインストール.
rbenvを利用することで、Rubyのバージョンの管理などが簡単に行えるようになる.
# gitから必要なモジュールをクローンする.
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
# パスの設定.
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
# ログイン時にrbenvの初期化処理をするように設定.
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
# .bash_profileの再読み込み(ターミナル再起動でも同じ).
$ source ~/.bash_profile
ruby-buildのインストール.
# gitから必要なモジュールをクローンする.
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
# インストールの実施.
$ cd ~/.rbenv/plugins/ruby-build
$ sudo ./install.sh
rbenvのインストールを確認.
# rbenvでインストールできるパッケージの一覧を表示.
$ rbenv install -l
# rbenvのバージョンを確認.
$ rbenv -v
Rubyのインストール.
任意のバージョンのRubyをインストールする.
インストール可能なバージョンは、rbenv install -l で確認しておくこと.
# betaではない2系の最新版を入れておけば良い.
$ rbenv install 2.x.x
Rubyの設定.
利用するRubyのバージョンの管理する.
# 利用するRubyのバージョンを設定する.
$ rbenv global 2.x.x
# 設定されているRubyのバージョンを確認する.
$ rbenv versions
$ rbenv version
GemとRubyGems
Gemとは?
- Rubyのサードパーティ製のライブラリの形式のこと.
- Rubyで使われるライブラリやアプリケーションは、Gemと呼ばれる形式のパッケージにされている.
- RailsもSQLite3もPassengerも、Gem形式のパッケージ.
RubyGemsとは?
- Gem形式のライブラリをダウンロードしたりインストールしたりするための、パッケージ管理ツール.
- yum のようなもの.
-
Ruby1.9以降をインストールすると、勝手に入る
- gem install ●●●
- --no-document は、ドキュメントをインストールしないためのオプション
RubyGemsのアップデート.
自動でインストールされるRubyGemsは少し古い可能性があるので、手動で最新版にアップデートする.
# バージョンの確認.
$ gem -v
# アップデート.
$ gem update --system
# バージョンを再度確認してみる.
$ gem -v
ドキュメントのインストールを省略する設定.
ドキュメントのインストールをするのとしないのとでは、時間が大きく異なる.
初期状態で省略するように設定しておく.
# ホームディレクトリに設定ファイルを作成.
$ vim ~/.gemrc
# 以下を記述して保存する.
install: --no-document
update: --no-document
Railsの設定.
Railsに必要なパッケージを入れる.
$ sudo yum -y install sqlite-devel
RailsとSQLite3のインストール.
# Railsをインストール.
$ gem install rails
# SQLite3をインストール.
$ gem install sqlite3
Bundlerとは?
- Rubyのcocoapodsのようなもの.
- Railsを入れると、勝手にインストールされる.
-
Gemfileは、こいつのためにある.
- cocoapodsでいうところのpodfile.
- bundle init でGemfileを生成.
- rails new でプロジェクトを新規作成してもGemfileが生成される.
- インストールしたいものは、Gemfileに記述すべし.
- --pathを指定しないとRuby環境のGemディレクトリにインストールされる.
- ディレクトリ名はvendor/bundleが推奨されている模様.
- bundle install --path vendor/bundle
-
Gemfileに記述していたものがインストールされる
-
Railsアプリを作ってみる.
適当にアプリを作って、起動してみる.
# アプリを作る.
$ rails new ●●●
# サーバを起動してみる.
$ cd ●●●
$ rails server
エラーになったので、Bundlerを利用して必要なGemを入れる.
# Gemfileを編集する.
$ vim Gemfile
# 以下のコメントアウトを解除し、有効にする.
gem 'therubyracer', platforms: :ruby
# 保存してインストール.
$ bundle install
# サーバ起動.
$ rails s
サーバを起動しても、localhostでアクセスできないので、意味なし.
次の項でpassengerをインストールしてapache経由で起動する.
Passengerの設定.
Passengerに必要なパッケージをインストールする.
$ sudo yum -y install curl-devel
$ sudo yum -y install httpd-devel
Passengerのインストール.
この辺りを参考に.
- http://qiita.com/merrill/items/87bf1ecfac8aa49f06a7
- http://memories.zal.jp/WP/blog/20141231_2410.html
# passengerのgemをインストールする.
$ gem install passenger
Passengerの初期設定.
Passengerをインストールしたら、WEBサーバごとのモジュールをインストールする.
今回はapacheを利用しているので、apache用のモジュールをインストール.
# 対話式にapache用のモジュールをインストールする.
$ passenger-install-apache2-module
基本的にはEnterを押しながら待っていればOK.
途中、以下のような情報が表示される.
これはapacheのPassenger用の設定内容なので、以下のようにapacheの設定に追加する.
# Passenger用の設定を記述する設定ファイルを新規で作成.
$ sudo vim /etc/httpd/conf.d/passenger.conf
# 以下の内容をコピーして貼り付け、保存しておく.
LoadModule passenger_module /home/hoshi005/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/passenger-5.0.21/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /home/hoshi005/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/passenger-5.0.21
PassengerDefaultRuby /home/hoshi005/.rbenv/versions/2.2.3/bin/ruby
</IfModule>
VirtualHostの設定.
設定ファイルの読み込み設定を追加する.
# virtualhostの設定ファイルをまとめるためのディレクトリを /etc/httpd/ の配下に作成
$ sudo mkdir hosts.d
# virtualhostの設定ファイルを作成
$ sudo vim /etc/httpd/conf.d/vhost.conf
# この行を追加する.
Include hosts.d/*.conf
これで、hosts.d配下のconfファイルが読み込み対象となる.
以降、VirtualHost関連のconfファイルは、このディレクトリ配下に配置する.
VirtualHostの設定を定義する.
# VirtualHostの定義用の設定ファイルを新規作成.
$ sudo vim /etc/httpd/hosts.d/dev.hoshi005.net.conf
# 以下の内容を記述する.
<VirtualHost *:80>
ServerName dev.hoshi005.net
RailsEnv development
DocumentRoot /home/hoshi005/●●●/public
<Directory /home/hoshi005/●●●/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
# Uncomment this if you're on Apache >= 2.4:
#Require all granted
</Directory>
</VirtualHost>
ファイルサーバを作るだけなら、これでOK.
<VirtualHost *:80>
ServerName dev.hoshi005.net
DocumentRoot /home/web/public_html
<Directory /home/web/public_html>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
# Uncomment this if you're on Apache >= 2.4:
Require all granted
</Directory>
</VirtualHost>
apacheの情報を隠蔽する
アタックされないように、apacheの設定がレスポンスヘッダに含まれないようにする.
# /etc/httpd/conf.d 配下に security.conf を作成する
$ vim security.conf
中身はこのように
ServerTokens Prod
ServerSignature Off
TraceEnable Off
apacheの確認.
以下のコマンドで、設定が正しいかどうかを確認し、apacheを再起動する.
# 設定ファイルの記述ミスを確認する.
$ service httpd configtest
# 読み込んでいるホスト設定を確認する.
$ sudo apachectl -S
# 問題なければ再起動する.
$ systemctl restart httpd
ここまでできたら、ブラウザからアクセス確認を行う.
複数のアプリを起動する.
ドメインごとに別アプリにアクセスするために、以下のような設定を行う.
apacheの設定を変更する.
# apacheの設定ファイルを編集する.
$ sudo vim /etc/httpd/conf/httpd.conf
# 以下の部分のコメントアウトを解除し、有効にする.
NameVirtualHost *:80
VirtualHostの設定を追加する.
VirtualHost用の設定を追加する.
.confを追加したほうが管理しやすい.
# 新しく.confファイルを作成する.
$ sudo vim /etc/httpd/hosts.d/blog.hoshi005.net.conf
# 以下の内容を記述する.
<VirtualHost *:80>
# 何という名前でアクセスされたら表示させたいか?を設定する.
ServerName blog.hoshi005.net
RailsEnv development
# 先ほどとは違ったアプリのpublicディレクトリを指定する.
DocumentRoot /home/hoshi005/▲▲▲/public
<Directory /home/hoshi005/▲▲▲/public>
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
apacheの確認.
前回実施した確認コマンドで、設定が正しいかどうかを確認し、apacheを再起動する.
-
dev.hoshi005.net でアクセスする.
- アプリケーション ●●● が起動する.
-
blog.hoshi005.net でアクセスする.
- アプリケーション ▲▲▲ が起動する.