ダヌトサヌビス玹介、バック゚ンドむンフラストラクチャ

目次
1.

2. Backend

2.1. .

2.2. . SSL.

2.3. Dart.




3. Web

3.1. «Under construction»




4. Mobile






前曞き



Flutter開発者ずしお、知人はよく私に「ダヌト蚀語ずは䜕ですか」ず尋ねたす。圌らは次の蚀葉で銖を暪に振る。「しかし、ペティアはゞャワで真剣なトランスポヌトを曞いおいる。そしおダンデックスでは、䞀般的に、セヌルにはプラスがある...」。たあ、おそらく、実際には、ダヌトはJavaから「工堎を䜜成するための工堎」の慣行からはほど遠いです。ただし、タスクのストリヌムに溺れお異なるタヌゲットOSの開発者を同期するこずなく、タスクが耇数のプラットフォヌムのクラむアントアプリケヌションを䞀床に実装するこずである堎合。認識可胜であるがAndroid、iOS、およびWebに固有の、䞀貫性のあるUIを䜜成し、䞀般に適切な予算ず時間枠を満たすために、Flutterには競合他瀟がありたせん。そしお、あなたが...スタヌトアップを持っおいるなら、これらの質問は二重に重芁です。



だから、䌝説スタヌトアップは新しいサヌビスを䜜成するこずを決めたした...たあ、䟋えば、
ショッピングリストの共有
, , ToDo , :)

サヌビスナヌザヌ間。スタヌトアップの目暙は、3぀のプラットフォヌムで3か月以内にMVPをリリヌスするこずですさらに、4番目はもちろんサヌバヌです。



10幎前、このケヌスには解決策がなく、それを避けようずしたした。3幎前、ReactNative / React / NodeJsスタックが解決策になる可胜性があり、2020幎にはこのためのダヌトがありたす。サヌビスのアルファ版の開発の雰囲気ぞようこそ。私は芖芚的に芋お、開発プロセス党䜓を説明しようず思いたす。すべおのアプリケヌションのコヌドが公開されたす。スケッチやホリバヌなどのコメントを歓迎したす。「本質的に」著者に尋ねるか、私たちの郚門のテレグラムチャネルでアドバむスを埗るこずができたす。







バック゚ンドむンフラストラクチャ



もちろん、サヌバヌアプリケヌションをホストする䞀般的な方法は、VPS仮想プラむベヌトサヌバヌです。実際、これはデヌタセンタヌ内の物理サヌバヌの䞀郚であり、そのリ゜ヌスプロセッサコアずRAMは仮想化テクノロゞを䜿甚しお分離されおいたす最も䞀般的なハヌドりェア仮想化テクノロゞに぀いおは、XEN、KVMで読むこずができたす。重芁゜フトりェア仮想化テクノロゞヌOpenVZ、Virtuozzoは、Dockerずの競合や積極的な過剰販売のため、私たちのタスクに適しおいない可胜性がありたす倚くの堎合、このようなVPSのリヌス契玄を泚意深く読むず、プロバむダヌはレンタルしたプロセッサヌコアの「少なくずも5」の䜿甚率を保蚌しおいるこずがわかりたす。これは、プロバむダヌがプロセッサヌコアを20回販売するこずを蚈画しおいるこずを意味したす。



それでは、次の特性を備えた䜎䟡栌のVPSを入手したしょう1プロセッサコア、1GBのRAM、10GBのストレヌゞ私の堎合、これはハむブリッドHDDです。オペレヌティングシステムずしおUbuntu、できればLTSバヌゞョンの1぀を遞択したしょう。その埌、SSHアクセスVPSのオペレヌティングシステムコン゜ヌルぞの暗号化されたアクセスのログむンずパスワヌドがSSH圢匏で蚘茉されたサヌバヌアクティベヌションに関するメッセヌゞが電子メヌルで受信されたす



。IPアドレス91.230.60.120

ナヌザヌroot

パスワヌド<パスワヌド>



コマンドラむンに入力しお接続を確認したしょう。



ssh root@91.230.60.120


そしお、リク゚ストに応じお



password: <>


結果は、仮想サヌバヌに関する情報の出力ず䞋郚の入力フィヌルドになりたす。



サヌバヌはxxxxxxxxxxによっお



ホストされたすホスト名91.230.60.120

カヌネル3.19.0-22-genericUbuntu xx.xx LTS

皌働時間090706最倧3日間、 17

17、1ナヌザヌ、負荷平均0.00、0.01、0.05 CPUIntel®Xeon®CPU0@ 2.00GHz1コア

メモリ合蚈989 MB / 723 MB空き



ルヌト@ 91.230.60.120〜$



おめでずうございたす仮想サヌバヌが䜜成され、䜜業に䜿甚できるようになりたす。



次に、バック゚ンド構造を定矩したしょう。HTTPサヌバヌが必芁です。NGINXを䜿甚したす。そのタスクは次のようになりたす。



  1. 静的ファむルWebアプリケヌションファむルを提䟛したす。
  2. モバむルアプリケヌションのドメむン所有暩を蚌明するファむル、SSL蚌明曞を取埗するための所有者に関する情報などのサヌビスリ゜ヌスの配垃暗号化したしょう。
  3. サヌバヌアプリケヌションにアクセスするためのリバヌスプロキシ。
  4. 接続の暗号化-https。


2぀のサヌバヌアプリケヌション



  1. ナヌザヌ登録および承認アプリケヌション。それをauth_appず呌びたしょう。
  2. デヌタを䜿甚したアプリケヌション。それをアプリず呌びたしょう。
  3. 項目2のアプリケヌションごずに、個別のPostgreSQLデヌタベヌスが必芁です。
  4. SSL暗号化蚌明曞を自動的に取埗および曎新するためのアプリケヌション次の蚘事。


明らかに、このようなアプリケヌションの「動物園」は互いに分離し、倖郚からもブロックする必芁がありたす。このために、Dockerコンテナ化テクノロゞずDockercomposeコンテナマネヌゞャを䜿甚したす。図の圢匏では、これは次のように衚すこずができたす。



画像



開発はMicrosoftのVisual Studio Code IDEで実行されたす。これにより、利甚可胜な倚くのプラグむンのおかげで、必芁なすべおのテクノロゞを䜿甚できるようになりたす。たた、次の拡匵機胜をむンストヌルする必芁がありたす。



  • Docker
  • リモヌトSSH
  • YAML


VScodeを再起動したら、VPSに接続したしょう。F1を抌しお、コマンドの入力を開始したす。



Remote-SSH: connect to  Host



次に、新しい接続



+ Add New Ssh Host


その埌



ssh root@<ip- >


VScodeタヌミナルりィンドりメニュヌ/タヌミナル/新しいタヌミナルを開き、次のコマンドでシステムリ゜ヌスを確認したす。



top


完了し、コン゜ヌルずVPSファむルシステムぞのアクセスが取埗











されたす。topナヌティリティが頻繁に䜿甚されるため、疑䌌htopバヌゞョンをむンストヌルしたしょう。



Ctrl-C #   top


apt-get update #  


apt-get install htop # htop 


htop # 


画像



次に、DockerずDockercomposeをむンストヌルする必芁がありたす。



Ctrl-C #   htop


dockerは公匏のUbuntuリポゞトリにないため、远加のリポゞトリをむンストヌルしたす



apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common #   


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - #   docker 


add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" #  


apt-get install docker-ce docker-ce-cli containerd.io #


curl -L "https://github.com/docker/compose/releases/download/1.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose #  Docker compose 


chmod +x /usr/local/bin/docker-compose #     « »


ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose #       


 docker  --version #


docker-compose --version


これで、サヌバヌはサヌビスをテスト展開する準備ができたした。



それでは、ロヌカル開発PCにDockerデスクトップをむンストヌルしたしょう。Windows 10のむンストヌラヌ、macOSのバヌゞョンはこちら。 Dockerがむンストヌルされるだけでなく、Dockerツヌルボックスもむンストヌルされたす。Dockerツヌルボックスには、コンテナを操䜜するためのDocker䜜成ナヌティリティずグラフィカルナヌティリティが含たれおいたす。



新しいVScodeりィンドり、メニュヌ/ファむル/フォルダを開く...を開きたす...プロゞェクト甚の新しいフォルダSrvなどを䜜成しお開きたす。このフォルダヌに、docker-compose.yamlファむルを䜜成したす。



画像



このファむルには、サヌビスコンテナヌ、それらの䟝存関係、倉数、コマンド、ネットワヌク、ストレヌゞなどを開始するためのスクリプトが蚘述されおいたす。



ここで、むメヌゞずDockerコンテナの違いを停止しお明確にする必芁がありたす。コンテナは、アプリケヌション+その䟝存関係パッケヌゞやラむブラリなど+ Dockerを通垞のアプリケヌションずしお実行できるオペレヌティングシステムです。たた、画像は起動甚に準備され、アヌカむブにパックされたコンテナです。したがっお、バック゚ンド党䜓は、起動甚のスクリプトの説明を含むコンテナのセットになりたす。



私たちが蚈画した最初のコンテナは、NGINXHTTPサヌバヌです。そしお、必芁な画像を甚意したしょう...かどうか事実、非垞に倚くのWebアプリケヌションずそのランタむム環境では、開発者たたはコミュニティはすでに必芁なむメヌゞを収集し、それらをパブリックDockerHubレゞストリに配眮しおいたす。もちろん、そのような広く䜿甚されおいるむメヌゞはすでに組み立おられおおり、これに぀いお私たちを埅っおいたすリンク。



リストに泚意しおください-これらは異なるバヌゞョンであり、NGINX自䜓のバヌゞョンず远加のツヌルたずえば、PERLによっおむンストヌルされるの䞡方で異なりたす。開発には「latest」タグむメヌゞリク゚スト時の最新の安定バヌゞョンを䜿甚できたすが、サヌバヌぞのデプロむにはもちろん特定のバヌゞョンを䜿甚する必芁がありたす。珟圚、これはnginxむメヌゞです1.19.0。



以䞋、ファむルリスト自䜓のコメントでdocker-compose.yamlの内容に必芁な説明を瀺したす。ファむル







に倉曎を保存し、VScodeコン゜ヌルを開いお、スクリプト起動コマンドを実行したす。



docker-compose up


このコマンドは、スクリプトを実行するだけでなく、コンテナコン゜ヌルの出力をホストコン゜ヌルに送信したした。ここで、ブラりザのアドレスバヌのポヌト8081でロヌカルホストにアクセスするず、暙準のNGINX応答が返され







たす。最初のコンテナはすでに実行されおいたす。通垞、スクリプトは次のコマンドで実行されたす。



docker-compose up -d


これにより、コンテナをサヌビスモヌドでコン゜ヌルに出力せずに開始できたす。スクリプトコンテナの停止は、次のコマンドで実行されたす。



docker-compose down


httpリク゚ストをテストするために、VScodeには䟿利なRESTクラむアント拡匵機胜がありたす。



それをむンストヌルしお、サヌビスの最初のデバッグテストを曞いおみたしょう。これを行うには、test / http_dev /フォルダヌにclient.httpファむルを䜜成したす。 したがっお、サヌバヌの応答に関する詳现情報を衚瀺しお、テスト芁求を実行できたす。 それでは、コンテナの内郚を芋おみたしょう。コン゜ヌルでスクリプトの実行を停止したす。



















Ctrl-C


フラグを付けお実行したす。



docker-compose up -d


次に、珟圚実行䞭のコンテナプロセスのリストをリク゚ストしたしょう。



docker-compose ps






実行可胜ファむルのリストには、コンテナヌが1぀だけありたす。それを開いおみたしょう



docker exec -it srv_web_1 bash


このコマンドは、srv_web_1コンテナ内のbashアプリケヌションLinuxコマンドシェルを実行execし、コン゜ヌルが閉じないようにしたす-itフラグ







コマンドlsは、暙準のLinuxフォルダヌ構造







を衚瀺したす/etc/nginx/conf.d/default.confファむルに関心がありたす- NGINX蚭定では、catナヌティリティを䜿甚しお衚瀺できたす



cat /etc/nginx/conf.d/default.conf






NGINX蚭定には、ポヌト80でリッスンし、コンテナフォルダヌ/ usr / share / nginx / htmlから静的ファむルを提䟛するこずが有効になっおいる1぀のブロックいわゆる堎所がありたす。 NGINX構成ファむルに倉曎を加えお再起動し、倉曎を適甚するこずはできたすが、スクリプトを再起動するず、コンテナヌはむメヌゞから埩元され、倉曎は保存されたせん。これは間違った方法です。 コンテナコン゜ヌルを終了したしょう。







Ctrl-D


構成ファむルを䜜成しお静的ファむルを配眮し、起動時にそれらをNGINXコンテナヌにマりントしたす。プロゞェクトの/conf.dフォルダヌにdefault.confファむルを 䜜成したす。静的ファむル/public/index.htmlのスタブを䜜成したす。 ここで、docker -compose.yaml起動スクリプトで、フォルダヌをコンテナヌファむルシステムにマりントし たす。プロゞェクトフォルダヌの内容に泚意しおください。 /conf.dは、/ etc / nginx / conf.d /内のコンテナヌの内容を眮き換え、。/ publicフォルダヌはコンテナヌフォルダヌのルヌトフォルダヌにマりントされたす。 スクリプトを再開したしょう



































docker-compose restart


テストリク゚ストdefault.conf







ファむルを芋おみたしょう。静的ファむルaccess_logoffぞのアクセスのログを無効にしおいるこずに泚意しおください。これは売れ行きの良い゜リュヌションですが、テストず開発には非垞に䞍䟿です。テストNGINX構成ファむル/conf.dev.d/default.confずdocker -compose.dev.yamlスクリプトを䜜成したしょう。 スクリプトを停止したしょう



















docker-compose down


そしお、ファむル名フラグを䜿甚しお実行したす。



docker-compose -f docker-compose.yaml -f docker-compose.dev.yaml up


この方法でスクリプトを実行するず、最初にdocker-compose.yamlファむルから蚭定が読み取られ、次にdocker-compose.dev.yamlポヌト、ボリュヌムから䞀臎するフィヌルドが远加たたは眮換されたす。リク゚ストを繰り返しおログを確認したしょう。











぀たり、サヌバヌ䞊でコピヌしお実行する必芁がありたす。サヌバヌ䞊に/ opt / srv_0 /フォルダヌを䜜成しVPSぞのSSH接続でVScodeりィンドりをただ閉じおいたせん、次のコマンドを䜿甚しおプロゞェクトのすべおのコンテンツをコピヌしたす。



scp scp -r ./* root@91.230.60.120:/opt/srv_0/ 






次に、サヌバヌのプロゞェクトフォルダヌ/ opt / srv_0 /で次のコマンドを実行したす。



docker-compose up -d


今床はVPS甚に別のhttpテストを曞いおみたしょう







たたはブラりザでリンクを開きたす。



->゜ヌスコヌドgithub



結論の代わりに



それで、最初の䞀歩が螏み出されたした。アプリケヌションを本番サヌバヌに正垞にロヌルアりトしたした。2番目の蚘事では、サヌバヌの構成を続行したす。ドメむン名を割り圓お、SSL暗号化蚌明曞をむンストヌルしたす。3番目の蚘事では、サヌビスの開始たでのカりントダりンを含むフラッタヌWebアプリケヌションを䜜成し、ビルドしおサヌバヌに配眮したす。4番目の蚘事では、Dart蚀語でネむティブLinuxサヌバヌを䜜成および構築したす。これは、サヌビスの承認アプリケヌションずデヌタの基瀎になりたす。



コメントや提案は倧歓迎です。Telegramチャンネルで䜜者ずチャットできたす。



All Articles