[SUDY-Next Step]第3章開発環境の構築とWebサーバの実践要件

7814 ワード

第3章を開始するには、リモートサーバが必要です.
NaverCloudで1年間無料サーバーを申請できるそうですが、下記の記事を参考にリモートサーバーを申請します.
https://essencedrain.tistory.com/2
リモートサーバにもエントリーし、本格的に実習を開始.

n/a.ターゲット


ローカル開発環境にインストールされているHTTP Webサーバを物理的に分離されたリモート・サーバに配備し、正常に動作しているかどうかをテストします.

1.アカウントの追加とsudo権限の割り当て


AWS EC 2を使用して実習を行う場合は、この手順をスキップできますが、NAVERクラウドのリモートサーバとして実習を行うため、他の操作で個人アカウントを追加する必要があります.

1.1. 個人アカウントの追加


アカウントをadduser[ユーザー名]形式で追加します.
sudo adduser newuser
口座名、パスワードが設定されています.
新しいアカウントに個人情報を入力することができます.入力したくない場合は、Enterキーを押すことができます.

1.2. 追加したアカウントに権限を追加し、sudo権限を実行できます。


sudo権限を使用するには、①勘定科目をsudoグループに追加するか、②/etc/sudoersディレクトリのファイルに勘定科目を追加する必要があります.
本には②番の使い方が提示されています.そこで、②番の方法を行います.
sudoersファイルはrootアカウントに変更する必要があるため、rootアカウントに変換するとsudoersファイルが開きます.
vi/etc/sudoers
「#ユーザー特権仕様の説明」プロジェクトに新しいアカウントを追加します.

次のコマンドを使用して、新しいアカウントにsudo権限があるかどうかを確認します.
sudo date
現在時刻の表示を確認!

2.各口座のUTF-8コードを設定し、ハングル問題を解決する


2.1. システム勘定科目全体にエンコーディングを設定する


Ubuntuが韓国語Localeを設定する方法は3つあります.
  • locale-genの使用
    : sudo locale-gen ko_KR.EUC-KR ko_KR.UTF-8
  • dpkg-reconfigure
    : sudo dpkg-reconfigure locales
  • /etcの下にあるローカライズ設定ファイル
  • を変更
    locale-genでLocleを設定しました.

    2.2. 各勘定科目のエンコーディングの設定


    異なるアカウントのコードを使用したい場合は、対応する順序で行います.
    まず、各勘定科目ディレクトリにあります.bash profileに次の設定を追加します.
    初めて近づいた時.bash profileは存在しないかもしれませんvi.bash profileコマンドを使用してファイルを作成したら、次の設定を追加します.
    LANG="ko_KR.UTF-8"
    LANGUAGE="ko_KR:ko:en_US:en"
    完了後のソースbash profileコマンドを実行して、設定した内容をシステムに反映します.
    envコマンドで反映されているかどうかを確認できます.

    3.JDK、Mavenのインストール


    3.1. ダウンロードJDK


    JDK GitHubに接続し、「.tar.gz」拡張子を持つJAVAソースファイルへのリンクをコピーします.
    (リンクアドレス:https://github.com/frekele/oracle-java/releases/download/8u212-b10/jdk-8u212-linux-x64.tar.gz)

    Terminalでは、次のコマンドを使用してJDKをダウンロードします.
    wget--no check-ceptitute--no-cookies--ヘッダ「Cookie:oraclelicense=accept-securebackup-cookie」[URLをコピー]
    lsコマンドjdk-8 u 212-linux-x 64を使用します.tar.gzファイルがダウンロードされたことを確認します.
    以下のコマンドでダウンロードしたファイルを解凍するだけで、インストールが完了します.
    tar-xvf[ファイル名]
    解凍したJDKファイルを/usr/lib/サブアイテムに移動します.

    3.2. JDK環境変数の設定


    勘定科目ディレクトリの.bash profileファイルに次の文を追加し、JAVA HOME/binディレクトリをPATHに設定します.
    export JAVA HOME=/usr/lib/[解凍ファイル名]
    export PATH=$PATH:$JAVA_HOME/bin
    完了後のソースbash profileコマンドを実行して、設定した内容をシステムに反映します.
    java-versionコマンドでインストールの有無を確認できます.

    3.3. ダウンロードmaven


    Mavenサイトに接続し、「.tar.gz」拡張子を持つmavenファイルのリンクをコピーします.
    (リンクアドレス:https://dlcdn.apache.org/maven/maven-3/3.8.3/binaries/apache-maven-3.8.3-bin.tar.gz)

    Terminalで、次のコマンドを使用してMavenファイルをダウンロードします.
    wget[URLをコピー]
    lsコマンドapache-maven-3.8.3-binを使用します.tar.gzファイルがダウンロードされたことを確認します.
    以下のコマンドでダウンロードしたファイルを解凍するだけで、インストールが完了します.
    tar-xvf[ファイル名]
    解凍されたファイルを/usr/lib/サブアイテムに移動してmavenファイルを管理します.

    3.4. 製造環境変数の設定


    勘定科目ディレクトリの.bash profileファイルに次の文を追加し、maven HOME/binディレクトリをPATHに設定します.
    export JAVA HOME=/usr/lib/[解凍ファイル名]
    export PATH=$PATH:$JAVA_HOME/bin
    完了後のソースbash profileコマンドを実行して、設定した内容をシステムに反映します.
    mvn-versionコマンドでインストールの有無を確認できます.

    4.Gitのインストール、クローン作成、構築


    Gitインストールとリポジトリをクローンします.

    4.1. Gitのダウンロード


    次のコマンドを実行してGitをインストールします.
    sudo apt install git
    git--versionコマンドでインストールの有無を確認できます.
    インストールが完了すると、Gitにプッシュする際に使用する名前とメールアドレスを設定します.
  • git config --global user.name[名前]
  • git config --global user.メール[メールアドレス]
  • 4.2. Gitプロジェクトのダウンロード


    次のコマンドを実行してGitから必要なアイテムをダウンロードします.
    git clone[URLアドレス]

    ダウンロードしたアイテムは/rootの下にあります.
    プロジェクトを管理するために、次の手順を行いました.
    ①1.1に追加された勘定科目ディレクトリにワークスペースディレクトリを作成する
    ②ダウンロードしたアイテムをワークスペースの下に移動
    ③所有者を1.1から追加した勘定科目に変更する
    :chown[ユーザ名]:[ユーザグループ名]-R[ファイル名]

    4.3. 製造バージョン


    Gitからダウンロードしたプロジェクトディレクトリに移動し、mvn clean packageコマンドを実行してプロジェクトを構築します.
    (ビルド完了後、BUILD SUCESを出力します.)

    構築が完了したら、以下のコマンドを実行してJAVAをコンパイルします.
    PORTは1024より大きい数字の中で自分が望む数字として指定される.
    JAva-cp target/classe:target/dependent/*[パッケージ名.主クラス名][PORT]&
    例)java-cpターゲット/クラス:ターゲット/依存/*webserver.WebServer 8080 &
    curl http://127.0.0.1:[PORT]を実行して、Hello Worldメッセージが成功したことを確認します.

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


    ファイアウォールは外部からアクセスできない可能性があります.
    次のブログのufwコマンドを使用してファイアウォールを解除します.
    http://webdir.tistory.com/206
    NAVERクラウドのリモートサーバを使用している場合、ACGはデフォルトのファイアウォール情報を設定しているので、Customを必要としない場合、このプロセスはSkipできます.
    (注意!!外部からの接続が必要なので、サーバの公認IPが必要です.)
    後で使うかもしれないので、ファイアウォールに関する簡単な内容しか記録していません.

    5.1. UFWの有効化


    UFWはデフォルトで無効なので、次のコマンドを使用して有効にします.
    sudo ufw enable
    sudo ufw status verboseコマンドでufwステータスを確認できます.

    5.2. デフォルトのポリシー


    UFWの基本戦略は以下の通り.
  • deny:すべての受信パケットを拒否
  • allow:外に出たパケットに対して、すべての許可
  • ファイアウォールの推奨ポリシーは次のとおりです.
  • sudo ufw enable
  • sudo ufw allow IPアドレスから任意のポート22 proto tcp
  • sudo ufw allow 23/udp
  • sudo ufw allow 80/tcp
  • sudo ufw allow 3306/tcp
  • sudo ufw status
  • 追加した設定を削除する場合は、ufw delete[ルール番号]コマンドを使用します.

    5.3. 外部接続が使用可能であることを確認


    ブラウザにhttp://[認証IP]:[PORT]]と入力し、HelloWorldを確認します.

    6.ソースコードの再配置


    4.2からダウンロードしたプロジェクトソースを変更し、GitHubリポジトリにプッシュします.

    6.1. スクリーン出力文の変更


    ハローワールドはRequestHandlerJavaにロードします.
    HelloWorld文をHelloJava Worldに変更し、Commit/PushをGitに変更します.

    6.2. 実行中のWebサーバをシャットダウン


    ps-ef|grep「文字列」コマンドを使用して、4.3で実行されているWebサーバのプロセスID(PID)を検索します.
    次のコマンドでクエリーを実行するプロセスを終了します.
    kill -9 [PID]

    6.3. Git変更の更新


    6.1での操作によりGitリポジトリが変更されました.以下のコマンドを使用して4.2で受け取った項目を更新してください.
    git pull origin master

    プロジェクトが最新のステータスに更新された場合、4.3プロセスを実行して6.1の変更を検証します.