Linux（UBUNTU）でWebサーバー構築の備忘録

Cent君で動いていたシステムをサーバー入れ替えするのに当たってUBUNTU22.04.3にしたときの備忘録です。いわゆるLAMP環境のお手軽構築になります。


PCなどをサーバー化して小規模なWEBシステムなどを作成することを目的とします。（ちゃんとしたサーバー機でももちろん大丈夫です。）
またデータベースはローカルにMariaDBを置き利用する場合と、外部DBを持つ場合の2つを使うことを前提としています。

# 前準備
1.　OSのインストーラーを作成します。ダウンロードはhttps://jp.ubuntu.com/download
2.  起動可能なUSBドライブ作製用にRufasのダウンロード　https://rufus.ie/ja/
3.  先ほどダウンロードしたイメージファイルを選択から選び、スタートを押下します。その後はどんどん進みます。状態が準備完了になればインストーラーの完成です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/66d5fb98-d6c8-b603-3eec-7e532c4d0d81.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/958abba3-f81a-1970-2d7b-3c752cb170ed.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/ae431d59-b5e9-a333-5d7a-1a5572cc7dad.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/ddfc1ba5-7382-40f9-5a1a-6c5da02619c4.png)


# UBUNTUのインストール
(1)前準備で作成したインストーラーから起動します。
bootmenuを開いてインストーラーから起動してください。
＊USBから起動できない場合BIOSから、セキュアブートを無効にしてからお試しください。
![image1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/3c26260d-9a19-c62e-2c56-f30801e7f482.jpeg)

(2)画面の案内に従って進みます。
UEFIの部分の割合がwindowsよりも多めのようなので、容量によってはパーティションの区切り方を設定したほうがいいかもしれませんね。

![image11.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/8ca459be-3bc6-02e5-aee6-e46b0ff01c56.jpeg)


# 細かい設定
(1)root権限での実行を有効化します。
コマンドラインを開いて入力する(ctrl + Alt + t)
```$ sudo passwd root```

(2)セキュリティソフトなどを導入する
各自のソフトウェアを導入してください。アプリケーションのインストール時にechoコマンドが見つからないなどのエラーが出た場合は以下コマンドで解決しました。
```$sudo ls -l /bin/sh```
```$sudo ls -l /bin/echo```

(3)vimの再インストール
```$ sudo apt-get install vim```
※vimがデフォルトだとバックスペースが使用できなかったり、
方向キー入力がアルファベットに変換されたりと非常に使いにくかったため再インストールを行いました。
ほかのエディタを使用する場合などは飛ばしても問題ありません。

//それでも治らなかった場合の処置↓（.vimrcファイルの作成と編集）
```$ touch ~/.vimrc```
```$ vi ~/.vimrc```
↓作成した.vimrcに書き込み(root環境でも行う）
(方向キーとかバックスペースの有効化を行う）
```set nocompatible```
```set backspace=indent,eol,start```

＊vimの基本的な使い方は[こちら](https://mstn2050.github.io/blogs/contents/vim-basic-oparation.html)をご確認ください。


(4)蓋を閉じてもスリープしないようにする（ノートPCをサーバー化する場合のみ）
```$ sudo vi /etc/systemd/logind.conf```
confファイルを編集。HandleLidSwitch=suspend→HandleLidSwitch=ignoreに変更する。
![logind.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/2cd1751b-f084-8130-65b0-1340824403ad.png)

(5)リモートデスクトップ設定（ubuntu22.04以降は標準で搭載のためそれを利用します。不可能な場合はxrdpなどをインストール）

1.設定→共有→リモートデスクトップをオン
![remote_setting1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/7c6e2e33-2085-3963-4ed4-f84952acd0ab.png)

2.パスワードはログインパスワードと異なるので注意。自分で設定できるので任意のものに変更します。
![remote_setting2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/c25d7cba-11a5-a75b-6601-442d3bea89ae.png)

またこれはやらなくても大丈夫ですが、Extension Managerをアプリストアからインストールし、起動⇒Extension Managerアプリ内検索でAllow Locked Remote Desktop![Extension Manager.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/c81ad5d8-25d2-6880-5714-4b2ef4eb4b4b.png)
![Allow Locked Remote Desktop.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/0c46b582-8e0e-1d16-9ae6-ea360ad75bc9.png)
をインストールすることで画面がロックしている状態でもリモート接続が可能となるので便利です。

# Apache(webサーバーソフトウェア）のインストール
やっと本筋のwebサーバーの出番です。以下コマンドでインストールします。
```$ sudo apt update```
```$ sudo apt install apache2```
インストール後、以下コマンドを入力し画像のような表示になればOKです。
```$ sudo systemctl status apache2```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/1638e377-7e3f-4559-69c3-88f3706ea44e.png)

#ファイアーウォールのポートの開放
cent君の時はfirewall-cmdなどを使用していましたが、ubuntuだともっとお手軽にポート開放が行えます。
必用なポートの開放を行ってください。
ufwの有効化
```$ sudo ufw enable```
アクティブになっているかを確認
```$ sudo ufw status```

必用なポートの開放を行う
```$ sudo ufw allow 80/tcp```

今回はapacheのために80を開けていますが、ODBC接続やSAMBAなどを使用したい場合はそれぞれ対応するポートを開放してください。

これらの設定が行い、クライアントPCからサーバーのIPアドレスにブラウザからアクセスした際、以下の画面が表示されていれば大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4003510/b02f64e4-7607-93f8-aabb-bd37dc28b688.png)

# DBの作製
ローカルにDBを用意します(今回はMariaDB)。必要によっては別個でテーブルなども作成しますが
wordpressなどによるペラサイトなどの作成だけであればデータベースの作成だけでOKです。

mysqlodbcドライバを使えばAccessなどと接続可能です。
＊DBのバージョンによってdriverが異なり、違うものをインストールすると文字化けや接続不可エラーになるので注意。
Accessなどからデータベースを操作する場合は
/etc/mysql/mariadb.conf.d/50-server.cnfの以下の部分をコメントアウト(#)するか、特定の
IPを許可するようにして下さい。
SELINUXがアクティブになっている場合も接続ができません。

```$ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf```
```
bind-address            = 127.0.0.1
```

基本的に一般的なデータベース構築なので特段変わった設定は行いません。MariaDBインストール手順は
[こちら](https://www.server-world.info/query?os=Ubuntu_22.04&p=mariadb)のサイトがわかりやすいかと思います。

```apt -y install mariadb-server```でインストール後⇓

コマンドラインから```mysql -u root -p```でログインし```CREATE DATABASE testdb;```などでデータベースを一つ作ってみましょう。

その他よく使う命令文⇓
//新しいユーザーの作成
```CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';```
//権限設定　アクセスできるdbとテーブル
```GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';```
//更新
```FLUSH PRIVILEGES;```

# PHPのインストール
最後にPHPのパッケージをインストールします。各自用途に合ったものをインストールしてください。私の場合は外部DBにもODBC経由で接続したかったのでUNIXパッケージなども含めてダウンロードしています。
```
$ sudo apt update
$ sudo apt install -y php php-cli php-common php-dev php-gd php-imap php-json php-ldap php-mbstring php-mysql php-odbc php8.1-common php-pdo php-pear php-apcu php-soap php-xml php-xmlrpc

//ODBCUNIXパッケージのインストール　
$sudo apt update
$sudo apt install -y unixodbc unixodbc-dev

//ODBCドライバーのインストール(UBUNTU)
//(カレントディレクトリにインストーラーを置き、実行する））

//[インストール時の依存関係の解決]
$ sudo apt install -f
```

# まとめ
ひとまずこれで利用できるwebサーバーができたかと思います。ここでは触れませんでしたがファイルサーバーのような使い方をできるようにSAMBAなどをインストールしておくと開発で使うこともできて便利です。Sambaはconfファイルを弄ることでかなり細かい権限設定も行えますので利用の幅も広がるかと思います。
次回以降でPHPによるwebアプリの連携や、wordpressの活用などに触れていきたいと思います。