このチュートリアルでは、Alibaba Cloud ECSインスタンスにSuiteCRMをインストールし、Alibaba Cloud DirectMailをSMTPプロバイダとして使用するように設定します。
Alibaba Cloud Tech Share執筆者のJeff Cleverleyによるものです。Tech Shareは、技術的な知識やベストプラクティスをクラウドコミュニティ内で共有することを奨励するAlibaba Cloudのインセンティブプログラムです。
企業の誰かが電話に出て顧客に電話をかけたり、顧客にメールを送ったり、営業見込み客に会ったり、リードのフォローアップをしたり、潜在顧客や現在の顧客と何らかの形でやり取りをするたびに、新たな価値ある情報が生まれます。しかし、どのようにしてその情報を管理し、それらの相互作用を管理し、あなたのビジネスに最も利益をもたらす顧客との関係を発展させることができるでしょうか?
このビジネス領域へのアプローチの1つは、顧客関係管理(CRM)プラットフォームの使用です。CRMを使用すると、会社のウェブサイト、電話、電子メール、チャット、マーケティング、ソーシャルメディアを含むすべての通信チャネルの日付をコンパイルし、これらの最も重要な関係の進捗状況とメンテナンスを分析することができます。CRMを使用することで、あなたのビジネスはターゲットオーディエンスについての詳細を知ることができ、どのようにして彼らにサービスを提供するのがベストかを知ることができます。
市場には多くの有名なCRMソリューションがあり、この分野では著名な企業が高額なホスト型プラットフォームをサブスクリプションで提供しています。しかし、オープンソースコミュニティは、CRM市場に大きな混乱を引き起こしているソリューションを強化しています。
それが SuiteCRM です。SuiteCRM は、完全な機能を備えたオープンソース CRM です。元々は業界の主要プレーヤーの1つであるSugarCRMのオープンソースフォークでしたが、今では際立った革新的なリーダーに成長しました。SuiteCRM は、Salesforce CRM や Microsoft Dynamics CRM などのメジャープレイヤーと同じくらい強力ですが、90,000 人以上のメンバーと 4,000,000 人以上のユーザーベースを持つオープンソースコミュニティに支えられており、2000 人近くの翻訳者と 69 の言語パックが用意されています。
このチュートリアルでは、Alibaba Cloud ECS インスタンスに SuiteCRM をインストールし、Alibaba Cloud DirectMail を SMTP プロバイダとして使用するように設定します。チュートリアルの一部として、ドメイン、LEMPスタック、バーチャルホスト、SSLを設定し、SuiteCRMが正常に機能するために必要なCronジョブを追加します。
私は例のコマンドを発行するために 'root' ユーザーを使用します。root ユーザーを使用していない場合は、root 権限が必要な各コマンドの前に 'sudo' コマンドを発行することを忘れないでください。コードとコマンドの例では、テストドメイン - an-example.com を使用します。自分のドメインを使用できるようにしておく必要があります。
このチュートリアルを始める前に、Alibaba Cloud ECSインスタンスをプロビジョニングして実行し、少なくとも1GBのメモリを持っている必要があります。プロビジョニング中に公開 SSH 鍵をサーバにアップロードして、ターミナルから SSH でサーバにアクセスできるようにしておく必要があります。
ステップ1:サーバーセキュリティグループの構成
Alibaba Cloud ECSインスタンスをプロビジョニングしたら、ECS管理コンソールのインスタンスリストに表示されるはずです。
Elastic Compute Services Horizontal Menuバーで、Instanceリストの左側にあるSecurity GroupsリンクをクリックしてSecurity Group Listに移動します。
Security Group Listパネルで、インスタンスのセキュリティグループが表示されます。セキュリティグループの右側にある Configure Rules リンクをクリックします。
インバウンドポートルールの構成
セキュリティグループルールパネルでは、インバウンドルールとアウトバウンドルールの両方のタブ付きインターフェイスが表示されます。
受信ルールが最初に表示され、デフォルトのシステム構成ルールがすべて表示されます。パネルの右上にある [Add Security Group Rules] ボタンを探してクリックします。
次の受信ポートが開いている必要があります。
- 22 (SSH)
- 80 (HTTP)
- 443 (HTTPS)
- 2222 (Webinoly Tools)
デフォルトのシステムルールでは、SSH(22)、HTTP(80)、HTTPS(443)ポートが既に開いています。つまり、Webinoly Tools用のルールを1つだけ追加する必要があります。
Webinolyインバウンドポート
次のように、追加のセキュリティグループルールを1つ構成します。
ルールの方向:インバウンド
認可ポリシー:許可
プロトコルの種類:Custom TCP
ポート範囲:2222/2222
優先度:1
認証タイプ:Address Field Access
認証オブジェクト:0.0.0.0.0/0
説明:Webinoly Tools Port
このポートが正しく設定されている場合、Inbound Security Group Rules タブは以下のようになります。
<完全に設定されたインバウンドセキュリティグループルールタブ>
アウトバウンドポートルールの設定
次に、Outbound rules タブをクリックします。現在開いているポートは2つだけで、HTTP(80)とHTTPS(443)のデフォルトルールです。
パネルの右上にある [Add Security Group Rules] ボタンを再度見つけてクリックします。今回は、セキュリティグループに3つのルールを追加する必要があります。
次の追加ポートを開く必要があります。
- 22 (SSH)
- 25 (SMTP)
- 11371(Access GPG Keys)
アウトバウンド SSH ポート
まずはSSHポートの設定をしてみましょう
ルールの方向性:インバウンド
認可ポリシー:許可
プロトコルの種類:カスタムTCP
ポートレンジ:22/22
優先度:1
認証タイプ:アドレスフィールドアクセス
認証オブジェクト:0.0.0.0.0/0
説明:Webinoly SSH
送信SMTPポート
次にSMTPポートを設定します。
ルールの方向性:インバウンド
認可ポリシー:許可
プロトコルの種類:カスタムTCP
港の範囲: 25/25
優先度:1
認証タイプ:アドレスフィールドアクセス
認証オブジェクト:0.0.0.0.0/0
説明:Webinoly SMTP
アウトバウンドGPGキーポート
最後に、WebinolyのGPGキーにアクセスするためのポートを設定する必要があります。
ルールの方向性:インバウンド
認可ポリシー:許可
プロトコルの種類:カスタムTCP
ポート範囲:11371/11371
優先度:1
認証タイプ: Address Field Access
認証オブジェクト:0.0.0.0.0/0
説明 :Webinoly GPG
追加の送信ポートが正しく設定されている場合、「Outbound Security Group Rules」タブは以下のようになります。
<完全に設定されている送信セキュリティグループルールタブの設定>
ステップ2:アプリケーションドメインとアリババクラウドDNSを設定する
これでセキュリティグループが適切に設定されたので、次はサイトドメインとDNSを設定します。これを行うには、まず、メインサービスの左横メニューの「ドメインとウェブサイト」セクションにあるAlibaba Cloud DNSリンクをクリックします。Alibaba Cloud DNSパネルに、設定したすべてのドメインのリストが表示されます。
ドメインの追加
今のところ、私のリストは何も設定していないので空です。ドメインを追加するには、パネルの右上にある青いドメイン名の追加ボタンをクリックします。
ポップアップモーダルが表示されますので、ドメイン名を追加して「確認」をクリックします。
ドメインネームサーバー(DNS)の設定
ドメインレジストラでアリババDNSを使用してドメインネームサーバーを設定していない場合、基本DNSドメインリストのステータス欄にオレンジ色の無効なDNSサーバーの警告が表示されます。
ドメインがAlibaba Domainsで登録されている場合は、この警告は表示されず、DNSサーバーはすでに正しく設定されています。
リストのドメインの左側にある「設定」リンクをクリックします。
ドメインがAlibaba Cloudに登録されていない場合は、ネームサーバーを変更する必要があります。DNS設定パネルの中に黄色のパネルが表示され、DNSサーバーを変更するように指示され、正しいAlibaba Cloud DNSサーバーのアドレスが表示されます。提供されたネームサーバーをコピーします。
サードパーティドメインレジストラのコントロールパネルにログインし、使用しているドメインのネームサーバーセクションを見つけます。DNS設定をカスタムドメインに変更し、Alibaba Cloud DNSが提供するDNS設定を入力します。
私のドメインレジストラでは、設定は以下のようになっています。
<サードパーティドメインのDNSをアリババクラウドDNSに変更する>
アリババクラウドDNSでドメインのDNSレコードを追加する
最低限、ドメインの DNS レコードを 2 つ追加する必要があります。インスタンスの IP アドレスにあるすべてのホストの A レコードを追加します。当社のCRMアプリケーションが機能するためにはHTTPSが必要なので、Lets Encrypt SSL証明書を実装するために必要なWWWホストCNAMEレコードも追加する必要があります。
ドメインのDNSレコードリストの左上にある「レコードの追加」ボタンをクリックします。
まず、以下のようにAレコードを追加します。
タイプ:A - IPV4アドレス
ホスト:@
ISP回線:デフォルト
値:
TTL:10分
確認をクリックしてレコードを追加します。
次にwww CNAMEレコードを以下のように追加します。
タイプ:CNAME - 正準名
ホスト:wwww
ISP回線:デフォルト
値:
TTL:10分
[確認]をクリックしてレコードを追加します。
両方のDNSレコードが追加され、ドメインDNSサーバーが正しく設定された状態で、DNS設定リストは以下のようになっているはずです。
<基本ドメインDNSが正しく設定されています>
ステップ3: LEMPサーバスタックのインストール
私たちは、LEMPスタック、アプリケーションのバーチャルホストとディレクトリ、およびLet's Encrypt SSL証明書をインストールして設定するためにWebinoly LEMPスタック自動化スクリプトツールを使用します。
まず、サーバーにログインする必要があります。このチュートリアルの前提条件は、インスタンスをプロビジョニングしたときにSSHキーを追加することなので、これは簡単です。ターミナルから以下のコマンドを実行します。
# ssh root@<your-server-ip-address>
Nginx、MariaDB、PHP7.2からなる高性能なLEMPスタックをWebinolyで簡単にインストールできます。以下のコマンドを発行するだけです。
# wget -qO weby qrok.es/wy && bash weby 3
WebinolyがLEMPスタックのインストールと設定を完了すると、MariaDBインストールのルートパスワードと管理者パスワードが提供されます。これらのキーを安全に保管することが非常に重要です。
ステップ4: Nginxバーチャルホストとディレクトリの設定
PHPベースのCRMをインストールする予定なので、PHP-FPMにPHPリクエストを渡すためにNginxバーチャルホストを設定する必要があります。
Webinolyを使うと、Nginxバーチャルホストとディレクトリ構造を設定するのが信じられないほど簡単になります。
次のコマンドを実行: # site your-site-domain.com -php
成功メッセージの返事が返ってくる、これだけです。
以下のコマンドで、「/etc/nginx/sites-available/」ディレクトリにNginxサイト設定ファイルが作成され、「/sites-enabled/」ディレクトリにシンボリックリンクされていることを確認できます。
# cd /etc/nginx/sites-available/ && ls
# cd /etc/nginx/sites-enabled/ && ls
テキストエディタを使ってバーチャルホスト設定ファイルを確認することができます。
# nano /etc/sites-available/your-site-domain.com
ルートフォルダの場所をメモしておき、'/var/www/your-site-domain.com/htdocs'とします。
さて、すべてが正しく動作することを確認するために、ディレクトリ構造が作成され、ウェブアプリケーションのルートディレクトリがあるべき場所にあることをダブルチェックすることができます。
# cd /var/www/your-site-domain.com/htdocs && ls
これで、空のルートアプリケーションディレクトリに移動します。
ステップ 5: Let's Encrypt で HTTPS を有効にする
SuiteCRMはHTTPSを必要とするので、SSL証明書を発行し、HSTS (HTTPS Strict Transport Security)を有効にして、サイトとの通信が安全なプロトコルを介してルーティングされるようにする必要があります。
これは、次のコマンドを発行するだけで、Webinolyで簡単に作られた別のタスクです。
# site your-site-domain.com -ssl-on
このコマンドが動作するためには、Alibaba Cloud DNSでメインドメインの「www」host CNAME aliasを作成しておく必要があります。
証明書を登録するためのメールアドレスを入力するように促されます。
次に、WebinolyはSSL証明書を生成し、サイトのセキュリティプロトコルが失効しないように、証明書を更新するために必要なcronジョブを作成します。
Webinolyのインストールの一部として、証明書Diffie-Hellmanパラメータがアップグレードされたので、この証明書は今すぐにA-ratedです。それはどのように素晴らしいですか?
ステップ6:MariaDB MySQLデータベースとユーザーの作成
WebinolyがMariaDBをインストールすると、自動的にセキュリティとハードニングのプロセスが実行されますので、その必要はありません。
以下のコマンドでMariaDBをrootユーザーとして開きます(ステップ3の最後に書いたrootパスワードが必要です)。
# mysql -u root -p
ルートパスワードの入力を求められます。データベースを作成します('suite'データベース名を必要に応じて適切な名前に置き換えてください)。
CREATE DATABASE suite DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci.
次に、データベースのユーザを作成し、権限を付与し、ユーザのパスワードを設定します('admin'ユーザと'secure_admin_password'パスワードを必要に応じて適切なエントリに置き換えてください)。
GRANT ALL ON suite.* TO 'admin'@'localhost' IDENTIFIED BY 'secure_admin_password’.
これが完了したら、権限をフラッシュしてMariaDBを終了します。
FLUSH PRIVILEGES;
EXIT;
各コマンドの後、MariaDB モニターは 'Query OK' と影響を受けた行で応答しているはずです。ターミナルは次のように表示されるはずです。
<データベースを作成し、ユーザーをアタッチする>
ステップ 7: アプリケーションのディレクトリとファイルを準備
インスタンスにZipアーカイブユーティリティを使用していることを確認する必要があります。以下のコマンドでインストールします。
# apt-get install zip unzip
次に、SuiteCRMサイトからダウンロードリンクを取得します。ダウンロードページで、大きな赤いダウンロードボタンを右クリックして、リンクアドレスをコピーします。
ここで、ディレクトリを '/var/www/your-domain.com/directory' に変更します。
# cd /var/www/your-domain.com
SuiteCRM のサイトからコピーしたダウンロードリンクを使用して、このディレクトリに SuiteCRM Archive Zip をダウンロードします (上記のコマンドを直接コピーするのではなく、実際のダウンロードリンクを使用することを覚えておいてください)。
# wget https://archive/download/link/copied/from/the/SuiteCRM/site/SuiteCRM.zip
ディレクトリの内容をオーナーとパーミッションでリストアップしてみると、既存の「/htdocs」ディレクトリが「www-data:www-data」というユーザーとグループに属していることがわかります。
ダウンロードしたSuiteCRM Zip Archiveの名前に注目してください。これにはバージョン番号が付いています。
# ls -l
<ディレクトリの内容をリストアップし、アーカイブ名をメモする>
SuiteCRMのZipアーカイブを解凍します。
# unzip SuiteCRM.zip
アーカイブのZipには、追加されたバージョン番号が含まれていることを覚えておいてください - ターミナルから正しいアーカイブのタイトルを使用し、上記のコードをコピーしないでください。以下のスクリーンショットをご覧ください。
ここで不要なアーカイブを削除し、ディレクトリの内容をリストアウトします。
# rm SuiteCRM.zip && ls -l
ディレクトリには、'htdocs' ディレクトリと SuiteCRM ディレクトリの 2 つのサブディレクトリが含まれていることがわかります。
<アーカイブ削除後のディレクトリ内容の一覧について>
元の 'htdocs' ディレクトリを削除し、'SuiteCRM' ディレクトリの名前を 'htdocs' に変更する必要があります。
# rm -rf htdocs
# mv SuiteCRM htdocs
新しい名前の 'htdococs' の所有者を 'www-data:www:data' に変更し、ディレクトリをリストアップして変更が完了したことを確認する必要があります。
# chown -R www:data:www-data htdocs
# ls -l
アプリケーションをインストールする前に最後にしなければならないことは、ファイルの所有権を修正することです。ディレクトリを'htdocs'ディレクトリに変更し、以下のコマンドを実行します。
# cd htdocs
# chmod -R 755 .
# chmod -R 775 cache custom modules themes data upload
# chmod -R 775 config_override.php 2>/dev/null
ステップ8: SuiteCRMのインストール
SuiteCRMをインストールするには、ドメインにアクセスするだけで、アプリケーションのインストーラーが手順を案内してくれます。
https://your-site-domain.com
ライセンスのチェック
SuiteCRMはGPL Version 3ライセンスのオープンソースアプリケーションなので、まずはI Acceptチェックボックスにチェックを入れてライセンスを受け入れることを確認し、Nextをクリックします。
システム環境のチェックとCronジョブの指示
その後、SuiteCRMはシステム環境のチェックを通過し、すべてがOKとして通過するはずですが、次のページで提供されるCronジョブのセットアップ手順をコピーダウンしてください。
これらをコピーしたら、[次へ] をクリックします。
<システム環境チェック後のCronジョブ設定指示書のコピーのご案内>
データベースとサイト構成
データベースの構成
ここでは、データベースの詳細を提供する必要があります。データベース名を入力し、ホストとしてlocalhostを入力します。
スイート・データベース・ユーザー・ドロップダウン・セレクターから既存のユーザーを提供を選択し、データベースのユーザー名とパスワードを入力します。
サイト構成
サイト設定セクションでは、管理者ユーザーの名前とパスワードを選択し、SuiteCRM の URL が :443 HTTPS ポートで設定されていることを確認し、最後に管理者ユーザーの電子メールを設定します。
すべての設定が完了したら、[次へ] をクリックします。
アプリケーションドメインのルートURLにあるSuiteCRMのログインページが表示されます。
ログイン後、すぐにユーザーダッシュボードに移動します。
ステップ9:Alibaba Cloud DirectMailを設定する
Alibaba Cloud Consoleで、左上のナビゲーションの「製品」ドロップダウンから「DirectMail」を選択します。
メールドメインの設定
DirectMailの左の水平方向のナビゲーションからEmail Domainsを選択します。
DirectMailのメールドメインを設定します。
メールドメインパネルの右上にある[新規ドメイン]ボタンをクリックします。
ポップアップモーダルでドメインを追加します。DirectMail Emailドメインをプライマリサイトドメインのサブドメインとして設定する必要があります。私は次の形式でサブドメインとして 'directmail'を使用することをお勧めします。
directmail.your-site-domain.com
メールドメインを追加したら、検証する前にDNSレコードを設定する必要があります。設定リンクをクリックすると、必要なDNSレコードが表示されます。
パネルが開き、必要なドメイン設定のDNSレコードが表示されます。これらのレコードをコピーして、ドメイン用のAlibaba Cloud DNSのレコードとして入力する必要があります。
DirectEmail EmailドメインのDNSレコードを設定する
ドメインのAlibaba Cloud DNS設定パネルに戻り、提供されたドメイン設定レコードを入力します。
これらが追加されると、SuiteCRMドメインのDNSレコードは以下のようになります。
<完了したドメインDNSレコード>
DirectMailメールのドメインを確認する
DirectMailパネルのメールドメインリストに戻って、[検証]をクリックすることができます。あなたが確認したい場合は、確認するように要求されますが、続行するようにしてください。
送信者アドレスの設定
電子メールドメインの確認が完了したら、DirectMailの水平方向のナビゲーションで[送信者アドレス]リンクをクリックします。
送信者アドレスの設定
送信者アドレスパネルで、パネルの右上にある送信者アドレスの作成ボタンをクリックして、新しい送信者を追加します。
ポップアップモードでは、いくつかの詳細を追加する必要があります。
電子メールドメインでは、前のステップで作成した電子メールドメインを選択します。
アカウントには、アカウント名を選択します。このアカウント名は、以下の形式で送信者アドレスを作成するために使用されます。
<Account-Name@Email-Domain>
Reply-To-Addressの場合は、アクセスできるアクティブなメールアドレスを入力する必要があります。
このアドレスは、DirectMailから送信されるメールでは使用されませんが、送信者アドレスを確認するために必要です。DirectMailは、このアドレスに検証メールを送信し、この検証メールのリンクをクリックするまで、SMTPパスワードのセットアップを完了することはできません。
メールタイプは、トリガーまたはバッチを選択します。CRM の目的では、私はトリガーを使用しています。
返信先アドレスの確認
ここで、Reply-Toアドレスを確認する必要があります。「Verify the Reply-To address」リンクをクリックします。
次に、ポップアップボックスで確認をクリックして、指定したReply-Toメールアドレスに検証メールを送信します。
受信トレイに検証メールが届きますので、リンクをクリックしてメールアドレスを確認する必要があります。
SMTPパスワードの設定
これで、Reply-Toメールアドレスを確認すると、Reply-Toアドレス(ステータス)欄にメールアドレスの横に成功メッセージが表示されていることがわかります。
これで、Set SMTP passwordのリンクをクリックしてパスワードを設定することができます。あとは安全なパスワードを追加するだけです。
ステップ10. Alibaba Cloud DirectMail SMTPを使用するようにSuiteCRMを設定する
DirectMail SMTPサーバのアドレスとポートをコピーします。
SuiteCRMアプリケーションに戻る前に、Alibaba DirectMail SMTPサーバーアドレスを取得する必要があります。
DirectMail の概要パネルで、赤いリンクをクリックしてドキュメントに移動します。Alibaba DirectMailのドキュメントでは、開発者ガイドのSMTPサービスアドレスのセクションにSMTPサーバーアドレスとポートが記載されています。
SuiteCRM SMTPメール設定を構成する
SuiteCRM ダッシュボードでは、上部ナビゲーションバーの右側にある管理者ドロップダウンセレクターに「管理者設定」が表示されます。
<SuiteCRM ナビゲーションの管理者リンクをクリック>
管理画面で、下にスクロールして[メール設定]をクリックします。送信メール設定パネルでは、以下のように、以前にAlibaba Cloud DirectMailの設定で設定したものを使用する必要があります。
'From’ 名:任意の名前を選択します。
'From’ アドレス:(ステップ9.2.1より)
電子メールプロバイダ:その他
SMTPメールサーバ:DirectMail SMTPサーバ(手順10.1より
SMTP認証:チェック済み
ユーザー名: @
パスワード:DirectMailのSMTPパスワードはこちらから(ステップ9.2.3より
SMTPポート: 465 (ステップ10.1より)
SMTP over SSLまたはTLSを有効にする: SSL
設定が完了したら、[テストメールの送信] ボタンをクリックして、ポップアップモーダルにアクセスできるメールアドレスを入力して、設定が正常に動作しているかどうかをテストしてください。
すべてが適切に設定されていると仮定すると、モーダルウィンドウはメールの送信が正常に行われていることを確認する必要があります。受信トレイにメールが届いているかどうかを確認するように求められます。
受信トレイにアクセスして、メールが送受信されたことを確認してください。
ステップ11. SuiteCRM Cronジョブの設定
最後に行う必要があるのは、SuiteCRM のすべての自動化されたタスクに必要な Cron ジョブを作成することです。
ステップ8のSuiteCRMインストール時に提供されたcronジョブ情報が必要です。
ターミナルで以下のコマンドをサーバーに入力して、www-dataユーザーのためのcronジョブを作成します。
# crontab -e -u www-data
また、crontabを編集するエディタを選択する必要があります。
<crontabの追加>
作成されたcrontabに、提供されたコードを追加します。
* * * * * * * * cd /var/www/your-site-domain.com/htdocs; php -f cron.php > /dev/null 2>&1
<cronjobの追加>
上記のコードをただコピーするのではなく、提供されたコードを使用して、'your-site-domain.com'をあなたのユースケースに合った正しいドメインに置き換えてください。
エディタを保存して終了すると、ターミナルがcrontabのインストールを確認するはずです。
要約
私たちは、最も強力なCRMプラットフォームの一つであるSuiteCRMをインストールしました。最大手に匹敵する機能を備えていますが、完全にオープンソースであり、素晴らしいコミュニティによってサポートされています。
あとは、特定のビジネスとユーザーに合わせてプラットフォームを設定する必要がありますが、そのためには、SuiteCRMのサイトの優れたドキュメントに従ってください。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ