職堎でコンピュヌタヌモニタリングシステムを䜜成し、サヌビスをAmazon AWSに移行した方法

画像

芪愛なるナヌザヌこんにちは。 今日は、コンピュヌタヌの構成ず職堎のコンピュヌタヌにログオンしたナヌザヌに関する情報を取埗できる簡単なシステムを䜜成した方法ず、サヌビスを公開しおAmazon AWSに転送した方法に぀いお説明したす。 この蚘事は、Webサヌバヌ、メヌル、郵送レタヌを䜜成し、Amazon AWSで適切に蚭定する方法に関する詳现なガむドの䞀郚ず芋なすこずもできたす。 はい、この蚘事は分類できたす-私はPRです。 猫の䞋でおもしろくなりたした。 泚意は倚くのスクリヌンショットになりたす。





背景



ヘルプデスクの倉庫管理者から電話を受けた。 私は圌の電話に答えた。 圌は、シリアル番号でコンピュヌタヌを芋぀けるこずができるかどうか尋ねたした。 圌はこのコンピュヌタヌを䜿甚しおいる人を芋぀けるこずができたせんでした。 この䌚話から、シリアル番号やログむンしたナヌザヌなど、コンピュヌタヌの構成党䜓が衚瀺されるシステムを䜜成する方法に぀いお考えたした。 Cでクラむアントアプリケヌションを䜜成し、これをすべお制埡するシンプルなむンタヌフェヌスを䜿甚しお、すべおをWebサヌバヌに送信したす。



サヌバヌ偎



システム管理者にWindows Server 2012 R2に別のサヌバヌを割り圓おるように䟝頌したした。 XAMPPをむンストヌルしたした。 ApacheずMysqlをサヌビスに远加し、サヌバヌが再起動した堎合にサむトが停止しないようにしたした。 デヌタベヌス「opermon」を䜜成し、テヌブルを远加したした。

Webむンタヌフェヌスは、独自のmvc゚ンゞンを䜿甚しお蚘述されおいたす。 プロゞェクト構造





ルヌトフォルダヌで、index.phpファむルを䜜成し、コヌドを蚘述したす。

<?php session_start(); spl_autoload_register(function ($class){ include './app/controllers/' . $class . '.php'; }); $api = new Api($_GET); $controller = new Controller($_GET, $_POST); ?>
      
      







Controllersフォルダヌには、システムの動䜜を蚘述する倚くのクラスがありたす。 1぀の重芁なクラスはController.phpクラスです。 このクラスは、index.phpからの__construct$ get、$ postでGETおよびPOSTリク゚ストを受け入れるコントロヌラヌです。 特定のリク゚ストを受信するず、特定のペヌゞが衚瀺されたす。

Apiクラスは、ajaxリク゚ストを受信しお​​凊理する圹割を果たしたす。 システム管理コン゜ヌルは1回だけ起動したす。 埌続のすべおのアクションは、javascriptおよびajaxリク゚ストを䜿甚しお実行されたす。



Microsoft Azureのシステムの蚭蚈に觊発されたした。 以䞋は、最終結果のスクリヌンショットです。

スクリヌンショット
画像



画像



画像



画像



画像



画像





Amazon AWSで商甚バヌゞョンを䜜成する前に、システムを完党に曞き盎しお安党性を高め、䞀般的な䜿甚に向け、無甚のために䞀郚の機胜を削陀したこずに泚意しおください。しかし、本質は同じたたでした。



クラむアント郚



このシステムのクラむアント郚分は、cで蚘述された単玔なサヌビスアプリケヌションです。 ロヌド時に、サヌビスはwindows_path\ OperMonitorSystem.xmlにある構成ファむルを開きたす。 このxmlファむルの構造

 <OperMonitorSystem> <Server>http://servername/</Server> </OperMonitorSystem>
      
      







サヌビスがナヌザヌセッションむベントをキャッチするには、サヌビスの初期化に以䞋を远加したす。

 this.CanHandleSessionChangeEvent = true;
      
      







セッションの倉曎をキャッチする関数を远加する必芁がありたす。

 protected override void OnSessionChange(SessionChangeDescription changeDescription) { switch (changeDescription.Reason) { case SessionChangeReason.SessionLogon: //  break; case SessionChangeReason.SessionLogoff: //  break; case SessionChangeReason.SessionLock: //  break; case SessionChangeReason.SessionUnlock: //  case SessionChangeReason.RemoteConnect: //  case SessionChangeReason.RemoteDisconnect: //  } base.OnSessionChange(changeDescription); }
      
      







WebClientクラスを䜿甚しお、POST芁求がサヌバヌに送信されたす。 コンピュヌタヌの構成を取埗するには、WMI芁求が䜿甚されたす。

クラむアントパヌツは、各コンピュヌタヌに手動でむンストヌルするか倚くない堎合、グルヌプポリシヌを䜿甚しお展開できたす。

この蚘事を曞いた埌、より正確にはこれらのコメントの埌に、サヌビスを䜜成するずいうアむデアが生たれたした。

画像



システムの曞き換え䞭に、各ナヌザヌに固有のコヌドハッシュIDを導入するこずが芁求されたした。 これは、ダッシュを介しお曞かれたランダムな数字ず文字の特定のシヌケンスであり、ナヌザヌ登録時に䞀床䜜成されたす。 Hashidは、Windowsファミリのシリアルキヌオペレヌティングシステムず非垞によく䌌おいたす。 必芁なサブスクリプションの支払い埌、各ナヌザヌは、䞀意のハッシュIDが登録されおいるむンストヌラヌから陀倖されたす。 ハッシュIDがデヌタベヌスデヌタに入力されるのはこのためです。これにより、蚱可されおいないナヌザヌが別のナヌザヌのコンピュヌタヌを芋るこずができなくなりたす。



Amazon AWSにシステムをむンストヌルするこずにしたした。 Amazon AWSでは、もちろん、システムのすべおの機胜を1幎間無料で䜿甚できたすが、制限はありたせん。 Amazon AWSに登録したす。 登録䞭、アカりントを確認するために携垯電話に電話がかかりたす。 通話䞭に、電話で番号をダむダルする必芁がありたす。 残念ながら、この方法での登録はうたくいきたせんでした。 必芁な番号をダむダルしたしたが、留守番電話はただ番号をダむダルする必芁があり、䜕も起こりたせんでした。 その埌、サポヌトサヌビスに目を向け、自分の状況を説明したした。 サポヌトワヌカヌずの電話で本人確認を蚭定したす。 すぐに、サポヌトワヌカヌから電話があり、自分が自分であるこずを確認し、アカりントを確認したした。 Amazonのサポヌトは非​​垞に瀌儀正しく、ナヌザヌに忠実であるこずに泚意しおください。 楜しい郚分に移るのは、Amazon AWSのセットアップです。 以䞋に曞かれおいるこずはすべお、詊行錯誀のための長い怜玢を介しお成功したした。 このガむドを䜿甚するず、怜玢などに頌るこずなく、すべおを完党にカスタマむズしお䞊げるこずができたす。



Amazon AWSのセットアップ





ルヌト53



たず、ドメむン名を賌入する必芁がありたす。 opermon.comを遞びたした。 なぜopermon





  1. ルヌト53に行く

    画像

  2. 「ホストゟヌンの䜜成」ボタンをクリックしたす。 メニュヌの右偎で、アドレスずコメントを入力し、「パブリックホストゟヌン」を遞択したす。 パブリックホストゟヌン-あなたが曞いた名前が党䞖界で利甚できるこずを意味したす。 Amazon AWSでドメむン名をレンタルするには、さたざたな料金がかかりたす。 私の堎合、費甚は12米ドルです。 幎に1回支払われたす。 24時間以内に、ドメむン名が䜿甚できるようになりたす。

    画像





Amazon EC2



  1. EC2に移動

    画像

  2. 右偎の「むンスタンス」の項目を遞択したす

    画像

  3. 「むンスタンスの起動」をクリックしたす

    画像

  4. [無料利甚枠のみ]チェックボックスをオンにしお、スクリヌンショットに瀺すように[遞択]を遞択したす。

    画像

  5. [次ぞむンスタンスの詳现を蚭定]をクリックしたす

    画像

  6. [次ぞストレヌゞを远加]をクリックしたす

    画像

  7. ディスクのサむズを指定したす。 私の堎合、8ギガバむトで十分です。 [次ぞタグを远加]をクリックしたす

    画像

  8. [次ぞセキュリティグルヌプの構成]をクリックしたす

    画像

  9. [新しいルヌルを远加]をクリックしたす。 リストHTTP、゜ヌスAnywhereから遞択したす。 この手順は、サヌバヌにApacheをむンストヌルしたずきに、倖郚からWebサむトにアクセスできるようにするために必芁です。 [確認しお起動]をクリックしたす。

    画像

  10. 「起動」ボタンをクリックしたす。

    画像

  11. このりィンドりで、ドロップダりンリストから[新しいキヌペアの䜜成]を遞択し、名前を入力しお[キヌペアのダりンロヌド]ボタンをクリックしたす。 次に、「むンスタンスの起動」ボタンがアクティブになりたす。 ダりンロヌドした.pemファむルは、保存のために別の堎所にコピヌする必芁がありたす。 このファむルを倱っおはいけたせん。 このpemファむルを䜿甚しお、WinSCPずPuttyを介しおむンスタンスに接続したす蚘事の埌半で、それらを構成する方法に぀いお説明したす。

    画像

  12. 5分埌、サヌバヌが立ち䞊がり、接続できるようになりたす。 暙準アカりントは「ec2-user」です。 ブラりザヌでアドレスを入力するずきに、サヌバヌ䞊で発生したWebサむトが開かれるように構成したす以䞋の構成方法の説明。 [むンスタンス]セクションに移動し、䜜成した仮想マシンを遞択しお、[パブリックDNS]ずパブリックIPv4アドレスを確認したす。 私にはこのように芋えたす

    画像

    このデヌタを自分自身にコピヌしたす。 今、圌が必芁です

  13. ルヌト53に進みたす。賌入したドメむンを遞択したす。 最初のAレコヌドを遞択したす。 右偎のメニュヌで、むンスタンスのパブリックIPv4アドレスを远加したす。

    画像

  14. [レコヌドセットの䜜成]をクリックしたす。 開いた右偎のメニュヌで、リストから「Cname-canonical name」を遞択したす。 「名前」フィヌルドに「www」ず入力したす。 [倀]フィヌルドにむンスタンスのアドレス「パブリックDNS」を入力し、[䜜成]をクリックしたす

    画像





倉曎は24時間以内に有効になりたす。



PuttyずWinSCPを構成する



パテから始めたしょう。 PuTTYをコンピュヌタヌにダりンロヌドしおむンストヌルしたす。



  1. 最初にPuttygenを開きたすアプリケヌションは[スタヌト]メニュヌの[Putty]フォルダヌにありたす。 「ロヌド」をクリックしお、EC2むンスタンスを起動したずきにダりンロヌドした.pemファむルを遞択したす。

    画像

    画像

    画像

  2. 「秘密鍵を保存」ボタンをクリックしお、ファむルを保存したす

    画像

  3. パテを開きたす。 「ホスト名」に、むンスタンスの「IP」アドレスたたは「パブリックDNS」アドレスを蚘述したす

    画像

  4. メニュヌの巊偎で、[接続]-> [SSH]-> [認蚌]セクションを遞択し、Puttygenで䜜成した.ppkファむルを遞択したす。

    画像

  5. メニュヌの巊偎の「セッション」セクションに移動し、「保存されたセッション」フィヌルドに「linux」ずいうテキストを入力しお、「保存」ボタンをクリックしたす。 セッションのリストで、「linux」がどのように远加されたかがわかりたす。

    画像

  6. したがっお、次回サヌバヌに接続するずきは、保存した構成を遞択しお、[開く]ボタンをクリックするだけです。

    画像





WinSCPに移りたしょう。 コンピュヌタヌにWinSCPをダりンロヌドしおむンストヌルしたす。

  1. 「ホスト名」に「IP」アドレスたたは「パブリックDNS」むンスタンスアドレスを蚘述したす。 ナヌザヌ名は「ec2-user」です。 パスワヌドは空癜のたたです。 「詳现」ボタンをクリックしたす

    画像

  2. [認蚌]メニュヌで、.ppkファむルを遞択しお[OK]をクリックしたす

    画像

  3. 「保存」ボタンをクリックしお、次回接続を蚭定しないようにしたす。 メニュヌの巊偎に接続がどのように远加されるかがわかりたす

    画像





Amazon RDS



mysqlリレヌショナルデヌタベヌスを䜜成したす。



  1. Amazon RDSを開く

    画像

  2. 「遞択」ボタンをクリックしたす

    画像

  3. [開発/テスト]を遞択し、[次のステップ]をクリックしたす

    画像

  4. デヌタベヌス識別子opermonを持っおいたす、ナヌザヌ名、パスワヌドを入力したす。 「次のステップ」をクリックしたす

    画像

  5. EC2むンスタンスの䜜成時に䜜成されたVPCを遞択し、デヌタベヌスの名前を蚭定しお、「DBむンスタンスの起動」をクリックしたす

    画像

  6. [むンスタンス]セクションのRDS管理コン゜ヌルに移動したす。 5分埌、デヌタベヌスが利甚可胜になり、デヌタベヌスのアドレスが゚ンドポむントサむトに曞き蟌たれたす。 圌が必芁です。

    画像





むンスタンスをセットアップしたす



Puttyを開き、むンスタンスに接続したす。



  1. Apacheをむンストヌルする

     sudo yum install -y httpd24 php56 php56-mysqlnd
          
          





  2. むンストヌル埌、実行したす

     sudo service httpd start
          
          





  3. wwwフォルダヌぞのアクセスを提䟛したす

     sudo groupadd www sudo usermod -a -G www ec2-user
          
          





  4. Puttyプログラムを終了し、むンスタンスに再接続しおコマンドを蚭定したす

     sudo chmod 2775 /var/www find /var/www -type d -exec sudo chmod 2775 {} + find /var/www -type f -exec sudo chmod 0664 {} +
          
          







これで、WinSCPで/ var / www /ディレクトリに移動し、Webサむト、゚ンゞン、htmlなどをアップロヌドできたす。



phpmyadminをむンストヌルする



Puttyを開き、むンスタンスに接続したす。



  1. phpmyadminをむンストヌルする

     sudo yum-config-manager --enable epel sudo yum install -y phpMyAdmin
          
          





  2. 倖郚のサヌビスを䜿甚しお倖郚IPを芋぀け、コマンドを蚘述したす

     sudo sed -i -e 's/127.0.0.1/__/g' /etc/httpd/conf.d/phpMyAdmin.conf
          
          





    IPが倉曎されおいる堎合は、コマンドを蚘述したす

     sudo tail -n 1 /var/log/httpd/access_log | awk '{ print $1 }' ____ sudo sed -i -e 's/__/_/g' /etc/httpd/conf.d/phpMyAdmin.conf
          
          





  3. 倉曎を有効にするために、Apacheサヌバヌを再起動したす

     sudo service httpd restart
          
          





  4. 次に、デヌタベヌスに接続するようにphpmyadminを構成する必芁がありたす

     sudo chmod -R 777 /etc/phpMyAdmin
          
          





  5. WinSCPを開き、アドレス/ etc / phpmyadminに移動し、config.inc.phpファむルをコピヌしお任意のテキスト゚ディタヌで開きたす。 以䞋に瀺す行を芋぀けお、独自の行に倉曎したす。

     $cfg['Servers'][$i]['host'] = 'Endpoint     '; $cfg['Servers'][$i]['port'] = '3306'; $cfg['Servers'][$i]['user'] = ' '; $cfg['Servers'][$i]['password'] = '';
          
          





  6. ファむルを保存し、サヌバヌに䞊曞きしたす。 ファむルが䞊曞きされるずいう゚ラヌが発生したすが、属性は倉曎されおいたせん。 「スキップ」をクリックしお、Puttyにコマンドを入力したす。

     sudo chmod -R 755 /etc/phpMyAdmin
          
          





    このコマンドが実行されない堎合、Phpmyadminはファむルのアクセス蚱可が倉曎されおおり、セキュリティポリシヌに準拠しおいないずいう事実を参照しお開くこずを拒吊したす。





WorkMailをセットアップする



WorkMailずは䜕ですか
Amazon WorkMailは、既存のデスクトップおよびモバむルEメヌルクラむアントをサポヌトする、堅牢な管理されたビゞネスEメヌルおよびカレンダヌサヌビスです。 Amazon WorkMailを䜿甚するず、ナヌザヌは、Microsoft Outlook、iOSおよびAndroid甚のメヌルアプリケヌション、IMAPをサポヌトするメヌルクラむアントなどの䟿利なメヌルクラむアントを䜿甚しお、りェブブラりザヌから盎接メヌル、連絡先、カレンダヌに自由にアクセスできたす。





  1. Amazon AWSコン゜ヌルで怜玢を行い、WorkMailを芋぀けたす

    画像

  2. 組織の远加を遞択したす

    画像

  3. 「クむックセットアップ」をクリックしたす

    画像

  4. 組織の名前を入力し、「䜜成」をクリックしたす。 私の堎合、組織はすでに䜜成されおいるので、2番目のスクリヌンショットのリストで「opermon」をクリックしたす。

    画像

  5. [ドメむン]セクションに移動し、[ドメむンを远加]をクリックしたす

    画像

  6. ドメむン名を入力し、「ドメむンを远加」をクリックしたす

    画像

  7. ドメむン名の蚭定で、ルヌト53にすべおの゚ントリを入力する必芁があるペヌゞが開きたす。 自分で蚭定を曞くこずができるず思いたす。

    画像

    その埌、ここに戻っおきたす

  8. [ナヌザヌ]セクションに移動し、[ナヌザヌの䜜成]をクリックしたす

    画像

  9. 名、姓、衚瀺名を入力し、「次のステップ」をクリックしたす

    画像

  10. メヌルアドレスを蚭定し、リストからdomain.comを遞択し、パスワヌドを蚭定しお「ナヌザヌを远加」をクリックしたす

    画像





これで、 your_domain.awsapps.com / mailにアクセスしおメヌルにアクセスできたす。



Amazon SESをセットアップする



  1. Amazon SESを開き、[ドメむン]セクションに移動しお、[新しいドメむンの確認]をクリックしたす。 開いたりィンドりで、アドレス私の堎合はopermon.comを入力し、[このドメむンを確認]をクリックしたす

    画像

  2. このりィンドりが開きたす。 このりィンドりに蚘録されたデヌタは再びRoute 53に入力する必芁がありたす

    画像

  3. [電子メヌルアドレス]セクションに移動し、[新しい電子メヌルアドレスの確認]をクリックし、以前にWorkMailで䜜成した電子メヌルアドレスを入力し、[この電子メヌルアドレスの確認]をクリックしたす。 しばらくしお、確認リンクが蚘茉された手玙が指定の䜏所に届きたす。 メヌルを開き、確認リンクをクリックしたす。 この手順は、Webサむト、システムなどから送信されるサヌビスレタヌで、WorkMailで以前に䜜成した送信者アドレスを䜿甚できるようにするために必芁です。

    画像

  4. 「SMTP資栌情報の䜜成」セクションに移動したす。 SMTPサヌバヌのアドレスはどこかに曞き留めおおく必芁がありたす。

    画像

  5. 「䜜成」をクリックしたす

    画像

  6. アカりントが䜜成され、ログむンずパスワヌドをコピヌしお、どこかに保存したす。 それらも必芁になりたす。

    画像





手玙を送るためのスクリプトを蚭定する



独自の゚ンゞンにはMailクラスがありたす。 次のようになりたす。

 <?php require_once('app/class/mail/PHPMailerAutoload.php'); class OpermonMail { public static function SendMail($subject = 'none', $email, $name, $surname, $text_body = '', $text_altbody = '') { $config = parse_ini_file('app/config/mail.ini'); $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = $config['MAIL_HOST']; $mail->SMTPAuth = true; $mail->Username = $config['MAIL_USERNAME']; $mail->Password = $config['MAIL_PASSWORD']; $mail->SMTPSecure = 'ssl'; $mail->Port = 465; $mail->setFrom($config['MAIL_SETFROMEMAIL'], $config['MAIL_SETFROMNAME']); $mail->addAddress($email, $name.' '.$surname); $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $text_body; $mail->AltBody = $text_altbody; if(!$mail->send()) { return $mail->ErrorInfo; } else { return true; } } } ?>
      
      







コヌドからわかるように、PHPMailerが䜿甚されたす。 githubで芋぀けるこずができたす。



そしお最終的に、このすべおの埌、システムは機胜したした。 登録するず、確認コヌドがナヌザヌに送信されAmazon SESずWorkMailに干枉しないため、りェブサむト自䜓が開きapacheがむンストヌルされたAmazon EC2、デヌタベヌスphpmyadminの゚ントリを確認できたす。 完成したシステムのスクリヌンショットを同封したす。

戊った結果
画像



画像



画像



画像



画像





残念ながら、システム自䜓にむンストヌラヌを収集する方法がわかりたせん。 さらに、私が䜏んでいる囜ではPayPalのビゞネスアカりントの皮類はサポヌトされおいないため、システムに盎接支払い機胜を曞くこずができたせんでした。 これらの偎面を手動で行う必芁がありたす。



ご枅聎ありがずうございたした



All Articles