WEBサーバ作ってみた。#1

おはこんばんちわ。

技術レポだす。

インフラエンジニアだけど開発案件もほしいのでポートフォリオのためのWEBサイト作成するのでレポ残します。
インフラエンジニアの端くれなのでどうせなのでサーバから立てていきます。クラウドに移行する予定なんですが、OCIの登録でクレカはじかれまくって萎えたので、ローカルにVirtualBoxでたてて開発ある程度できてから移植することを考えています。

今回はとりあえず、apacheのテストページ表示までの手順です。


動作環境

  • Windows11

開発環境

  • VirtualBox

  • CentOS7

VirtualBoxのインストール

まずVirtualBoxのインストール。
早速インストール実行…と思ったのだが、依存するパッケージが足りていないと警告が出た。 「Missing Dependencies Python Core / win32api」 どうやらpythonとwin32apiを先にインストールしていないといけないらしい。

python入れます。

win32apiについては、pythonからpipで入れる。 コマンドプロンプトを開いて下記コマンド実行。
まずは状況確認。

> py -m pip list
Package    Version
--------- -----pip        23.2.1
setuptools 65.5.0

win32apiはなさそうなので、インストール。

> py -m pip install pywin32

インストールが完了したら、確認。

> py -m pip list
Package    Version
---------- -------
pip        23.2.1
pywin32    306
setuptools 65.5.0

pywin32が入ったのでOK。
依存関係解消したので、インストールは問題なく完了。
次は、OSを用意する。まあ無難にCentOSかな。
ここからisoイメージをダウンロードする。

メモリ2048MB,Disk20GBで仮想サーバを用意。

ネットワーク設定

初期設定をやっていくう!
まずはネットワークにつなげるように、ネットワークの設定をNATからブリッジアダプターに変更する。

起動してネットワークインターフェース設定を確認。

[root@localhost ~]#nmcli d
DEVICE TYPE     STATE        CONNECTION
enp0s3 ethernet disconnected --
lo     loopback unmanaged    --

つながってないようなので、インターフェースを有効化。

[root@localhost ~]#nmcli connection up enp0s3

確認する。

[root@localhost ~]#nmcli d
DEVICE TYPE     STATE      CONNECTION
enp0s3 ethernet connected  enp0s3
lo     loopback unmanaged  --
[root@localhost ~]#ping 8.8.8.8

pingが通ればインターネットへの疎通まではOK
自動でインターフェースがつながる設定がなく再起動したら手戻りが生じたので、ここも設定しておく。

[root@localhost ~]# nmcli connection show enp0s3 | grep connection.autoconnect
connection.autoconnect  no
[root@localhost ~]# nmcli connection modify enp0s3 connection.autoconnect yes
[root@localhost ~]# nmcli connection show enp0s3 | grep connection.autoconnect
connection.autoconnect  yes

ひとまず初期設定のためにインターネットに出れる環境としてはOK。
SElinuxはアクセス制限がかかって、切り分けが面倒くさくなる(らしい) 無効化するのが定石なのだが、正直あまりわかっていないので、有効化のまま泥沼に突っ込む予定。何か不具合あればその時に考えよう。

apacheの初期設定

yumでbash-completionとapacheをインストールする。
Completed!となればうまくインストールできている。

[root@localhost ~]#yum install bash-completion httpd -y

apacheの設定ファイルを編集する。
設定元のファイルはバックアップを取り、変更後diffで確認する。

[root@localhost ~]#cd /etc/httpd/conf
[root@localhost ~]#cp -p httpd.conf httpd.conf.org
[root@localhost ~]#vi httpd.conf

httpd.confの設定
【変更前】#ServerName www.example.com:80
【変更後】 ServerName www.example.com:80

[root@localhost ~]#diff httpd.conf httpd.conf.org
< ServerName www.example.com:80
> #ServerName www.example.com:80 

apacheの設定ファイルを変更したので構文チェックする。

[root@localhost ~]#httpd -t
Syntax OK

“Syntax OK”でエラーがなければ構文的には問題なし。
下記コマンドでサービス起動。

[root@localhost ~]#systemctl start httpd
[root@localhost ~]#systemctl status httpd

ステータスを確認して、active(running)、エラーログなどが出ていなければOK

ファイアーウォールの設定

apacheの初期設定ではアクセスポートは80番、サーバ初期設定ではSSHくらいしかポートは開いていないので、80番を開ける必要がある。
下記コマンドでfirewallの設定を確認する。

[root@localhost ~]#firewall-cmd --list-all
初期設定ではsshくらいしかポートのアクセス許可がない。

httpポートを開ける。

[root@localhost ~]#firewall-cmd --permanent --add-service=http
[root@localhost ~]#firewall-cmd --reload
httpポートのアクセス許可ができていることを確認できた。

さっそくブラウザからアクセスしてみる。
http://IPアドレス:80でアクセスしこのテストページが出れば成功。

apacheのテストページ

ひとまず今回はこの辺りで切り上げる。
次回から、index.htmlあたりから作っていこうと思う。

今のところあまりポートフォリオとしてどういうものを作ればアピールになるかあまりわかっていない。
ログイン機能、メール機能、経歴ページ、どっかからAPI取ってきて表示するページ、どっかのSNSサイト構成をパクったようなページ、SAML認証でSSOできるページなどができればいいのかな…なんて思っている。

この記事が気に入ったらサポートをしてみませんか?