準備:
まずAlibaba Cloudアカウントを登録する必要があります。以下のリンクをクリックして登録してください:Alibaba Cloudアカウント登録
必要事項を入力後、登録完了となります。
次に「マイアカウント」に移動し、本人確認手続きを行ってください。
法人か個人かを選択できます。法人で利用する場合は必ず法人を選択してください。
本記事では、Alibaba Cloudサーバーでゼロからnginxサーバーを構築する方法を説明します。Alibaba Cloudサーバー(ECS)はご存じの方も多いでしょう。興味のある方はクラウドサーバーECS_クラウドホスト_サーバーホスティング_計算-Alibaba Cloudで購入するか、体験館で体験(有効期間2週間)することができます。ECSの登録や管理方法については公式ドキュメントに詳しく記載されているため、ここでは詳しく説明しません。不明な点があれば、お問い合わせフォームからお問い合わせください。
ここでは、Alibaba Cloudサーバーを所有していると仮定します(IPアドレスは203.0.113.22としています。読者はご自身のIPアドレスに置き換えてください)。また、いかなるインストールパッケージも選択していません。現在のECSは必須のLinuxシステム以外は完全に空の状態です。また、本記事ではUbuntu Linux 20.04 64ビット版を選択しています。LinuxはGUI部分がないためメモリを節約でき、純粋なコンソール操作(コマンドラインに抵抗がある方はご遠慮ください)です。
本記事ではnginxサーバーのみをインストールします。後続の記事ではPHP、Java、MySQLなどの他のコンポーネントを構成します。
インストール前に以下の2つの作業を完了する必要があります。
- ファイルをアップロードするツールを選択(nginxインストールパッケージなど)
- サーバーのコンソールに接続してコマンドを実行
現在のサーバーはまだ空の状態であるため、FTPサービスは起動していません。そのため、SFTP(SSH File Transfer Protocol)を使用する必要があります。SFTPとは何で、どのように使用するかについては、ネット上で検索してください。要するに、SFTPはSSHプロトコルを使用し、デフォルトポート番号は22です。使用方法はFTPに似ています。ほとんどのFTPクライアントがSFTPをサポートしています。SFTPをサポートするツールを適当に選択してください。その後、ECSのユーザー名(root)とパスワードを使用してSFTPに接続します。
サーバーのコンソールに接続するには、SSHクライアントを使用します。例えば、Mac OS Xの場合、直接sudo ssh 203.0.113.22と実行します。これによりシステムにOS X管理者パスワードの入力が求められます。通過後、ECSのrootユーザーパスワードの入力が求められ、正しく入力するとECSコンソールに入ります。以下のような歓迎メッセージが表示されます。
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.13.0-28-generic x86_64)
- Documentation: https://help.ubuntu.com/
Welcome to aliyun Elastic Compute Service!
これらの作業が完了したら、以下の手順で操作を行います。
注:以下のコマンドはすべてECSコンソールで実行します。
nginxのrewrite機能にはpcreライブラリが必要なため、まずLinuxで以下のコマンドを実行してpcreをインストールします(以下のコマンドはUbuntu Linux向けです。他のLinuxディストリビューションでは別のコマンドを使用する必要があります)。
apt update
apt install libpcre3 libpcre3-dev
第2段階:nginxインストールパッケージのダウンロードとアップロード
apt-getを使用してnginxをインストールできますが、最新バージョンではない場合があります。最新バージョンをインストールしたい場合は、公式サイトからnginxの最新ソースコードパッケージを直接ダウンロードして、コンパイルしてインストールするのが適しています。
読者はhttp://nginx.org/en/download.htmlからnginxの最新版をダウンロードできます。現在の最新版は1.23.1です。
ダウンロードボックス内のnginxパッケージをダウンロードしてください。
ダウンロード後、SFTPツールを使用してECSにアップロードします。外部ストレージを購入していない場合は、システムディスクにアップロードしても構いません。Linuxには20GBのシステムディスクが付属しています。約18GBが残っており、実験には十分です。
以下のコマンドを使用してnginxインストールパッケージを解凍します。
tar -xzf nginx-1.23.1.tar.gz
解凍後のディレクトリはnginx-1.23.1です。このディレクトリに移動します。
第3段階:必要なライブラリのインストール
nginxをコンパイルするにはhttp_stub_status_moduleとhttp_ssl_moduleが必要なため、zlibとOpenSSLをインストールする必要があります。
以下のコマンドを使用してzlibをインストールします。
apt install zlib1g zlib1g-dev
以下のコマンドを使用してOpenSSLをインストールします。
apt install libssl-dev
第4段階:OpenSSLソースコードの使用
コンパイル時にエラーが発生する場合、原因がOpenSSLにある可能性があるため、最も確実な方法はOpenSSLソースコードをnginxソースコードと一緒にコンパイルすることです。読者はhttps://www.openssl.org/sourceから最新のOpenSSLソースコードをダウンロードできます。ダウンロード後、SFTPツールを使用してECSにアップロードします。その後、tarで解凍します。解凍後のディレクトリを/usr/local/opensslと仮定します。
第5段階:nginxのバージョンを非表示にする
このステップは必須ではありませんが、セキュリティの観点から、nginxをコンパイルする前に通常はバージョンを非表示にします。これにより攻撃者にもある程度の障害を与えることができます。
nginxソースコードのルートディレクトリにあるsrc/coreに移動し、viでnginx.hヘッダファイルを開きます。変更前のコードは以下の通りです:
#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_
#define nginx_version 1023001
#define NGINX_VERSION "1.23.1"
#define NGINX_VER "nginx/" NGINX_VERSION
#ifdef NGX_BUILD
#define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD NGINX_VER
#endif
#define NGINX_VAR "NGINX"
#define NGX_OLDPID_EXT ".oldbin"
#endif /* _NGINX_H_INCLUDED_ */
変更後のコードは以下の通りです:
#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_
#define nginx_version 1023001
#define NGINX_VERSION ""
#define NGINX_VER "webserver" NGINX_VERSION
#ifdef NGX_BUILD
#define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD NGINX_VER
#endif
#define NGINX_VAR "webserver"
#define NGX_OLDPID_EXT ".oldbin"
第6段階:nginxの設定
Linux/OS Xでのソースコードコンパイルの基本的な手順は、まずconfigureを実行し、次にmake installを実行するという流れです。PATHに「.」が設定されていない場合は、「./configure」を使用する必要があります。
nginxソースコードのルートディレクトリに移動し、以下のコマンドを実行します:
./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module --with-openssl=/usr/local/openssl
ここで「/opt/nginx」はインストール先のディレクトリを示します。「/usr/local/openssl」はOpenSSLソースコードのディレクトリです。これによりnginxはOpenSSLと一緒にコンパイルされます。
第7段階:nginxのコンパイル
前のステップで問題がなければ、make installを実行してnginxをコンパイルインストールします。コンパイルが完了すると、ターゲットファイルはすべて/opt/nginxディレクトリに配置されます。
第8段階:設定ファイルが正しいか確認
/opt/nginx/sbinディレクトリに移動し、nginx -tを実行します。以下のようなメッセージが表示されれば、設定ファイルは正しいです(設定ファイルを変更した後、nginxサービスを起動する前に、このコマンドを実行するのが良いでしょう)。
nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
第9段階:nginxサービスの起動
/opt/nginx/sbinディレクトリに移動し、nginxコマンドを実行してnginxサービスを起動します。80ポートが既に使用されている場合、nginxサービスが既に起動している可能性があります。pkill nginxコマンドを実行してnginxサービスを終了してください。ps -ef | grep nginxコマンドを実行してメモリにnginxプロセスが残っていないか確認できます。
第10段階:nginxサービスのテスト
ブラウザを開き、アドレスバーにhttp://203.0.113.22と入力します。以下のような情報が出力されれば、nginxは正常に構築されています。
適当なパスを入力してみてください。例えばhttp://203.0.113.22/testなどです。このパスは存在しないため404エラーが出力されますが、nginxのバージョンは非表示にしているため、以下のような出力情報のみが表示されます。