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
httpポートを開ける。
[root@localhost ~]#firewall-cmd --permanent --add-service=http
[root@localhost ~]#firewall-cmd --reload
さっそくブラウザからアクセスしてみる。
http://IPアドレス:80でアクセスしこのテストページが出れば成功。
ひとまず今回はこの辺りで切り上げる。
次回から、index.htmlあたりから作っていこうと思う。
今のところあまりポートフォリオとしてどういうものを作ればアピールになるかあまりわかっていない。
ログイン機能、メール機能、経歴ページ、どっかからAPI取ってきて表示するページ、どっかのSNSサイト構成をパクったようなページ、SAML認証でSSOできるページなどができればいいのかな…なんて思っている。