【Debian】NginxでVirtual Hostsを使って複数のドメインを設定する方法【Server Blocks】

NginxのWebサーバではVirtual Hosts(Server Blocks)を使って1台のサーバで複数のドメインを運用することができます。 この記事では、Debian 11上のNginxにVirtual Hostsを設定する方法を紹介します。 なお、本稿の手順を進める前にDebian上にNginxがインストールされている必要があります。 DebianでのNginxのインストール方法は以下の記事を参照してください。 【Debian】Nginx公式リポジトリにある最新バージョンのNginxをインストールする | あまブログ 1. 環境 Debian 11 bullseye nginx 1.21.6 2. 手順 2-1. ドキュメントルートディレクトリの作成 ドキュメントルートは各ドメインのhtmlファイルが保存されるディレクトリで、任意の場所に作ることができます。 以下では /var/wwwディレクトリの中にサーバでホストしたいドメインごとに html ディレクトリを作成します。 今回はサンプルとしてtest1.comとtest2.comの2つのドメインを使用します。 以下のコマンドを実行して、ドキュメントルートディレクトリを作成します。 $ sudo mkdir -p /var/www/test1.com/html $ sudo mkdir -p /var/www/test2.com/html 2-2. サンプルページの作成 次に各サイトのデフォルトページをドキュメントルートディレクトリの中に作成します。 以下のコマンドを実行して、1つ目のサンプルページを作成します。 $ sudo vi /var/www/test1.com/html/index.html テスト用として、以下の内容で作成します。 /var/www/test1.com/html/index.html <html> <head> <title>test1</title> </head> <body> <h1>test1.com</h1> </body> </html> 続けて、2つ目のサンプルページも作成します。 $ sudo cp /var/www/test1.com/html/index.html /var/www/test2.com/html/ $ sudo vi /var/www/test2.com/html/index.html 内容は以下のようになります。 ...

June 6, 2022

【Debian】Nginx公式リポジトリにある最新バージョンのNginxをインストールする

この記事では、DebianにNginx公式リポジトリにある最新バージョンのNginxをインストールする手順を紹介します。 ※Debianのデフォルトの設定でapt install nginxした場合、Nginx公式リポジトリからではなく、Debian公式リポジトリから少し古いバージョンのNginxがインストールされます。 1. 実行環境 Debian 11 bullseye 2. 手順 2-1. 必要なパッケージのインストール Nginxのインストールに必要な以下のパッケージをインストールします。 curl gnupg2 ca-certificates lsb-release debian-archive-keyring 以下のコマンドを実行してパッケージをインストール。 $ sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring パッケージの情報を表示:apt show <パッケージ名> インストール済みパッケージの確認:apt list --installed <パッケージ名> 2-2. 署名鍵のインポート aptがパッケージの信頼性を確認できるようにするために、Nginxが公式に公開している署名鍵をインポートします。 以下のコマンドを実行して署名鍵をインポート。 $ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null コマンドの意味 curl https://nginx.org/keys/nginx_signing.key curlコマンドで署名鍵ファイルをダウンロード gpg --dearmor 署名鍵ファイルをgpgコマンドで暗号化 sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg teeコマンドで /usr/share/keyrings 配下に nginx-archive-keyring.gpg というファイル名で保存 >/dev/null コマンド実行時の出力結果を /dev/null に渡している 以下のコマンドを実行して、ダウンロードした署名鍵が正しいことを確認します。 ...

June 6, 2022

telnetでGETとPOSTでHTTPリクエストを送る方法

この記事では、クライアントからtelnetを使ってGETメソッドとPOSTメソッドでWebサーバにHTTPリクエストを送信する方法を紹介します。 HTTPは、Webサーバ(サーバ)⇄Webブラウザ(クライアント)間のWebページの送受信に使われるプロトコルです。 1. 環境 macOS Monterey:12.4 2. 手順 2-1. telnetのインストール $ brew install telnet 2-2. GETメソッド 以下のコマンドで、example.comの80番ポート(HTTP)に接続 $ telnet example.com 80 書式:telnet <ホスト名> <ポート番号> 続けて、以下のHTTPリクエストを実行 GET / HTTP/1.1 # リクエスト行 Host: example.com # ヘッダ <改行> リクエスト行 メソッド:GETメソッド、リクエストURI:/、プロトコルバージョン:HTTP/1.1 ヘッダ フィールド名:Host、フィールド値:example.com Host→HTTP/1.1 で唯一の必須ヘッダ。フィールド値にURLのホスト部分を指定。 <改行> 1行空けることでヘッダの終わりを伝える 2-3. POSTメソッド xxx.com/articlesに以下のようなフォームがある場合を想定 <form action="/articles" method="post"> <div> <label for="article_title">Title</label> <input type="text" name="article[title]" id="article_title"> </div> <div> <label for="article_body">Body</label> <textarea type="text" name="article[body]" id="article_body"></textarea> </div> <div> <input type="submit" name="commit" value="Submit" data-disable-with="Submit"> </div> </form> 以下のコマンドで、xxx.comの80番ポート(HTTP)に接続 ...

June 5, 2022

【Debian】Nginxで自分で作ったhtmlファイルを表示させる方法

この記事では、Nginx上に自分で作ったhtmlファイルを配置し、ブラウザから表示させる方法を紹介します。 1. 環境 Debian 11 bullseye nginx 1.21.6 2. 手順 2-1. Nginxのインストール Nginxをインストール $ sudo apt update $ sudo apt install nginx Nginxのインストールを確認 $ /usr/sbin/nginx -v nginx version: nginx/1.21.6 2-2. Nginxの起動 Nignxを起動 $ sudo systemctl start nginx Nginxの起動を確認 $ systemctl status nginx ● nginx.service - nginx - high performance web server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-06-05 06:38:04 JST; 1h 45min ago Docs: https://nginx.org/en/docs/ Process: 8247 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 8248 (nginx) Tasks: 2 (limit: 529) Memory: 1.7M CPU: 10ms CGroup: /system.slice/nginx.service ├─8248 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf └─8250 nginx: worker process 2-3. 設定ファイルの確認 Nginxの設定ファイルを確認 ...

June 5, 2022

【Debian 11 bullseye】sudoコマンドをインストールする方法

本稿では、さくらVPSにインストールしたDebian 11にsudoコマンドをインストールする方法を紹介します。 sudoは一般ユーザにスーパーユーザ(root)の権限を与えるコマンドです。 なお、さくらVPSにDebian 11をインストール方法は以下をご参照ください。 さくらのVPSにDebian11 (bullseye)をインストールする方法 | あまブログ 1. sudoのインストール sudoコマンドをインストールします。 # apt install -y sudo 2. /etc/sudoersの編集 sudoコマンドの設定ファイルである/etc/sudoersを編集して、権限の設定を行います。 /etc/sudoersは直接テキストエディタで開いて編集してはいけません。 書き方を誤るとsudoが動作せずに、どのユーザもsudoが使えなくなってしまうことがあるためです。 /etc/sudoersの編集はvisudoコマンドを使用します。 # visudo visudoコマンドを実行したら、/etc/sudoersに以下を追記します。 foo ALL=(ALL) ALL 書式:<ユーザ> <マシン名>=(<権限>) <コマンド> (<権限>)のところを(<ALL:ALL>)と書いた場合、左側がユーザ、右側がグループを表す。 ファイルを保存し、設定したユーザでsudoコマンドが実行できれば設定は完了です。 【参考】 【Debian 8 Jessie】sudoコマンドをインストールする #Linux - Qiita sudoers覚え書き #sudo - Qiita sudoersを変更する、よく使う設定例 - それマグで! 新しいLinuxの教科書 9章 03 スーパーユーザ

June 1, 2022

さくらのVPSにDebian11 (bullseye)をインストールする方法

さくらのVPSにDebian11をインストールする手順を解説します。 サーバーを契約し、OSをインストールして、ユーザーを作成してログインします。 1. 手順 以下の手順で進めていきます。 さくらのVPSでサーバーを契約 Debian11のインストール Debian11の設定 Debian11にログイン 1-1. さくらのVPSでサーバーを契約 以下にアクセスし、「お申し込み」を選択 VPS(仮想専用サーバー)|さくらインターネット サーバー作成 サーバー選択 ゾーン:石狩第一 プラン:512MB(学習には最小プランで十分) ストレージ変更オプション:SSD25GB 購入台数:1台 支払いパターン:毎月払い サーバー設定 サーバー名:任意 サーバー説明:任意 OS設定 インストールするOS:どれでも(後で入れ直すため) OSバージョン:どれでも(後で入れ直すため) スタートアップスクリプト:利用しない サーバーへのSSHキー登録:登録しない(後で入れ直すため) 支払い方法 初回は2ヶ月分の支払い 支払い完了後に以下の画面が表示され、数分後にサーバーが作成されます。 1-2. Debian11のインストール さくらのVPSにログインして、コントロールパネルのサーバー一覧から作成したサーバーを選択 「OS再インストール」を選択し、OSインストール形式は「カスタムOS」、インストールOSは「Debian 11 amd64」を選択して「内容確認」をクリック インストールOSが「Debian 11 amd64」になっていることを確認して、「OS再インストール」をクリック 1-3. Debian11の設定 作成したサーバーを選択し、「コンソール」>「VNCコンソール」を選択してVNCコンソールを起動 1-3-1. rootユーザーの設定 rootユーザーのパスワードを設定して、「Continue」を選択 設定したパスワードを再度入力して、「Continue」を選択 1-3-2. 一般ユーザーの設定 ユーザーのフルネームの設定は特に必要ないので何も入力せず、「Continue」を選択 一般ユーザーのユーザー名を設定して、「Continue」を選択 一般ユーザーのパスワードを設定して、「Continue」を選択 設定したパスワードを再度入力して、「Continue」を選択 1-3-3. パーティションの設定 「Guided – use entire disk」を選択 「Virtual disk 1 (vda)」を選択 ...

June 1, 2022

【Git】リモート追跡ブランチと上流ブランチを理解する【fetch・merge】

1. リモート追跡ブランチ、上流ブランチ リモート追跡ブランチ(remote-tracking branch) リモートブランチの状態を追跡するブランチ ローカルリポジトリに存在する(実体は.git/refs/remotes/) 上流ブランチ(upstream branch) デフォルトでマージの対象となるブランチ(引数なしでgit mergeした時にマージされるブランチ) mainブランチの上流ブランチがorigin/mainブランチである場合、「mainブランチはorigin/mainブランチを追跡している」と言う 2. fetch、merge、(pull) fetch:リモートリポジトリのmainブランチをローカルリポジトリのorigin/mainブランチに反映 merge:ローカルリポジトリのorigin/mainブランチをローカルリポジトリのmainブランチにマージ pull = fetch + merge git pull origin main = git fetch origin + git merge origin/main 3. 関連コマンド 3-1. 上流ブランチの設定 上流ブランチの設定(git-branch -u) # git branch -u <リモート追跡ブランチ> <ローカルブランチ> git branch -u origin/main main push時に上流ブランチを設定(git-push -u) # mainブランチの上流ブランチにorigin/mainブランチが設定される git push -u origin main 上流ブランチの設定を解除(git-branch –unset-upstream) # git branch --unset-upstream <ローカルブランチ> git branch --unset-upstream main 3-2. ブランチの確認 ローカルブランチとリモート追跡ブランチの表示(git-branch -a) ...

May 30, 2022

【apt install】Debian公式リポジトリに登録されていないパッケージをインストールする方法

本稿では、aptコマンドを使ってDebianの標準以外のパッケージをインストールする方法を紹介します。 1. はじめに Debianにパッケージをインストールする時には、aptコマンドを使うことが多いと思います。 デフォルトの状態ではDebianの公式リポジトリのみが/etc/apt/sources.listに設定されています。 そのため、サードパーティ製のパッケージ(Debianの公式リポジトリに登録されていないパッケージ)をインストールするためには、そのパッケージが格納されてるリポジトリを/etc/apt/sources.listに追加する必要があります。 今回は、以下の記事を参考にiozone3のインストールを例に手順を解説します。 apt-getで見つからないパッケージを追加する方法(debian, ubuntu両方対応) 2. 実行環境 Debian GNU/Linux 11 (bullseye) 3. 手順 3-1.パッケージディレクトリを検索 以下のサイトから、インストールしたいパッケージが存在するリポジトリを検索します。 Debian – パッケージ 「キーワード」にiozone3と入力して「検索」。 iozone3はnon-freeリポジトリにあることがわかる。 3-2.リポジトリを追加 /etc/apt/sources.listにnon-freeリポジトリを追加します。 今回はリポジトリの追加にapt-add-repositoryコマンドを使用します(sources.listを自分で直接編集する方法もある)。 apt-add-repositoryコマンドを使用するにはsoftware-properties-commonパッケージが必要です。 以下のコマンドを実行して、software-properties-commonパッケージをインストールします。 $ apt install -y software-properties-common ※上記コマンドの-yオプションについて、以下apt-getのmanpageより抜粋 -y, –yes, –assume-yes Automatic yes to prompts; assume “yes” as answer to all prompts and run non-interactively. If an undesirable situation, such as changing a held package, trying to install an unauthenticated package or removing an essential package occurs then apt-get will abort. ...

May 19, 2022

【Linux】SSH公開鍵認証方式の設定手順

1. はじめに 本稿では、クライアントからSSHでLinuxサーバーに接続する手順を解説します。 リモートのサーバーにローカルPCのSSHクライアントで公開鍵認証方式を使ってログインできるようにします。 2. 実行環境 【SSHクライアント】macOS Monterey:12.3.1 【SSHサーバー】Debian GNU/Linux 11 (bullseye) 3. 手順 以下の手順で進めていきます。 SSHのインストール パスワード認証方式での設定 公開鍵認証方式での設定 セキュリティ設定 追加設定 3-1. SSHのインストール サーバー側で以下のコマンドを実行して、OpenSSHをインストールします。 # apt install -y ssh 3-2. パスワード認証方式での設定 公開鍵認証方式の設定を行うために、一時的にパスワード認証方式でログインできるように設定します。 サーバー側で以下のコマンドを実行して、設定ファイル(/etc/ssh/sshd_config)のバックアップを取ります。 # cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bk /etc/ssh/sshd_configのパスワード認証の項目を以下に変更します。 PasswordAuthentication yes ※その他の項目は後で設定します。 SSHサーバーを再起動して設定を反映させます。 # systemctl restart ssh クライアント側で以下のコマンドを実行して、パスワード認証方式でSSHサーバーにログインできることを確認します。 $ ssh <ユーザ名>@<SSHサーバーのIPアドレス> 3-3. 公開鍵認証方式での設定 次に公開鍵認証方式の設定を行います。 3-3-1. キーペアの生成 クライアント側で以下のコマンドを実行して、公開鍵と秘密鍵のキーペアを作成します。 $ ssh-keygen -t ed25519 公開鍵:~/.ssh/id_ed25519.pub 秘密鍵:~/.ssh/id_ed25519 ※秘密鍵は絶対に流出させてはいけません。 3-3-2. 公開鍵の登録 次に、サーバー側に公開鍵を登録します。 ssh-copy-idを使って公開鍵の登録を行います。 クライアント側で以下のコマンドを実行し、ssh-copy-idをインストールします。 $ brew install ssh-copy-id クライアント側で以下のコマンドを実行し、サーバー側に公開鍵を登録します。 $ ssh-copy-id -i ~/.ssh/id_ed25519.pub <ユーザ名>@<SSHサーバーのIPアドレス> ssh-copy-idコマンドがやってくれたことを手動で行う場合は、以下のようになります。 ...

May 19, 2022

【Rails/MySQL】RailsでMySQLを使う方法

1. はじめに Railsではデフォルトのデータベースにsqlite3を使用しています。 今回はRailsアプリケーションのデータベースでMySQLを使用する方法を紹介します。 2. 開発環境 macOS Monterey:12.3.1 Ruby:3.1.0 Bundler:2.3.12 Ruby on Rails:6.1.5 MySQL:8.0.28 3. 手順 3-1. MySQLのインストールとセキュリティ設定 まずは、MySQLのインストールとセキュリティの設定を行います。 MySQLをHomebrewでインストールしてセキュリティ設定を行う | あまブログ 3-2. MySQLのユーザー作成 次にMySQLの開発用ユーザーを作成します。 rootユーザーでログインします。 $ mysql -u root -p ユーザーの作成します。 mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; MySQL 8.0 リファレンスマニュアル_CREATE USER ステートメント ユーザーが作成されたことを確認します。 mysql> SELECT User,Host FROM mysql.user; +------------------+-----------+ | User | Host | +------------------+-----------+ | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | | newuser | localhost | +------------------+-----------+ 5 rows in set (0.00 sec) 権限の付与します。 ...

May 8, 2022