今回は、vagrantを使用して、virtualboxにcentosを入れ、apacheでwebサーバ公開するまでを行います。
まず、vagrant(ベイグラント)とは、
Vagrant(ベイグラント)は、FLOSSの仮想機械を構築するためのソフトウェアである[2]。構成情報を記述した設定ファイル (Vagrantfile) を元に、仮想環境の構築から設定までを自動的に行うことができる[3]。(以下略)
事前準備
環境は、Windowsで進めていきますが、
Macでもほとんど同様の手順で問題ないと思います。
事前準備として、
・virtualboxのダウンロード
・vagrantのダウンロード
が必要です。
既にダウンロード済みの人は飛ばしてください。
ダウンロードが済んでいない方は以下のリンクからどうぞ。
virtualboxはこちら。
https://www.virtualbox.org/wiki/Downloads
vagrantはこちら。
仮想環境を作成
まずコマンドプロンプトを開きます。
(windowsキー + R を同時押しし、cmdと入力すると開けます)
コマンドプロンプトが開けたのを確認したら、以下のコマンドを入力します。
> vagrant box add centos/7
その後、どの仮想マシンを使用するか聞かれますので、3番のvirtualboxを選択します。
もし、ここでエラーが出た場合、vagrantがインストールできていない可能性があります。
==> vagrant: A new version of Vagrant is available: 2.2.6 (installed version: 2.2.4)!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html
==> box: Loading metadata for box 'centos/7'
box: URL: https://vagrantcloud.com/centos/7
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.
1) hyperv
2) libvirt
3) virtualbox
4) vmware_desktop
Enter your choice: 3
==> box: Adding box 'centos/7' (v1905.1) for provider: virtualbox
The box you're attempting to add already exists. Remove it before
adding it again or add it with the `--force` flag.
Name: centos/7
Provider: virtualbox
Version: 1905.1
私の場合は、既にboxが存在していたので、alredy existsと表示されましたが、boxが存在していない場合は、Successfully が表示されるようです。
念のため、boxが追加されたか確認します。
> vagrant box list
centos/7 (v1905.1)
これで、boxが追加されました。
次に、vagrantfileを作成します。
このファイルは、仮想環境を作成する際の設定ファイルです。
まずは、vagrantfileを作成するためのディレクトリを作成し、移動します。
mkdir centos7
cd centos7
まず初期設定をします。
vagrant init centos/7
こちらのコマンドを入力すると、以下のメッセージが表示され、「vagratnfile」が作成されます。
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
念のため、vagrantfileが作成されたことを確認しましょう。
> dir
仮想マシンを起動する
> vagrant up
これで、仮想環境の起動ができました。
virtualboxから確認すると、「実行中」となっていることがわかると思います。
次にIPアドレスを設定します。
一度、仮想環境を停止させます。
> vagrant halt
その後、vagrantfileを開き、編集します。
手順通りに進めていれば、vagrantfileは、「C:Usersユーザ名centos7」に保存されていると思います。
プログラムからメモ帳を開き、編集しましょう。
以下を追記し、保存します。
config.vm.network "private_network", ip: "192.168.56.xxx"
192.168.56.xxxの部分には好きなIPアドレスを設定します。
例えば、「192.168.56.100」を設定してみましょう。
もう一度、仮想マシンを起動させます。
> vagrant up
起動できましたか?
もし、起動できなかった場合は、IPアドレスを変更して、もう一度起動してみましょう。
teratermからsshを行う
IPアドレスに先ほど設定したIPアドレスを。
設定していない場合は、「127.0.0.1 2222」で良かった気がします。
ユーザ名には「vagrant」と入力し、
パスフレーズには、RSA/DSA/ECDSA/ED25519鍵を使う を選択します。
秘密鍵は、vagrantfileと同階層の「.vagrantmachinesdefaultvirtualboxprivate_key」を使用します。
これで、teratermからのsshができます。
ただ、これだと面倒ですよね。
パスワード認証によるログインを設定
sshでログイン後、ユーザを作成します。
teratermでのログインが面倒という場合は、コマンドプロンプトからvagrant sshでもログインが可能です。
ログインができましたら、以下のコマンドでユーザを作成します。
> sudo useradd ユーザ名
作成したユーザにパスワードを設定する。
> sudo passwd ユーザ名
これで、ユーザの作成、パスワードの設定が完了しましたが、これだけでは、パスワード認証でのログインはできません。
パスワード認証でのログインを許可する
> sudo vi /etc/ssh/sshd_config
このファイル内にある
PasswordAuthentication no
の行を
PasswordAuthentication yes
に書き換えます。
( / で先頭からの検索が行えます)
sshdを再起動し、変更を適用します。
> sudo systemctl restart sshd
これで、作成したユーザと設定したパスワードでログインができるようになりました。
作成したユーザにsudo権限を与える
先程作成したユーザでは、sudo(管理者として実行)できないため、権限を記述します。
> sudo visudo
ファイルを編集し、以下を追記します。
ユーザ名 ALL=NOPASSWD: ALL
ユーザ名には、先ほど作成したユーザ名を指定します。
これで、sudoコマンドをパスワードなしで実行できるようになります。
パスワードなしで管理者権限を実行できてしまうようになるため、扱いに
ApacheでWebサーバを建てる
apacheをインストールします。
> sudo yum -y install httpd
インストールができたら、起動してみましょう。
> sudo systemctl start httpd
もし、これで起動できなかった場合は、
> sudo /etc/init.d/httpd start
起動できているか確認をします。
statusで確認することもできますが、プロセスの起動で確認を行います。
> ps -ef | grep httpd
apacheの公開ディレクトリにファイルを作成します。
公開ディレクトリは、「/var/www/html/」です。
こちらにファイルを作成します。
> sudo vi /var/www/html/index.html
中身を記述します。
<h1>Hellow world!</h1>
保存をしたら、ブラウザからサーバに設定したIPアドレスにアクセスします。
Apacheのキャッシュを有効にする
キャッシュを格納するディレクトリを作成します。
> sudo mkidr p /var/www/cache
念のため、権限付与しておきます。
> sudo chmod 777 /var/www/cache
キャッシュのためのモジュール読み込みを記述します。
> sudo vi /etc/httpd/conf/httpd.conf
以下を追記
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
<IfModule mod_cache.c>
<IfModule mod_cache_disk.c>
CacheRoot /var/www/cache
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
</IfModule>
CacheIgnoreCacheControl On
CacheIgnoreNoLastMod On
CacheDefaultExpire 100000
CacheMaxExpire 1728000000
</IfModule>
apacheの設定を有効
> httpd -M
apacheを再起動
> sudo systemctl restart httpd
もしくは、
> sudo /etc/init.d/httpd restart
キャッシュファイルが作成されているか確認します。
Webページアクセス後、
> ls /var/www/cache
を実行し、ファイルが作成されていれば、問題ないです。
Apacheの自動起動設定をする
サーバを再起動すると、apacheも停止するため、再起動後には、apacheを起動しなおす必要があります。
それだと面倒なため、自動起動設定をしておきます。
> sudo chkconfig httpd on
設定ができているか確認します。
> chkconfig --list httpd
実行レベル2,3,4,5がonになっていれば設定完了です。
日本語、時間に対応させる
日本語関連のパッケージをまとめてインストールする。
> sudo yum -y groupinstall "Japanese Support"
システムロケールを設定
> sudo yum -y install ibus-kkc vlgothic-*
> sudo localectl set-locale LANG=ja_JP.UTF-8
> source /etc/locale.conf
マニュアルを日本語化する。
マニュアルを確認します
> man ls
英語の状態なので、日本語に変更します。
> sudo yum -y install man-pages-ja
もう一度マニュアルを確認します。
日本語になっていれば、完了です。
> man ls
キーボードを変更
> localectl status
System Locale: LANG=ja_JP.UTF-8
VC Keymap: us
X11 Layout: n/a
VC Keymapの値が初期だとusとかになっていると思うので、ja106に変更します。
> sudo localectl set-keymap jp106
もう一度確認してみましょう。
> localectl status
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp106
X11 Layout: jp
X11 Model: jp106
ちなみにjp106というのは、以下の写真のようなキーボード配置のことです。
これで環境の設定は終了です。
お疲れさまでした。