Ubuntu+PerlでWebシステム開発 環境構築

  • Ubuntu20
  • Ubuntu18
  • Ubuntu16

Ubuntu+PerlでWebシステム開発 環境構築

Ubuntu+PerlでWebシステム開発環境を構築では、Ubuntuを使って、PerlによるWebシステム開発環境を構築するための手順を紹介します。Linux上に、スケーラブルで、リアルタイムWeb対応のWebアプリケーションを比較的簡単に構築できることは、Perl Webシステム開発の特徴です。

Ubuntu上にWebサーバーを構築、PerlでWebアプリケーションを作成、Webサーバーからリバースプロキシで、Webアプリケーションにつなぐ設定して、外部へ公開できるところまでを解説します。Webシステム開発の現場で実際に利用される内容が中心となっています。

2020年6月16日現在、Ubuntuのバージョンは、Ubuntu 18で確認しています。特別な注記がない限り、Ubuntu 20、Ubuntu 16でも、動作すると想定します。

Ubuntuを利用できるようにする

Ubuntuを利用できるようにしましょう。

コマンドを実行できるコンソール画面を表示するところまで進んで、初期ユーザーでログインするところまで進みましょう。

VPSやクラウドサーバーを使った個別の手順は以下で公開しています。

ユーザーの作成

次は、コンソール画面でユーザーを作成します。Webアプリケーションの実行ユーザー(myapp)を作成するのと、自分自身のユーザー(たとえばkimoto)の二つを作成してみましょう。

ユーザー追加「-m」オプションあり、パスワードの設定、sudoグループへ追加の手順を行いましょう。

グループの作成

Webアプリケーションで必要になる「myapp-group」グループを作成します。これは、データディレクトリにWebアプリケーションのユーザー、開発ユーザー、Apacheユーザーが、アクセスするために必要になります。

次に、myappユーザーと開発者ユーザ(たとえばkimoto)を「myapp-group」に追加しましょう。

ファイアーウォールの設定

ホスティングサービスが用意するネットーワークのファイアーウォール設定で以下のポートを開いてください。またオンプレミスでサーバーを構築している場合はufwコマンドを使って、以下のポートを開いてください。

HTTP80
HTTPS443
SSHSSHで利用するポート(デフォルトの22番ポートは危険)
開発Webアプリ3000
本番Webアプリ8080

3000番ポートは、Mojoliciousの開発サーバーのデフォルトのポートです。

開発者が複数いる場合は、必要に応じて、パケットフィルタから別のポートを開放しましょう(3001番、3002番など)。

8080番ポートは、Mojoliciousの本番サーバーのデフォルトのポート番号です。

複数のWebアプリケーションを動かす場合は、必要に応じて、パケットフィルタから別のポートを開放しましょう(8081番、8082番など)。

SSHクライアントの利用

パソコン上からSSHでサーバーへの接続して、コマンド実行とファイル編集ができるようにしましょう。

SSHクライアントでコマンド実行

SSHクライアントでSSHサーバーに接続してコマンド実行するツールに、Windowsの場合はTeraTermがあります。

PuTTYなどの他のWindowsで動くSSHクライアントもありますので、お好みで。

Macの場合は、ターミナルからsshコマンドが使えます。

SCPを使ってサーバー上のファイルを編集

SCPというSSH上に構築されるプロトコルを使うとサーバー上のファイルを編集できます。

SCPクライアントとして、Windowsの場合はWinSCPがあります。

MacにもWindowsのWinSCPの代わりになるようなソフトウェアがあるので、インストールしましょう。

SSHサーバーの設定

タイムゾーンの設定

タイムゾーンを「Asia/Tokyo」に設定しましょう。

パッケージのインストール

PerlにおけるWebシステム開発に必要なパッケージをインストールしましょう。デフォルトパッケージでは、足りないものをインストールしていきます。

インストールがうまくいかない場合があるので、最初にaptを最新のバージョンにしましょう。

まずは、ひとつのマシンの中に、Webサーバー、アプリケーションサーバー、メール送信サーバー、DBサーバーをすべて構築しましょう。

コンパイラ・リンカ

Perlのモジュールのインストールに必要なコンパイラ・リンカのインストール。

テキストエディタ

HTTPクライアント

SSL通信

画像処理

圧縮・解凍

ネットワーク

リポジトリ管理

Perl

SSL証明書

データ用ディレクトリの作成

Webアプリケーションからアップロードされたファイルを保存したり、バッチ処理でデータを要約したJSONを保存しておくための、データ用のディレクトリを作成します。このディレクトリは「myapp」ユーザー、他の開発ユーザーが立ち上げた、Webアプリケーションが、ファイルをアップロードする場所です。適切なパーミッションを設定しておきましょう。

もし、アタッチされたディスクを使って、それをデータ用のディレクトリにする場合は、こちらの手順を先に行っていください。「/datadrive」というデータ用のディレクトリが作成されます。

アプリケーションサーバーのデフォルトのディスクを使う場合は「/datadrive」をmkdirコマンドで作成してください。

sudo mkdir /datadrive

次に、このデータディレクトリに、アプリケーションユーザーと他の開発ユーザーが書き込めるようにします。

これで、データ用ディレクトリが完成しました。

Redisサーバー

揮発性の情報の保存サーバーであるRedisサーバーのインストールと起動確認を行います。

以下の記事の「sudo systemctl status redis-server」を実行してRedisサーバーが起動していることを確認してください。

データベースサーバー MariaDB

データベースサーバーであるMariaDBのインストールと起動確認を行います。

データベースサーバーと関連ライブラリのインストール

データベースサーバーの起動確認

以下の記事の「sudo systemctl status mariadb」を実行してMariaDBが起動していることを確認してください。

MariaDBサーバーの初期設定

データベースサーバーであるMariaDBの初期設定を行いましょう。

Perl Web開発環境の構築

安定性を求める場合は、CPANモジュールのインストールや警告表示などで不具合のない「perl-5.20.3」をインストール。

セキュアな最新版が良い場合は「perl-5.30.3」をインストール。

次にWebアプリケーションをデプロイします。

バッチプログラムがWebアプリケーションのライブラリのパスを発見できるようにしておきましょう。Webアプリケーションに加えて、バッチプログラムを作成する場合の準備をしておきます。

「~/.bashrc」に追加しましょう。

vi ~/.bashrc
export PERL5LIB=/home/myapp/webapp/lib

ドメイン名の取得とDNSサーバーの設定

ドメインを取得して、ドメイン名とサーバーIPアドレスを紐づけましょう。インターネット上でWebサイトを公開するためと、メール送信サーバーのポータビリティのある設定のために必要です。

メールアドレスの作成とDNSサーバーの設定

cron

定期プログラム実行の常駐アプリケーションであるcronの起動確認を行います。

cronの起動確認

以下の記事の「sudo systemctl status cron」を実行してApacheが起動していることを確認してください。

crontabの設定

crontabの初期設定をしておきましょう。

Apache

WebサーバーであるApacheのインストールと設定を行います。

Mojoliciousアプリケーションに接続できるようにリバースプロキシの設定を行います。

HTTPSで接続できるようにSSLの設定を行います。

Apacheのインストール

Apacheをインストールして、起動していることを確認します。

Apacheの設定ファイル

Apacheの設定ファイルのディレクトリに移動して、Apacheの設定を行います。Apacheの設定ファイルが正しいかをチェックする方法、Apacheの設定を有効にする方法を見ておきましょう。

Apacheモジュール

リバースプロキシの設定とSSLの設定に必要なApacheモジュールを有効にします。

リバースプロキシの設定

リバースプロキシは、Apacheで受けたHTTPリクエストを、他の場所に、透過的に渡す仕組みです。PerlでWebアプリケーションを作成した場合は、リバースプロキシは、HTTPリクエストを、Webアプリケーションに渡します。

SSL証明書の取得とSSLの設定

HTTPSでリクエストを受けるために、SSL証明書の発行とSSLの設定を行います。

Webアプリケーションのsystemdによる管理

OSが再起動したときにWebアプリケーションが自動起動する設定を行いましょう。

メール送信

メール送信を行うためにpostfixをインストールします。クラウドメールサービスに申し込んでメールを送信できるようにします。

Webシステム開発のための関連講座

Ubuntu+PerlによるWebシステム開発環境の完成です。お疲れさまでした。

初めての場合は、やりきるのに1ヵ月くらいかかったんじゃないでしょうか?

頑張ってやり切れば、サーバー構築の力がつく内容を、自信を持って提供している(つもり???)なので、お付き合いいただきありがとうございます。

このサイトのすべての記事は以下にあります。

またWebシステム開発環境を作成した後に、実際にWebシステム開発ができるようになるための関連講座を用意していますので、ご活用ください。

Webプログラミング入門

Perlの基礎がわかっていて、すぐにWebプログラミングを始めたいならこちら(かなり未完成)。

Perlプログラミング入門

Perlの基礎を学んでテキスト処理やライブラリ開発を行いたいならこちら。

Webデザイン入門

HTML・CSS・JavaScriptなどWebデザインの基礎について学びたい方はこちら。

Linux入門

viテキストエディタや基本的なLinuxコマンド、Linuxの仕組みについて学びたい方はこちら。

データベース入門

MariaDBデータベースの環境構築やSQLの実行について学びたい方はこちら(かなり未完成)。