0から仮想環境を使わずにサーバを作ってみた

※今後更新予定

# 背景
仮想環境ではいまいち何をやっているかやPC同士が通信している感じがしなくてつまらない。
ってことで中古のPCを自力で用意し、同じルータにLANケーブルをぶっさして通信させます。

# まずはPINGを通そう
PC_AでPC_Bにpingコマンドを飛ばすも届かず。
PC_B側ではブロックしている可能性があるのでファイアウォールをチェック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/1a908639-619a-4bed-b105-88d18d2c1b0f.png)
有効にするとpingは届きました。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/b668cd81-0149-4eff-b7af-c96d3fc76a7f.png)

よっしゃ～これでpingの時と同じように80ポートと443ポートが解放されたはず！

早速PCAからアクセス！「コンテンツが存在しません」とか出るのかな。

あれ、届いていないっぽい？
PowerShellで「」を実行してもFailedになる。空いていればTrueになると聞いたのに…
これは、ポートを開けただけで、返すサービスがないため、フルシカト状態のため反応しなかった。
つまり、PC_A側から見れば、Bが『ポートが開いていない』のか『空いてはいるが、対応するソフトがない』のか判別できない

![スクリーンショット 2025-04-04 114925.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/bef0cd4d-d263-4017-829d-2b612dbe563d.png)

## ではWebサーバソフトをインストール
XAMMPというのがお勧めらしい。

**適当にダウンロード**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/abeb7c86-5553-4360-8608-5bdd4296e5c7.png)
UACが出て「管理者権限を一瞬だけ付与するか」と聞かれるのでOK。
続いてこんな奇天烈な文が出る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/1720c6d6-ed5d-4c48-8a06-763e00ec9be0.png)

:::note warn
Warning
Important! Because an activated User Account Control (UAC) on your system some functions of XAMPP are possibly restricted.  
With UAC please avoid to install XAMPP to C:\Program Files (missing write permissions). Or deactivate UAC with msconfig after this setup.  
:::
もうね、アホかと。
「XAMPPは自身を書き換えたりするよ。一方でプログラムって普通はC:\Program Filesなどに入れるけど、ここに入ったプログラムは保護されるから書き換えようとすると権限が必要だよ。だから頻繁に書き換えが発生するXAMPPをC:\Program Filesに入れると、XAMPPは権限を持っていないから自身で自身の書き換えができなくなってエラー起こすことがある。だからC:の直下とかにインストールしてね。ここは保護もされていない野良の場所だから書き換えし放題で不都合なく動くよ。どうしてもC:\Program Filesに入れたいなら、書き換え権限をちょうだいね。」とのこと。
まずプログラムをプログラムフォルダ以外にインストールするとグチャグチャになって美しくない。日付毎に整理された写真フォルダの中にメモ帳とか入れないでしょ。それと同じ。
またセキュリティ的にも危険。確かにXAMPPが自身を書き換えるから、権限が不要な場所に置いてほしいというのは分かるが、言い換えれば、ウイルスもXAMPPを自由に書き換えられるということに他ならない。C:\Program Filesに配置すれば、ここに入ったファイルの書き換えは権限が必要なため、ウイルスが仮に書き換えようとしてもエラーになったりUACが出て止まる可能性が高い。
ってことでこんな馬鹿げた提案はシカトしてちゃんとC:\Program Filesにいれましょう。

**どんな機能を入れるかとのこと。全部入れちゃっていいんじゃない？**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/f5a473ac-602b-49df-b042-f9f96aff2ef9.png)

**出ました諸悪の根源**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/2c48d8d7-be40-4c65-ab10-a6ac04be5000.png)
XAMPPのインストール先を決めてほしいとのこと。
デフォルトではC:\xamppが既に入力されていますね。

**今の状況、基本Cドライブ直下はデフォルトのまま。xamppなんてフォルダは当然ありません。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/4a673ef9-f0c7-4d4c-8ad0-c9bf2e81afd9.png)
ChromeとかWordとか、普段使ってるプログラムはこのProgram Filesに入っています。
存在しないC:\xamppがデフォルトで記載があるということは、『Cドライブの直下に、空の箱（フォルダ）を作って、そこにプログラムを入れましょうね。その空の箱の名前はシンプルに"xampp"にしましょう』ってことだと思います。
※「いやプログラムフォルダに入れるわ」と勢い余って"C:\Program Files"と指定すると、以下エラーがでます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/4fc87102-e913-475e-9c7a-c9b4936e437f.png)

:::note warn
Warning
The selected folder is not empty. Please select a different folder
:::
当たり前です。これではプログラムフォルダの直下にXAMPPのファイルやデータが全部展開されて保存されてしまいます。XAMPPのプログラムやファイルを入れる箱は空である必要があります。
**プログラムフォルダ内のXAMPPという空の箱にXAPMMのプログラムを入れますと指定しましょう。つまりC:\Program Files\XAMPPとすれば解決です。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/70f00f06-fb21-4467-b5bc-45961fab43b7.png)

あとは言語を英語にして完了（日本語ないのね）

**終わったら自動的にXAMPPが開く**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/dca2d47c-7ab8-4031-a479-4c438660ad15.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/b19a40ec-bbdb-4e59-9ed9-477c566afde4.png)

## XAMPPを操作
Startを押すとサービスが開始すると思われる。押すとエラー。
*ポートがどうの、権限がどうのととあるので、管理者権限が付与されていないことが原因でポートが開けないのではと予想*
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/f26fb11c-4440-41e2-8e89-e37129e7605c.png)
まあ管理者権限の問題だろうとソフトを右クリックで「管理者から実行」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/8e7a8aed-3cd6-4b20-b061-bb0479f5f3de.png)
するとApacheが起動でき、Webサーバとして動かすことができた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/741bcdbc-5190-41e6-a7b4-f642ea18b0ee.png)
**ここでなぜUACが出てこなかったのか気になったので調べた。**
ポートの解放など管理者権限が必要な操作が行われる際には、その都度以下のようなUACのポップアップが出るものと思っていた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/48d8907e-a9ba-475b-b787-e12f753f727a.png)

結論から書くと、UACは<font color="red">**ソフトを実行した最初の瞬間でしか出ない。**</font>
何かしらの操作を進め、途中で管理者権限が必要な操作に当たったタイミングで出るようなものではない。
実行ファイル自体が『このファイルは管理者権限が必要。実行時にユーザから許可をもらう必要がある』とコードを記載しているのだ。
こんな感じのコードを実行ファイルの構築時に記載しているらしい。
```
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
```
つまりこの<font color="red">**UACポップアップはソフトの自己申告で表示されている。**</font>
そう聞くと、「自己申告ではUACの意味がないのでは？ウイルスはそんな警告を出すようなことはしないし」とお思いかもしれないが、あくまでUACのポップアップは警告ではなく**権限昇格の承認**として出てきている。
よってこのUACを出さないソフトは管理者権限を付与されるタイミングがないため、管理者権限が必要な操作をするとそのままエラーとなる。

今回はまさに、"xampp-control.exe"がUACポップアップを出さない設計だったためエラーを起こしていた。
解決策は、実行時にユーザが管理者権限を渡した状態で起動すること。というわけ。
ちなみにFW設定変更はこのようなポップアップが出るらしいが、これはUACとはまた別らしい。勉強不足。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2919278/8c72954f-4b49-4dc1-a6bc-7396a746a2f6.png)