L'histoire du passage du système Web Azure App Service de Windows à Linux

Aperçu

J'exécutais mon propre site Web avec App Service d'Azure, mais pour créer un domaine personnalisé et une liaison SSL, je dois sélectionner un plan de ** environ 7000 yens par mois **, donc je ne peux pas espérer de bénéfices Je pensais que le système était un peu cher, mais j'ai appris que Linux serait un peu moins cher, alors j'ai décidé de changer.

Ci-dessous, la structure du site web self-made

l'extrémité avant Vue.js
Back end .Net Core 3.1(C#)
Base de données SQLServer
CI/CD AzureDevopsPipelines
Certificat SSL Let’s Encrypt
Autres services utilisés BlobStorage、SendGrid

Différence entre "Windows" et "Linux" d'App Service

Je ne sais pas si cela peut être fait pour le moment, mais j'ai décidé de le faire une fois, alors j'ai créé AppService (Linux). Quand j'ai jeté un coup d'œil au contenu, les fonctions suivantes ne peuvent pas être utilisées sous Linux.

L'extension ne peut pas être utilisée. .. .. Cela signifie-t-il que l'introduction de "Let's Encrypt" doit se faire manuellement? .. .. Prémonition de la turbulence. .. .. (S'il s'agit de la version Windows, elle pourrait être facilement appliquée en utilisant l'extension "Azure Let's Encrypt")

Je vais essayer quand même

Depuis que j'ai créé le service pour le moment, j'ai pu déployer la source, définir les informations de configuration et le démarrer sans aucun problème. La méthode de paramétrage du domaine personnalisé est la même que dans Windows, vous pouvez donc la compléter sans aucun problème.

Donc, dernière difficulté, acquisition manuelle du certificat SSL par "Let's Encrypt"

Installez Certbot

Connexion SSH à l'App Service correspondant (possible à partir du portail Azure) et exécutez la commande suivante

$ apt-get update
$ apt-get install certbot

Vous devriez maintenant avoir installé Certbot.

Délivrance du certificat

Utilisez Certbot pour émettre un certificat. Exécutez la commande suivante avec SSH comme avant

certbot certonly -d <domaine> --manual --preferred-challenges dns

La partie "--preferred-challenges dns" est la sélection de la méthode d'authentification.

Cette fois, j'ai décidé de m'authentifier en ajoutant un enregistrement TXT au domaine pour lequel je souhaite obtenir un certificat appelé ** DNS Challenge **. (Il existe d'autres ** Https Challenge ** qui placent un fichier dans un emplacement spécifique et le rendent référencé)

Au fur et à mesure que vous exécutez la commande, une instruction telle que "Créer un enregistrement TXT en utilisant cette valeur dans DNS" apparaîtra en cours de route, suivez donc les instructions. Même si vous créez un enregistrement TXT, il ne sera pas reflété pendant environ 5 minutes, vérifiez donc qu'il est reflété avec la commande suivante avant de continuer.

nslookup -q=TXT [domaine]

Si la chaîne de caractères suivante est affichée, elle réussit.

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/[domaine]/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/[domaine]/privkey.pem
   Your cert will expire on <some-date>. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Créer un certificat privé

Créez un certificat privé à l'aide du certificat intermédiaire obtenu de Let's Encrypt.

$ mkdir /tmp/sandbox -p
$ cd /tmp/sandbox

$ SOURCE=/etc/letsencrypt/live/[domaine]
$ sudo cp $SOURCE/{cert.pem,privkey.pem,chain.pem} .

$ sudo chown ope *.pem

$ openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem

Lorsque vous exécutez la dernière commande ** openssl **, il vous sera demandé de définir un mot de passe, alors entrez-le. Souvenez-vous du mot de passe que vous entrez ici car il sera requis lorsque vous enregistrerez votre certificat avec AppService.

Paramètres pour App Service

Téléchargez le fichier pfx créé et la liaison SSL à partir du domaine personnalisé AppService vers le domaine cible. Ceci termine le travail!

À la fin

Lorsque vous travaillez dans une entreprise, etc., il est pratique d'utiliser ** Application Insight ** ou des outils d'analyse, mais je pensais personnellement que Linux irait bien s'il s'agissait d'un petit site géré par un individu. Que diriez-vous d'exécuter .Net Core sur un serveur Linux? .. .. Je réfléchissais, mais je suis content que cela ait fonctionné normalement. (Cependant, je me sentais un peu plus léger que Windows. Est-ce à cause de mon esprit?)

C'était ** environ 7 000 yens par mois ** pour un serveur Windows, mais ** environ 2000 yens par mois ** pour un serveur Linux ** !! Si tel est le cas, je pense qu'il est normal de démarrer quelques serveurs supplémentaires et de créer un service WEB ces jours-ci.

Recommended Posts

L'histoire du passage du système Web Azure App Service de Windows à Linux
Après tout, l'histoire du retour de Linux à Windows
Déployer à partir d'actions GitHub vers Azure App Service
Histoire de passer de Pipenv à la poésie
L'histoire du passage de WoSign à Let's Encrypt pour un certificat SSL gratuit
Exemple pour mettre l'application Web Python Flask sur Azure App Service (Web App)
L'histoire de la copie de données de S3 vers TeamDrive de Google
[Linux] J'ai essayé de résumer les commandes de confirmation des ressources
Une histoire sur le passage d'un service Web développé personnellement d'un serveur de location à GCP (Google Cloud Platform)
Comment faire fonctionner Linux depuis la console
L'histoire de l'exécution de l'application asp.net core 3.1 sur la version arm64 Amazon Linux 2
L'histoire du changement de pep8 en pycodestyle
[Amazon Linux] Passage de la série Python 2 à la série Python 3
Connexion SSH au serveur cible à partir de Windows en un clic sur un raccourci
Ajouter Windows au menu de démarrage du système d'exploitation Linux
Modifiez le point décimal de la journalisation de, à.
De l'introduction de pyethapp à l'exécution du contrat
Essayez de simuler le mouvement du système solaire
[Note] L'histoire de la configuration du SDK pour Python d'Azure IoT Hub sur Linux
L'histoire du portage du code de C vers Go (et vers la spécification du langage)
L'histoire du lancement d'un serveur Minecraft depuis Discord
Comment connaître le numéro de port du service xinetd
L'histoire de l'arrêt du service de production avec la commande hostname
L'histoire de la création de l'environnement Linux le plus rapide au monde
Ouvrez la version Chrome de LINE à partir de la ligne de commande [Linux]
L'histoire de vouloir acheter une aventure en forme de bague
L'histoire de l'utilisation de Circleci pour construire des roues Manylinux
J'ai essayé de réécrire le serveur WEB de la 1ère édition de programmation Linux normale avec C ++ 14
Une histoire sur le portage du code de "Essayez de comprendre comment fonctionne Linux" sur Rust
L'histoire de sys.path.append ()
[Linux] Copie des données de Linux vers Windows avec un script shell
L'histoire de l'introduction de Jedi (package de complétion automatique de python) dans emacs
L'histoire du champ de modèle Django disparaissant de la classe
Comment calculer la quantité de calcul appris de ABC134-D
Comment accéder à NAPALM depuis le Web (solution réelle NetDevOpsSec)
Un résumé approximatif des différences entre Windows et Linux
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
Comment SSH dans Azure App Service et activer venv
Commandes et fichiers pour vérifier la version de CentOS Linux
L'histoire selon laquelle CSS n'est plus appliqué lorsque l'application Django est téléchargée de local vers AWS