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のデフォルトポートは 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
は、クライアントからの要求を対応する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
は、[ロードバランシング](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 start ls
を使用して、pm2によって管理されているプロジェクトを表示します。 pm2 stopname
対応するプロジェクトの実行を停止します。 pm2 startname
は対応するプロジェクトを実行します。 pm2 logsname
プロジェクトの実行ログを表示します。PM2
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のインストール方法は、公式Webサイトにアクセスできます。詳細なドキュメントの説明があります:Redhat / centOS ** [4] **に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