前回、Mac(High Sierra)に VirtualBox + Vagrant で CentOS7 の仮想マシンを立ち上げ、接続するところまでをメモしました。
今回はその続きで、CentOS7 に Apacheでwebサーバーを立ち上げ、ブラウザで「Hello, World!」を表示するまでやっていこうと思います。
仮想マシンにログイン
まずは前回立ち上げた仮想マシンへログインしておきます。(前回の記事から続きで読んで下さっている方はここは飛ばしてもらっても大丈夫です。)
ターミナルを開き、前回作成した「centos7」ディレクトリへ移動します。
$ cd ~/centos7
移動できたら、Vagrantで仮想マシンを起動します。
$ vagrant up
少し時間がかかるかもしれませんので、待ちましょう。
起動ができたら、SSH接続します。
$ vagrant ssh
接続できましたか?
では、webサーバーを立ち上げていきましょう!
httpd(Apache)のインストール
まずは、webサーバーに必要なhttpdをインストールします。
[vagrant@localhost ~]$ sudo yum -y install httpd
だーーっといろんなメッセージが流れたあと、Complete!と出ればOK.
もちろん、rootユーザーになってからでもOKです。
[vagrant@localhost ~]$ sudo su -
[vagrant@localhost ~]# yum -y install httpd
httpdの起動
インストールできたら、httpdを起動させましょう。
httpdの起動
[vagrant@localhost ~]$ sudo systemctl start httpd.service
httpd.service
は省略してhttpd
だけでもOKです。(移行、systemctl
コマンド内のサービス名は省略させていただきます。)
centOS7では、service
ではなくsystemctl
を使ってサービスの起動や停止などを行いますので、古いCentOSになれている人は注意して下さい。
一応、以前までのコマンドも使えます。
serviceコマンドで起動
[vagrant@localhost ~]$ sudo service httpd start
Redirecting to /bin/systemctl start httpd.service
その際、上記のように「systemctl にリダイレクトされましたよ」という旨のメッセージが出てきます。最初はびっくりしますが、特に気にしなくて大丈夫です。
起動の確認
systemctl
では、[ OK ]
のような表示が出てこないので、ちゃんと起動できたかどうかわかりません。
不安な場合は確認しておきましょう。
サービスの起動状態を確認する時は、systemctl status
コマンドを使います。
httpdの起動状態を確認
[vagrant@localhost ~]$ sudo systemctl status httpd
表示されるメッセージ
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2018-05-26 08:09:20 UTC; 4min 14s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 2445 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─2445 /usr/sbin/httpd -DFOREGROUND
├─2446 /usr/sbin/httpd -DFOREGROUND
├─2447 /usr/sbin/httpd -DFOREGROUND
├─2448 /usr/sbin/httpd -DFOREGROUND
├─2449 /usr/sbin/httpd -DFOREGROUND
└─2450 /usr/sbin/httpd -DFOREGROUND
May 26 08:09:20 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
May 26 08:09:20 localhost.localdomain httpd[2445]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Se...his message
May 26 08:09:20 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
ごちゃごちゃ情報が出てきますが、起動状態に関する情報は3行目の「Avtive:」の項です。
「active (running)」と出ていれば、無事に起動中です。
httpdの停止と再起動コマンド
停止と再起動についてもメモしておきます。
停止
$ sudo systemctl stop httpd
再起動
$ sudo systemctl restart httpd
次回からhttpdを自動で起動するように設定しておく
仮想マシンに接続するたびに、わざわざコマンドで httpd を立ち上げるのは面倒です。
なので、仮想マシンの起動と一緒に httpd も起動されるように設定しておきましょう。
CentOS7 では自動起動の設定もsystemctl
で行います。(chkconfig
に慣れている人は注意しましょう。)
httpdの自動起動設定
[vagrant@localhost ~]$ sudo systemctl enable httpd
自動起動設定の確認
ちゃんと設定できたか確認しておきましょう。
httpdの自動起動の設定を確認
[vagrant@localhost ~]$ systemctl is-enabled httpd
「enabled」と表示されればOKです。
ちなみに、systemctlで管理できるサービス全ての起動設定を一気に確認することもできます。
[vagrant@localhost ~]$ systemctl list-unit-files -t service
自動起動設定の解除
解除したい場合は、enableではなく、disableを使います。
例:httpdの自動起動解除
$ sudo systemctl disable httpd
ファイアーウォールを停止しておく
ローカル環境なので、ファイアウォールは停止しておいた方が作業しやすいかと思います。無駄にブロックとかされずに済むので。
デフォルト状態ですでに停止状態だったので特に何もしなくていいと思いますが、一応確認してみましょう。
ファイアウォールの起動状態を確認
[vagrant@localhost ~]$ sudo systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
....
上記のように、「Active: inactive(dead)」となっていればOKです。
もしavtive(running)となっていた場合は停止しておきましょう。
ファイアウォールの停止
$ sudo systemctl stop firewalld
仮想ローカルサーバーへアクセスする
まずは仮想マシンのhttpdサーバーへアクセスするためのIPアドレス(プライベートネットワーク)を有効にしておきましょう。
ここまで放置してきた「Vagrantfile」を編集していきます。
まずは仮想マシンからログアウト
[vagrant@localhost ~]$ exit
ログアウトができたら、centos7ディレクトリにある「Vagrantfile」を開きます
Vagrantfileの編集
$ vi Vagrantfile
プライベートネットワークに関する記述を探します。
以下のような記述を見つけて下さい
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
上記の3行目のコメントを解除します。
こう
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: "192.168.33.10"
コメントが解除できたら:wq
で保存し、終了しましょう。
*サーバー初心者の方へ:viエディタの使い方をざっくりとだけ説明しておきますと、「i」キーで編集モードに移行し、編集が終われば「esc」キーで編集モードを抜け、コマンドモードへ戻ります。その状態で「:wq」と入力してエンターを押すと、保存して終了ができます。間違って編集してしまった場合は「:q!」で保存せずに強制終了できます。
設定ファイルを書き換えたので、一度 Vagrant を再起動させます。
Vagrantを再起動
$ vagrant reload
少し時間がかかりますので待ちましょう。
再起動が完了すれば、「192.168.33.10」でhttpdサーバーへアクセスできるようになっているはずです!
ブラウザで確認してみましょう。
このようなテスト画面が表示されればOK!
index.htmlの作成
さて、すでにwebサーバーは立ち上がっているので、ドキュメントルートにhtmlファイルを作成し、ブラウザで「Hello, World!」と表示してみましょう。
CentOSのhttpdのドキュメントルートは「/var/www/html」なので、ここに index.html ファイルを作成します。
ドキュメントルートにindex.htmlファイルを作成・編集
[vagrant@localhost ~]$ sudo vi /var/www/html/index.html
i
で編集モードに入り、
<h1>Hello, World!</h1>
と記述し、esc
キーで編集モードを抜け、:wq
で保存して終了します。
ブラウザを更新し、確認してみると...
「Hello, World!」と表示されます!
おわりに
お疲れ様でした。今回はCentOS7仮想マシンに Apache でwebサーバーを立ち上げてみました。
次回は、ドキュメントルートの「/var/www/html」をローカルマシンとホストOS(mac)側との共有フォルダに割り当てる方法までをメモしていこうと思います!
共有フォルダを使えると、mac上で編集したファイルがすぐに仮想マシンのwebサーバーにも反映されてすごく便利なので、是非参考にしてみて下さい!