Nuxt完全な静的サイトをDigitalseaで配備する方法
アルバシルヴェンテ💃🏼
こんにちは、今週、我々はプロジェクトのためのprod構成についてあなたに話したいです.✨まだ多くのことがあり、改善するが、私は私たちの完全な静的サイトを展開する方法については、このガイドであなたを残したかった💜 dawntraoz.com/blog/how-to-de…
午後20時40分
開始前
まだDigitalOceanを知らないあなたのそれらのために、それは複数のコンピュータで同時に実行するアプリケーションを展開して、スケールするのを助ける開発者雲サービスを提供します.
あなたは、私がポストを通してWord液滴に言及するのを見ます.Digitaloceanでは、dropletsは、仮想化されたハードウェアの上で動く柔軟なLinuxベースの仮想機械(VMS)です.それで、あなたがつくる各々の水滴は、あなたが使うことができる新しいサーバーです.
提供される液滴計画の異なる種類があります、しかし、我々は我々のホスティングニーズに関して多くの自由と柔軟性を提供する標準的な液滴を使うつもりです.しかし、最初に、私はあなたがother droplets plansを見て、あなたのプロジェクトに最適なものを参照してくださいすることをお勧めします.
If you don't have an account yet, you can register here: https://cloud.digitalocean.com/registrations/new!
ステップ1 -あなたの液滴を作成します
今、私たちは、液滴が何であるかを知っています🎉
を作成します.
この場合、私たちの好きなフレームワークnuxtjsを展開するつもりであるので、我々はnodejsイメージを必要とします.市場に移動し、入力入力でnodejsを入力し、利用可能な最新バージョンを選択します.
プロジェクトのスケーラビリティとそれに必要な容量を考慮しなければなりません.
In our case, for IS ! MY BUG, we have decided to try a standard droplet ($10/month it might be enough).
このセクションでは、最高のパフォーマンスを持っているあなたのウェブサイトを望む地域を選択するのが最適です.
We recommend to use SSH keys, for security purposes
新しいSSHキーを作成するときには、モーダルの内部のチュートリアルに従って、TextArea内で生成された公開キー(IDHERE RSA . PUB)を追加する必要があります.
完了したら、すべてのオプションを完了したら、名前を与え、作成ボタンを押します.
さて、我々の滴は準備ができて!💜
ステップ2 -独自のドメインを追加
既に購入したドメインがある場合は、DigitalOceanにそれを追加しましょう.そうでなければ、1つを最初に購入する必要があります.
トップバーメニューのドメイン/DNSを作成するには、ドメインタブを選択してネットワーキングページを開きます.
次に、「ドメインを入力」にドメインを入力し、「ドメインを追加」ボタンをクリックします.
ドメインを追加したら、そのDNSレコードを表示して変更するには、その名前をクリックします.
デフォルトで3 nsタイプのレコードが表示されます.あなたの液滴にこのドメインを加えるために、あなたは2つのA - Type記録を必要とします
ホスト名としてWWWを持つ
If you have any problems related to the DNS management I recommend you to take a look at How to Create, Edit, and Delete DNS Records.
ステップ3 -あなたの液滴に接続ssh
SSHによってあなたの液滴に接続するには、端末を開く必要があります.使用するオペレーティングシステムによって異なりますが、一般的には以下のようになります:
Linux :検索端末またはCtrl + Alt + Tキーを押してください.
検索端末.
bashの検索結果.Windowsでbashを持っていない場合は、gitをインストールすることができます.
ssh root@DROPLET_IP_ADDRESS
When you finished creating your droplet an IP address would be generated, that's the one you have to use after the @.
複数のsshキーを持つ場合、- iフラグを使用して秘密鍵のパスを指定する必要があります.
ssh -i /path/key username@DROPLET_IP_ADDRESS
すべてがうまく行っていて、ガイドが推奨するようにパスフレーズを作成したら、今では以下のように追加します.Enter passphrase for key '/c/Users/USER/.ssh/key':
今、我々は我々の液滴に接続している🙌, 私たちはroot@DROPLET_NAME万事うまくいったら.さもなければ、あなたはDigitalseaチームからこれ以上detailed guideに相談することができます.ステップ4 -私たちのnuxtjsプロジェクトを実行するnginxを設定します
良いニュースは、我々の液滴NGinxではすでにインストールされている、我々はちょうどそれが生成されるときに我々の静的サイトを実行するサーバーを構成する必要があります.それがどのように働くかについて見ましょう!
/var/www/にあるフォルダを私たちのドメインと同じ名前で追加します.
cd /var/www/
mkdir domain.io
ドメインフォルダの内部には、HTMLと呼ばれる別のものが必要になります. cd /var/www/domain.io
mkdir html
NGinxをドメインに設定するには、ドメインとして指定されたファイルに利用可能なデフォルトのサイトをコピーしましょう.
cd /etc/nginx/sites-available/
cp default domain.io
sudo nano domain.io
コピーしたファイルを開くと、次のようになります. server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name hellonode;
location ^~ /assets/ {
gzip_static on;
expires 12h;
add_header Cache-Control public;
}
location / {
...
proxy_pass http://localhost:3000;
}
}
次のコンテンツを変更、追加、削除する必要があります. error_page 404 /200.html;
さあ、 server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/domain.io/html/dist;
index index.html index.htm index.nginx-debian.html;
server_name domain.io www.domain.io;
error_page 404 /200.html;
location / {
}
}
このファイルはサイトでも有効になっており、デフォルトは削除されます. // Create a symbolic link to have the same content in both
sudo ln -sf /etc/nginx/sites-available/domain.io /etc/nginx/sites-enabled/domain.io
rm /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
最後に、すでに変更されているのを見るには、nginxを再起動する必要があります. sudo nginx -t // Test configuration
sudo nginx -s reload
我々はまだそこに任意のプロジェクトを持っていないので、我々は404エラーが表示されます、我々はほとんどそこにある.次のステップでプロジェクトを設定しましょう!ドメイン名.io ステップ5 - Gitを使用して自動化を展開する
Gitコマンドを使用して我々のコードを液滴にアップロードして、このようにプロセスを自動化するために、我々はGithookを作成することができます(あるいは、 を使うことができます).
この場合、Githookを設定するプロジェクトをアップロードする方法を示します.
我々の静的サイトのファイルを含むフォルダで.git - repoを初期化する必要があります.
cd /var/www/domain.io/html
git init
さて、ドメインに戻ってください.フォルダを作成します.
cd ..
mkdir repobare
取り替えに行って、裸のrepoを開始してください: cd repobare
git init --bare
我々のコミットを傍受し、我々のドメインにファイルをプッシュするgithookを作成する必要があります.IOフォルダ. sudo nano hooks/post-receive
以下のコンテンツを投稿します. #!/bin/bash
git --work-tree=/var/www/domain.io/html --git-dir=/var/www/domain.io/repobare checkout -f
cd /var/www/domain.io/html
npm install
npm run generate
それからPOSTファイルを保存し、実行する許可を与えます. sudo chmod +x hooks/post-receive
我々の起源を無傷に保つために、我々は選ばれた名前と交換して、我々が欲しい名前で新しい起源をつくるつもりです.
ローカルリポジトリに行き、次のコマンドを実行します.
git remote add <deploy_origin> root@<DROPLET_IP_ADDRESS>:/var/www/domain.io/repobare
git add .
git commit -m "First commit"
git push <deploy_origin> master
When you run git push it will ask you for the SSH passphrase, fill in and press Enter.
今、すべてのあなたのドメインです.フォルダを作成する👏 あなたの結果を最も好きなブラウザでチェックしてください🎉
ギタブアクション 付録-パフォーマンス向上
SSL認証
最初のステップは、SSL証明書を取得します.それをするために、我々はLetの暗号化を として使います.そのために、我々はCrotbotソフトウェアを我々の液滴にインストールします.
Certbotをインストールしてください.
sudo apt install certbot python3-certbot-nginx
Certbot今すぐ使用する準備ができており、我々はすでにNginxの設定をそれの準備ができている.したがって、両方のドメインに対して同じ証明書を得るために以下のコマンドを実行する必要があります.
sudo certbot --nginx -d www.domain.io -d domain.io
これがあなたの最初の「certbot」を使用するならば、あなたのドメイン(すなわちDigitalOcean recommend us in this post)に関連している電子メールアドレスを入力して、サービスの条件に同意してください.すべてがうまくいくなら、' certbot 'はhttps設定の設定を選択するよう頼みます.
Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
今、証明書はダウンロード、インストール、およびロードされ、あなたのウェブサイトをチェックすることができます“https ://”を使用します.It includes a renewal process, if you want to test it go to Verifying Certbot Auto-Renewal.
[email protected] 2 .キャッシュポリシー
キャッシュコントロールを構成し、ドメイン内のヘッダを期限切れにしましょう.私たちはNGinxのサイトを利用可能なフォルダの前に作成した.
sudo nano /etc/nginx/sites-available/domain.io
2つの新しいセクションを追加しますサーバーブロックの前の
# Expires map
map $sent_http_content_type $expires {
default off;
text/html epoch;
text/css max;
application/javascript max;
~image/ max;
}
server {
...
expires $expires;
root /var/www/domain.io/html/dist;
...
新しい設定を有効にするにはnginxを再起動します.sudo nginx -s reload
そして、次のコマンドを実行して、新しい設定が動作しているか確認してください.curl -I https://domain.io/index.html
If you want more information about it, go to How to Implement Browser Caching.
エンコードを受け入れる
サーバーのGZIP設定を変更するにはnginxを編集します.設定ファイル:
sudo nano /etc/nginx/nginx.conf
gzip設定セクションを見つけ、変更します....
##
# `gzip` Settings
#
#
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
...
それだ!新しい設定を有効にするには、再度nginxを再読み込みします.sudo nginx -s reload
次のコマンドを実行して、新しい設定が動作していることを確認します.curl -H "Accept-Encoding: gzip" -I https://domain.io/index.html
If you want more information about it, go to How To Add the gzip Module to Nginx.
結果
我々のプロジェクト にこの構成を加えたあと、結果はちょうど信じられないです😍 我々はショックを受けている!
IS!MYBUG
私はあなたがそれを読んで楽しい時間を過ごすことを願って、それはあなたがあなたのNuxtフル静的サイトのDigitalOceanを使用することを決定するときに可能性があります疑いを解決します.
ここに来てくれてありがとう、いつものように、フィードバックは非常に歓迎です!💜🎉
Reference
この問題について(Nuxt完全な静的サイトをDigitalseaで配備する方法), 我々は、より多くの情報をここで見つけました https://dev.to/dawntraoz/how-to-deploy-a-nuxt-full-static-site-in-digitalocean-4l73テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol