centOS7を使用してフロントエンドプロジェクトを展開する

サーバーを購入する##

Tencent Cloudを例にとると、25歳未満の場合は、学生の認定を回避し、キャンパス割引パッケージを使用できます。購入先住所:クラウド+キャンパス** [1] **

キャンパス割引パッケージ

この記事ではcentOSを例として取り上げます。購入後、 rootパスワードが初期化され、クラウドサーバーを使用できるようになります。

サーバーを構成します##

購入後、TencentCloudから提供された rootユーザー名と初期パスワードを使用してクラウドサービスにログインできます。公式ウェブサイトのオンライン端末コマンドラインプログラムを使用して操作するか、 Xshellまたは gitを使用してサーバーにログインし、最初にダウンロードする必要があります。この記事では、例として「git」を取り上げます。

次のコマンドを入力してログインします。

ssh root@IPアドレス

次に、パスワードを入力してクラウドサービスにログインします。デフォルトの rootパスワードは非常に複雑です。次のコマンドを使用して、 rootスーパー管理者パスワードを変更できます。

passwd root

新しいユーザーを作成する###

クラウドサーバーにログインした後、仕事用のユーザーを作成できます。次のコマンドを使用します。

adduser work

次に、 workユーザーのログインパスワードを設定します。

passwd work

workの権限を設定し、 viを使用して構成ファイルを開きます。

vi /etc/sudoers

キーボードの iキーを押して、権限を追加します。

work ALL=(ALL) ALL

Escを押し、次に Shift + と入力して wq!と入力し、保存して終了します。

新しいユーザーが正常にセットアップされたかどうかを確認してから、ターミナルを開き、このユーザーでサーバーにログインします。

ssh work@IPアドレス

作成した workユーザーのパスワードを入力してください。OK!ログインに成功しました。 rootユーザーを直接使用する代わりに、このユーザーを使用して将来的にクラウドサーバーを管理できます。

sshのデフォルトポートを変更する###

sshのデフォルトポートは 22で、誰もが知っています。セキュリティが心配な場合は、デフォルトポートを変更して、他の人がサーバーsshプログラムのポート番号を知らないようにすることができます。

まず、 viを使用してssh構成ファイルを変更する必要があります。

sudo vi /etc/ssh/sshd_config

Port 59999または他のポートに変更します。保存後、次のコマンドを使用してsshサービスを再起動します。

sudo systemctl restart sshd

次に、ポート59999を開くようにファイアウォールを構成します。

sudo firewall-cmd --zone=public--add-port=59999/tcp --permanent

ファイアウォールを再起動します。

sudo firewall-cmd --reload

新しく購入したサーバーの場合、デフォルトでファイアウォールが有効になっていない可能性があります。次のコマンドを使用して、最初にファイアウォールサービスを有効にできます。

sudo systemctl start firewalld

スーパーユーザーログインを無効にする###

rootユーザーの権限は非常に大きく、サーバーのスーパーユーザーが rootと呼ばれることは誰もが知っています。rootユーザーが sshを使用してリモートエンドにログインすることを禁止できます。引き続き / etc / ssh / sshd_configファイルを開き、次の構成項目を有効または設定します。

PermitRootLogin no  #ルートユーザーはログインできません
AllowUsers work

パスワードなしのログイン###

サーバーにログインするたびにパスワードを入力する必要がありますが、これはもっと面倒なことです。設定することで、パスワードなしでログインできます。まず、クライアントに gitプログラムをダウンロードする必要があります。

ローカルコンピュータの C:\ User \ adminディレクトリにある .sshフォルダを確認し、 gitbashプログラムを開いて以下を確認します。

ls -a ~/.ssh

そのようなディレクトリがない場合は、次のコマンドを使用して生成できます。

ssh-keygen -t rsa -b 4096-C "電子メールアドレス"

次に、Enterキーを押して生成します。生成後、2つのファイルが .sshに生成されます。これらは、 RSA非対称暗号化アルゴリズムによって生成された公開鍵と秘密鍵です。次に、次の2つのコマンドを入力して、sshプロキシを開始します。

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

ローカルコンピュータが設定されたら、クラウドサーバーにログインして、ローカルコンピュータと同じ操作を実行します。CentOSはgitをインストールする必要はなく、 ssh-keygenコマンドを実行することもできます。

サーバーが公開鍵と秘密鍵を生成した後、 .sshファイルに新しいファイルを作成します。

vi authorized_key

ローカルコンピュータの .sshディレクトリにある id_rsa.pub公開キーを authorized_keyファイルにコピーします。次に、次のコマンドを使用して、ファイルのアクセス許可を変更します。

chmod 600 authorized_key

最後に、 / etc / ssh / sshd_configファイルを開き、次の構成項目を設定します。

PermitEmptyPasswords no
PasswordAuthentication no

sshサービスを再起動します。

sudo systemctl restart sshd

構成後にサーバーに障害が発生した場合、たとえば、ログインできません。心配しないでください。TencentCloudのインスタンスコンソールに移動し、[ログイン]をクリックして、「VNC」を使用してサーバーにログインできます。サーバーは「root」を使用できます。 `ユーザーはサーバーにログインし、以前の変更を元に戻します。

VNC

プロジェクトの展開###

展開する前に、必要なソフトウェアをダウンロードする必要があります。まず、ソフトウェアパッケージを更新します。

yum -y upgrade

いくつかのソフトウェアをダウンロードします。

yum install git nginx openssl curl wget

nvmをダウンロードしてください。これは Nodeのバージョン管理ツールであり、複数の Nodeバージョンを切り替えることができます。 curlまたは wgetを使用して nvmをインストールできます。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

または:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

ダウンロードが完了したら、ターミナルを開き、クラウドサーバーにログインし、新しく開いたターミナルで nvm -vと入力して、nvmのインストールが成功したことを確認します。

次のコマンドでノードをダウンロードします。

nvm install 8.6.0

ノードバージョンを切り替えます:

nvm use v10.22.0

特定のバージョンをシステムのデフォルトバージョンとして設定します。

nvm alias default v10.22.0

Nodeをダウンロードした後、 npmもダウンロードされます。 npmを使用して cnpmをダウンロードし、モジュールのダウンロード速度を上げることができます。

npm install -g cnpm --registry=https://registry.npm.taobao.org

プログラムをサーバーにアップロードします###

ローカルプログラムをクラウドサーバーにアップロードするには、 scpコマンドを使用するか、 githubまたは code cloudを使用するか、 gitlabを使用してプライベートウェアハウスを構築します。この記事では、CodeCloudを例として取り上げます。githubを使用してプログラムのソースコードをダウンロードすると、速度が低下します。

まず、Code Cloudでプロジェクトのプライベートウェアハウスを作成し、 gitを介してプロジェクトをCodeCloudにアップロードします。アップロードする前に、 id_rsa.pubのローカル公開キーをCodeCloudに追加することを忘れないでください。同様に、サーバーで生成された公開鍵をコードクラウドにコピーします。

ポート####を開きます

外部がアクセスできるように、ポート80と443を開くようにファイアウォールを構成します。

sudo firewall-cmd --zone=public--add-port=80/tcp --permanent
sudo firewall-cmd --zone=public--add-port=443/tcp --permanent

ファイアウォールを再起動します。

sudo firewall-cmd --reload

開いているポートを削除する場合は、次のコマンドを使用できます。

sudo firewall-cmd --zone=public--remove-port=80/tcp --permanent

起動を自動的に設定します。

sudo systemctl enable firewalld

開いているすべてのポートを表示します。

sudo firewall-cmd --list-all

- - パーマネント はパーマネント効果を意味し、このパラメーターなしで再起動すると無効になります。

ポートを開いた後、コードクラウドでウェアハウスコードをプルします。

gitクローンウェアハウスアドレス

次に、npmモジュールをダウンロードします。

npm install

ダウンロードが遅い場合があります。yarnまたは cnpmを使用してダウンロードできます。

ダウンロードが完了したら、 nodeコマンドを使用してプログラムを実行できます。

node server.js

このとき、ブラウザを開き、サーバーのIPアドレスとノードサーバーのポート番号を入力すると、ページが読み込まれていないことがわかります。 。これは、ファイアウォールがポートを開かず、ポートを許可するようにファイアウォールを構成する必要があるためです。 URLをもう一度入力すると、アクセス可能であることがわかります。

ドメイン名を使用##

ドメイン名を購入した後は、その国では使用できません。使用する場合は、ファイルする必要があります。ファイリングは今でも非常に高速です。TencentCloudでドメイン名を購入しました。3日目に、Tencentカスタマーサービスから問題が発生したとの連絡があり、ファイリング情報を変更するよう提案されました。再度送信した後、管理局にファイリング情報を送信します。 、通知を受け取り、1日後に提出を通過しました。登録されたドメイン名で、通常通り使用できます。

購入してファイリングした後、Tencent Cloudコンソールに移動し、[ドメイン名の解決](https://cloud.tencent.com/product/cns?from=10680)リストに移動し、クリックしてレコードを追加できます。

レコードを追加

Webプロジェクトの場合、最も基本的なことは、購入したドメイン名を複数のサブドメインに分割できるAレコードを追加することです。次に例を示します。

記録

レコード値には、サーバーのIPアドレスを入力する必要があります。ドメイン名が example.cnの場合、上記のAレコードの対応するURLは次のとおりです。

Nginxを使用する##

Nginxは、クライアントからの要求を対応するWebサーバーに転送できる、高性能のHTTPおよびリバースプロキシWebサーバーです。

Nginx

サーバーには複数のWebサーバーが展開されている場合があります。それらには独自のポートがありますが、ブラウザーでアクセスする場合のデフォルトのポートは80です。現時点では、 Nginxでポート80を保持できます。クライアントがサーバーにアクセスする場合、 Nginxはリクエストを認識し、対応するポートプログラムにリクエストを転送します。

たとえば、サーバーに2つのプロジェクトをデプロイする場合、 / etc / nginx / conf.d /ディレクトリに2つの新しいファイルを作成できます。

/ etc / nginx / nginx.confで次の構成アイテムを開きます。

include /etc/nginx/conf.d/*.conf;

Nginxは、/ conf.dディレクトリにあるすべての構成ファイルをロードします。各サイトは、構成のために個別に分割されます。

基本的な構成は次のとおりです。

# blog-3001.conf
upstream blog {
 server 127.0.0.1:3001;}

server {
 listen 80;
 server_名前IPアドレスまたはドメイン名;

 location /{
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forward_For $proxy_add_x_forwarded_for;

  proxy_set_header Host $http_host;
  proxy_set_header X-Nginx-Proxy true;

  # パス名はアップストリーム名と一致している必要があります
  proxy_pass http://blog;
  proxy_redirect off;}}
# other-3002.conf
upstream other {
 server 127.0.0.1:3001;}

server {
 listen 80;
 server_名前IPアドレスまたはドメイン名;

 location /{
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forward_For $proxy_add_x_forwarded_for;

  proxy_set_header Host $http_host;
  proxy_set_header X-Nginx-Proxy true;

  proxy_pass http://other;
  proxy_redirect off;}}

構成が完了したら、次のコマンドを使用して、nginx構成アイテムが正しく構成されているかどうかを確認します。

sudo nginx -t

「ok」と「successful」の単語が出力されれば、設定は成功です。次に、次のコマンドを使用してnginxを再起動します。

sudo nginx -s reload

次のコマンドを使用して、nginxサービスの実行ステータスを確認できます。

sudo systemctl status nginx

次の2つのコマンドを使用して、nginxサービスをオンまたはオフにします。

sudo systemctl stop nginx

suto systemctl start nginx

再起動後、ブラウザを開き、IPアドレスのみを入力すると、ページに正常にアクセスできることがわかります。使用されているNginxのバージョンを他の人に見られたくない場合は(ブラウザのネットワークパネルのhttpリクエストメッセージで)、 / etc / nginx / nginx.conf構成ファイルを開いて、構成アイテムを書き込むことができます。

server_tokens off

PM2を使用してプロジェクトをデプロイします##

プログラムはサーバーにデプロイされていますが、将来プログラムが更新された場合は、オンラインに戻ったときにサーバーにアクセスし、新しいウェアハウスコードをプルダウンしてプログラムを再実行し、「ノード」のみを使用してプログラムを実行する必要があります。例外が発生した場合、プログラムは可能性があります。電話を切ります。

PM2を使用すると、リモートプログラムをローカルで更新できます。pm2は、[ロードバランシング](https://cloud.tencent.com/product/clb?from=10680)機能を備えたノードアプリケーションのプロセスマネージャーでもあります。独立したコードを使用してすべてのサーバー上のすべてのCPUを使用し、プロセスが常に稼働していることを確認する場合。

使用する場合は、最初にダウンロードする必要があります。

npm install -g pm2

同じローカルコンピュータにも pm2をインストールする必要があります。インストール後、構成する必要があります。

まず、ローカルプロジェクトのルートディレクトリで次のコマンドを実行して、pm2構成ファイルを生成します。

pm2 ecosystem init

ecosystem.config.js構成ファイルがプロジェクトのルートディレクトリに生成されます。次の構成を記述します。

module.exports ={
 apps:[{
 name:'my-project',//pm2操作のエントリファイル
 script:'./server/index.js',
 env:{
  NODE_ENV:'development'},
 env_production:{
  NODE_ENV:'production'},}],

 deploy :{
 production :{
  user :'ming',//サーバー管理者名
  host :'サーバのIPアドレス',
  port:'59999',//sshサービスポート番号
  ref  :'origin/master',
  repo :'gitウェアハウスアドレス',
  path :'/www/blog/production',//引っ張ったアイテムを置く場所//展開前にコマンドを実行して、リモートホストの最新コンテンツをローカルにプルします'pre-deploy':'git fetch --all',//展開後に実行し、最初にnpmモジュールをダウンロードしてから、typescriptをコンパイルします//フロントエンドプロジェクトをパッケージ化し、最後にPM2を使用してバックエンドサービスを展開します'post-deploy':'npm install --registry=https://registry.npm.taobao.org && tsc -p ts_server_config.json && npm run build && pm2 reload ecosystem.config.js --env production',}}};

構成ファイルが書き込まれた後、git pushはコードを送信し、次のコマンドを使用してデプロイメントを初期化します。

pm2 deploy production setup

コマンドの productionは、構成ファイルの deploy.productionを参照します。このコマンドは、プロジェクトが初めてデプロイされたときに実行されます。各(今回を含む)後、デプロイを完了するには、次のコマンドを実行するだけで済みます。

pm2 deploy production

rootユーザーでない場合、ディレクトリまたはファイルを作成する権限がないため、最初のコマンドの実行時にエラーが発生する可能性があることに注意してください。

サーバーに移動し、ルートディレクトリを作成します。

sudo mkdir /www

sudo cd /www

sudo mkdir blog     #ブログプロジェクトが配置されているディレクトリ
sudo mkdir demo     #デモプロジェクトが配置されているディレクトリ

通常の管理者の権限を昇格させて、パスワードを入力せずに sudoコマンドを使用せずに blogおよび demoのディレクトリ内のファイルを操作できるようにします。

sudo chmod 777-R blog

sudo chmod 777-R demo

送信が再度実行されると成功するはずであり、2番目のコマンドを実行するとエラーが報告される場合があります。エラーメッセージは次のとおりです。

bash: pm2: command not found

 post-deploy hook failed

deploy failed

これは、pm2がサーバー上で非対話型のssh接続方式を使用しているためです。 whereis pm2コマンドを使用してpm2のインストール場所を見つけ、次のコマンドを使用してPM2のソフト接続をハングさせます。

sudo ln -spm2インストールパス

コマンドの実行後、「pm2deploy」コマンドをローカルで実行するだけで自動的にデプロイできます。サーバーは自動的にコマンドを実行してプロジェクトを更新します。

PM2で一般的に使用されるコマンド:

PM2

[SSL証明書](https://cloud.tencent.com/product/symantecssl?from=10680)を申請する##

Tencent Cloudでは、無料のSSL証明書を申請できます。コンソールに移動し、[** SSL証明書**]をクリックしてから、[適用]をクリックして無料の証明書を申請します。

無料のSSL証明書

このとき、証明書申請フォームのページが表示されます。最初の項目** Common Name **には、バインドするドメイン名( www.example.cnやその他の第2レベルのドメイン名など)を入力する必要があります。

次に、ドメイン名認証に進みます。自動DNS検証は非常に簡単です。ワンクリックで申請できます。手動で検証すると、解決リストが生成されます。「ドメイン名解決リスト」に移動して、入力した共通名と一致する共通名を見つける必要があります。記録し、証明書の解決リストのホストレコードをドメイン名解決リストのホストレコードに置き換え、証明書の解決リストのレコード値をドメイン名解決リストのレコード値に置き換え、レコードタイプを TXTに変更します。 、より具体的な操作については、Tencent Cloudの公式ドキュメント:ドメイン名(DV)の無料証明書申請プロセス** [2] **を参照してください。

証明書の申請が完了したら、証明書リストに移動して証明書をダウンロードします。解凍後、複数のサーバータイプの証明書があることがわかります。この記事ではNginxサーバーを使用します。scpコマンドを使用して、Nginxフォルダー内の証明書ファイルをクラウドサーバーにアップロードできます。

scp -P 59999./www.xxxx.cn/Nginx/2_www.xxxx.cn.key work@IPアドレス:/home/work

scp -P 59999./www.xxxx.cn/Nginx/1_www.xxxx.cn_bundle.crt ming@IPアドレス:/home/work

59999 サーバーのsshサービスポート番号を表します。アップロード後、証明書を/ wwwディレクトリに移動します。

sudo mkdir ssl

sudo /home/work/1_www.xxxx.cn_bundle.crt ssl/
sudo /home/work/2_www.xxxx.cn.key ssl/

sudo mv ssh /www/

次に、Nginxを構成します。

upstream www {
 server 127.0.0.1:3000;}
server {
 listen 80;
 server_name xxxx.cn;return301 https://xxxx.cn$request_uri;}
server {
 # SSLアクセスポート番号は443です
 listen 443 ssl;
 # バインディング証明書のドメイン名を入力します
 server_name xxxx.cn;
 # 証明書ファイル名
 ssl_certificate /www/ssl/1_xxxx.cn_bundle.crt;
 # 秘密鍵ファイル名
 ssl_certificate_key /www/ssl/2_xxxx.cn.key;
 ssl_session_timeout 5m;
 # 次のプロトコルに従って構成してください
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 # 次のパッケージ構成に従って暗号化スイートを構成してください。書き込み方法はopenssl標準に従います。
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
 ssl_prefer_server_ciphers on;if($ssl_protocol =""){
  rewrite ^(.*) https://$host$1 permanent;}

 location /{
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forward_For $proxy_add_x_forwarded_for;

  proxy_set_header Host $http_host;
  proxy_set_header X-Nginx-Proxy true;

  proxy_pass http://www;
  proxy_redirect off;}}

構成後、Nginxサービスを再起動し、ブラウザーを開いてドメイン名を入力すると、httpsがオンラインであることがわかります。

sudo nginx -s reload

より多くのサーバーにSSL証明書をインストールする方法については、TencentCloudの公式ドキュメントであるサーバー証明書のインストール** [3] **を参照してください。

mongoDBデータベースを使用する##

mongoDBのインストール方法は、公式Webサイトにアクセスできます。詳細なドキュメントの説明があります:Redhat / centOS ** [4] **にmongoDBをインストールします。

mongoDBデータベースをインポートする###

通常、ローカルで生成されたデータの一部をサーバーにアップロードする必要があります。次のコマンドを使用してデータをエクスポートできます。これらのデータは、ファイルのサフィックスとして .bson .jsonを使用します。

mongodump -h 127.0.0.1:27017-dデータベース名-oエクスポートされたディレクトリ名

エクスポート後、tarコマンドを使用してディレクトリを圧縮できます。コマンドは次のとおりです。

tarzcvf圧縮ファイル名エクスポートディレクトリ

次に、 scpコマンドを使用して、圧縮されたパッケージをサーバーにアップロードできます。アップロード後、次のコマンドを使用してファイルを解凍します。

tarxvf圧縮パッケージ

解凍後、データベースのディレクトリに入り、データファイルをデータベースに保存します。

mongorestore -dデータが保存されているディレクトリパスにインポートされるデータベースの名前

データファイルはmongoDBデータベースに保存されます。

参照###

[1]

クラウド+キャンパス:https://cloud.tencent.com/act/campus

[2]

ドメイン名(DV)の無料証明書申請プロセス:https://cloud.tencent.com/document/product/400/6814

[3]

サーバー証明書のインストール:https://cloud.tencent.com/document/product/400/35244

[4]

Redhat / centOSにmongoDBをインストールします:https://docs.mongodb.com/v4.2/tutorial/install-mongodb-on-red-hat/

Recommended Posts

centOS7を使用してフロントエンドプロジェクトを展開する
Centos7.6はdjango + nginx + uwsgiをデプロイします
CentOS7はOpenLDAP + FreeRadiusを展開します
Kickstart + PXEはCentOS6.6を自動的に展開します
CentOS7でGitBookを展開する
CentOS6.8はzookeeperクラスターを展開します
CentOS7はsaltstackサービスを展開します
CentOSの下にJDK + Tomcat8をデプロイします
centos7にvuepressをデプロイする
Centos6.8はvncサービスを展開します
Jenkinをcentos7にデプロイします
CentOS7デプロイvsftp(FTP)サービス
CentOS7.2はNode.js開発環境を展開します
CentOS 7.2デプロイメールサーバー(Postfix)
CentOS7.7はk8をデプロイします(1マスター+ 2ノード)
Centos8はDockerを使用して、Djangoプロジェクトの詳細なチュートリアルを展開します
CentOS7.7はk8をデプロイします(3マスター+3ノード+1クライアント)
CentOS7.7はk8s + Prometheus(1マスター+ 2ノード)を展開します
CentosでTomcatを展開して最適化する
CentOS7.2はWebサイトアクセスログアナライザーを展開します-Piwik