Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 3 years have passed since last update.

さくらVPSのサーバ構築手順

Last updated at Posted at 2015-12-01

ナレッジに記事がある

高橋くんのナレッジ記事も参考に

ユーザの作成

サーバを起動する

まずは管理画面からサーバを起動する。
コンソールから見ると、以下のメッセージで止まっている時間がとても長い。
気長に待つべし。

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は使うつもりないっす.

必要なモジュールのインストール.

$ 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のインストール.

この辺りを参考に.

# 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 でアクセスする.
    • アプリケーション ▲▲▲ が起動する.
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?