Oktatóanyag: LEMP-verem telepítése Azure Linux rendszerű virtuális gépre
A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek
Ez a cikk bemutatja, hogyan helyezhet üzembe NGINX-webkiszolgálót, rugalmas Azure MySQL-kiszolgálót és PHP-t (a LEMP-vermet) egy Ubuntu Linux rendszerű virtuális gépen az Azure-ban. Ha szeretné működés közben megtekinteni a LEMP-kiszolgálót, telepíthet és konfigurálhat egy WordPress-webhelyet. Ezen oktatóanyag segítségével megtanulhatja a következőket:
- Ubuntu rendszerű virtuális gép létrehozása
- Nyissa meg a 80-at és a 443-at webes forgalomhoz
- NGINX, rugalmas Azure MySQL-kiszolgáló és PHP telepítése és védelme
- A telepítés és a konfigurálás ellenőrzése
- A WordPress telepítése Ez a beállítás gyors tesztekhez vagy koncepcióigazoláshoz használható. A LEMP-veremről, beleértve az éles környezetre vonatkozó javaslatokat is, tekintse meg az Ubuntu dokumentációját.
Ez az oktatóanyag az Azure Cloud Shell parancssori felületét használja, amely folyamatosan frissül a legújabb verzióra. A Cloud Shell megnyitásához válassza a Kipróbálás lehetőséget bármely kódblokk tetején.
Ha a parancssori felület helyi telepítését és használatát választja, ehhez az oktatóanyaghoz az Azure CLI 2.0.30-s vagy újabb verzióját kell futtatnia. Keresse meg a verziót a az --version
parancs futtatásával. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.
Változó deklarációja
Először meg kell határoznunk néhány változót, amelyek segítenek a LEMP számítási feladat konfigurálásában.
export NETWORK_PREFIX="$(($RANDOM % 254 + 1))"
export RANDOM_ID="$(openssl rand -hex 3)"
export MY_RESOURCE_GROUP_NAME="myLEMPResourceGroup$RANDOM_ID"
export REGION="westeurope"
export MY_VM_NAME="myVM$RANDOM_ID"
export MY_VM_USERNAME="azureadmin"
export MY_VM_SIZE='Standard_DS2_v2'
export MY_VM_IMAGE='Canonical:0001-com-ubuntu-minimal-jammy:minimal-22_04-lts-gen2:latest'
export MY_PUBLIC_IP_NAME="myPublicIP$RANDOM_ID"
export MY_DNS_LABEL="mydnslabel$RANDOM_ID"
export MY_NSG_NAME="myNSG$RANDOM_ID"
export MY_NSG_SSH_RULE="Allow-Access$RANDOM_ID"
export MY_VM_NIC_NAME="myVMNic$RANDOM_ID"
export MY_VNET_NAME="myVNet$RANDOM_ID"
export MY_VNET_PREFIX="10.$NETWORK_PREFIX.0.0/22"
export MY_SN_NAME="mySN$RANDOM_ID"
export MY_SN_PREFIX="10.$NETWORK_PREFIX.0.0/24"
export MY_MYSQL_DB_NAME="mydb$RANDOM_ID"
export MY_MYSQL_ADMIN_USERNAME="dbadmin$RANDOM_ID"
export MY_MYSQL_ADMIN_PW="$(openssl rand -base64 32)"
export MY_MYSQL_SN_NAME="myMySQLSN$RANDOM_ID"
export MY_WP_ADMIN_PW="$(openssl rand -base64 32)"
export MY_WP_ADMIN_USER="wpcliadmin"
export MY_AZURE_USER=$(az account show --query user.name --output tsv)
export FQDN="${MY_DNS_LABEL}.${REGION}.cloudapp.azure.com"
Erőforráscsoport létrehozása
Hozzon létre egy erőforráscsoportot az az group create paranccsal. Az Azure-erőforráscsoport olyan logikai tároló, amelybe a rendszer üzembe helyezi és kezeli az Azure-erőforrásokat.
A következő példában létrehozunk egy eastus
nevű erőforráscsoportot a $MY_RESOURCE_GROUP_NAME
helyen.
az group create \
--name $MY_RESOURCE_GROUP_NAME \
--location $REGION -o JSON
Eredmények:
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx",
"location": "eastus",
"managedBy": null,
"name": "myLEMPResourceGroupxxxxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
LEMP-hálózatkezelés beállítása
Azure-beli virtuális hálózat létrehozása
A virtuális hálózat az Azure-beli magánhálózatok alapvető építőeleme. Az Azure Virtual Network lehetővé teszi, hogy az Azure-erőforrások, például a virtuális gépek biztonságosan kommunikáljanak egymással és az internettel.
Az az network vnet create használatával hozzon létre egy, az $MY_RESOURCE_GROUP_NAME
erőforráscsoportban elnevezett alhálózattal elnevezett $MY_VNET_NAME
$MY_SN_NAME
virtuális hálózatot.
az network vnet create \
--name $MY_VNET_NAME \
--resource-group $MY_RESOURCE_GROUP_NAME \
--location $REGION \
--address-prefix $MY_VNET_PREFIX \
--subnet-name $MY_SN_NAME \
--subnet-prefixes $MY_SN_PREFIX -o JSON
Eredmények:
{
"newVNet": {
"addressSpace": {
"addressPrefixes": [
"10.19.0.0/22"
]
},
"enableDdosProtection": false,
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Network/virtualNetworks/myVNetxxxxxx",
"location": "eastus",
"name": "myVNetxxxxxx",
"provisioningState": "Succeeded",
"resourceGroup": "myLEMPResourceGroupxxxxxx",
"subnets": [
{
"addressPrefix": "10.19.0.0/24",
"delegations": [],
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Network/virtualNetworks/myVNetxxxxxx/subnets/mySNxxxxxx",
"name": "mySNxxxxxx",
"privateEndpointNetworkPolicies": "Disabled",
"privateLinkServiceNetworkPolicies": "Enabled",
"provisioningState": "Succeeded",
"resourceGroup": "myLEMPResourceGroupxxxxxx",
"type": "Microsoft.Network/virtualNetworks/subnets"
}
],
"type": "Microsoft.Network/virtualNetworks",
"virtualNetworkPeerings": []
}
}
Nyilvános Azure-IP-cím létrehozása
Az az network public-ip create használatával hozzon létre egy standard zónaredundáns nyilvános IPv4-címet a következőben$MY_RESOURCE_GROUP_NAME
: MY_PUBLIC_IP_NAME
.
Feljegyzés
A zónák alábbi beállításai csak a rendelkezésre állási zónákkal rendelkező régiókban érvényesek.
az network public-ip create \
--name $MY_PUBLIC_IP_NAME \
--location $REGION \
--resource-group $MY_RESOURCE_GROUP_NAME \
--dns-name $MY_DNS_LABEL \
--sku Standard \
--allocation-method static \
--version IPv4 \
--zone 1 2 3 -o JSON
Eredmények:
{
"publicIp": {
"ddosSettings": {
"protectionMode": "VirtualNetworkInherited"
},
"dnsSettings": {
"domainNameLabel": "mydnslabelxxxxxx",
"fqdn": "mydnslabelxxxxxx.eastus.cloudapp.azure.com"
},
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Network/publicIPAddresses/myPublicIPxxxxxx",
"idleTimeoutInMinutes": 4,
"ipTags": [],
"location": "eastus",
"name": "myPublicIPxxxxxx",
"provisioningState": "Succeeded",
"publicIPAddressVersion": "IPv4",
"publicIPAllocationMethod": "Static",
"resourceGroup": "myLEMPResourceGroupxxxxxx",
"sku": {
"name": "Standard",
"tier": "Regional"
},
"type": "Microsoft.Network/publicIPAddresses",
"zones": [
"1",
"2",
"3"
]
}
}
Azure Hálózati biztonsági csoport létrehozása
A hálózati biztonsági csoportok biztonsági szabályai lehetővé teszik, hogy megszűrje a virtuális hálózat alhálózatain és hálózati adapterein bejövő és kimenő forgalom típusait. A hálózati biztonsági csoportokkal kapcsolatos további információkért tekintse meg a hálózati biztonsági csoportok áttekintését.
az network nsg create \
--name $MY_NSG_NAME \
--resource-group $MY_RESOURCE_GROUP_NAME \
--location $REGION -o JSON
Eredmények:
{
"NewNSG": {
"defaultSecurityRules":
{
"access": "Allow",
"description": "Allow inbound traffic from all VMs in VNET",
"destinationAddressPrefix": "VirtualNetwork",
"destinationAddressPrefixes": [],
"destinationPortRange": "*",
"destinationPortRanges": [],
"direction": "Inbound",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroup104/providers/Microsoft.Network/networkSecurityGroups/protect-vms/defaultSecurityRules/AllowVnetInBound",
"name": "AllowVnetInBound",
"priority": 65000,
"protocol": "*",
"provisioningState": "Succeeded",
"resourceGroup": "myLEMPResourceGroup104",
"sourceAddressPrefix": "VirtualNetwork",
"sourceAddressPrefixes": [],
"sourcePortRange": "*",
"sourcePortRanges": [],
"type": "Microsoft.Network/networkSecurityGroups/defaultSecurityRules"
},
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroup104/providers/Microsoft.Network/networkSecurityGroups/protect-vms",
"location": "eastus",
"name": "protect-vms",
"provisioningState": "Succeeded",
"resourceGroup": "myLEMPResourceGroup104",
"securityRules": [],
"type": "Microsoft.Network/networkSecurityGroups"
}
}
Azure Hálózati biztonsági csoport szabályainak létrehozása
Hozzon létre egy szabályt, amely engedélyezi a virtuális géphez való csatlakozást a 22-s porton az SSH-hoz, valamint a 80-at, a 443-at a HTTP-hez és a HTTPS-hez. Létrejön egy további szabály, amely lehetővé teszi az összes portot a kimenő kapcsolatok számára. Az az network nsg rule create használatával hozzon létre egy hálózati biztonsági csoportszabályt.
az network nsg rule create \
--resource-group $MY_RESOURCE_GROUP_NAME \
--nsg-name $MY_NSG_NAME \
--name $MY_NSG_SSH_RULE \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 100 \
--source-address-prefix '*' \
--source-port-range '*' \
--destination-address-prefix '*' \
--destination-port-range 22 80 443 -o JSON
Eredmények:
{
"access": "Allow",
"destinationAddressPrefix": "*",
"destinationAddressPrefixes": [],
"destinationPortRanges": [
"22",
"80",
"443"
],
"direction": "Inbound",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Network/networkSecurityGroups/myNSGNamexxxxxx/securityRules/Allow-Accessxxxxxx",
"name": "Allow-Accessxxxxxx",
"priority": 100,
"protocol": "Tcp",
"provisioningState": "Succeeded",
"resourceGroup": "myLEMPResourceGroupxxxxxx",
"sourceAddressPrefix": "*",
"sourceAddressPrefixes": [],
"sourcePortRange": "*",
"sourcePortRanges": [],
"type": "Microsoft.Network/networkSecurityGroups/securityRules"
}
Azure Hálózati adapter létrehozása
Az az network nic create használatával hozza létre a virtuális gép hálózati adapterét. A nyilvános IP-címek és a korábban létrehozott NSG a hálózati adapterhez vannak társítva. A hálózati adapter a korábban létrehozott virtuális hálózathoz van csatolva.
az network nic create \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $MY_VM_NIC_NAME \
--location $REGION \
--ip-forwarding false \
--subnet $MY_SN_NAME \
--vnet-name $MY_VNET_NAME \
--network-security-group $MY_NSG_NAME \
--public-ip-address $MY_PUBLIC_IP_NAME -o JSON
Eredmények:
{
"NewNIC": {
"auxiliaryMode": "None",
"auxiliarySku": "None",
"disableTcpStateTracking": false,
"dnsSettings": {
"appliedDnsServers": [],
"dnsServers": []
},
"enableAcceleratedNetworking": false,
"enableIPForwarding": false,
"hostedWorkloads": [],
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Network/networkInterfaces/myVMNicNamexxxxxx",
"ipConfigurations": [
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Network/networkInterfaces/myVMNicNamexxxxxx/ipConfigurations/ipconfig1",
"name": "ipconfig1",
"primary": true,
"privateIPAddress": "10.19.0.4",
"privateIPAddressVersion": "IPv4",
"privateIPAllocationMethod": "Dynamic",
"provisioningState": "Succeeded",
"resourceGroup": "myLEMPResourceGroupxxxxxx",
"subnet": {
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Network/virtualNetworks/myVNetxxxxxx/subnets/mySNxxxxxx",
"resourceGroup": "myLEMPResourceGroupxxxxxx"
},
"type": "Microsoft.Network/networkInterfaces/ipConfigurations"
}
],
"location": "eastus",
"name": "myVMNicNamexxxxxx",
"networkSecurityGroup": {
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Network/networkSecurityGroups/myNSGNamexxxxxx",
"resourceGroup": "myLEMPResourceGroupxxxxxx"
},
"nicType": "Standard",
"provisioningState": "Succeeded",
"resourceGroup": "myLEMPResourceGroupxxxxxx",
"tapConfigurations": [],
"type": "Microsoft.Network/networkInterfaces",
"vnetEncryptionSupported": false
}
}
A cloud-init áttekintése
A cloud-init egy széles körben használt módszer a Linux rendszerű virtuális gépek első indításkor való testreszabásához. A cloud-init használatával csomagokat telepíthet és fájlokat írhat, vagy beállíthatja a felhasználókat és a biztonságot. Mivel a cloud-init a kezdeti rendszerindítási folyamat során fut, nincs más lépés vagy szükséges ügynök a konfigurációra.
A cloud-init különböző disztribúciókon is működik. Például nem kell az apt-get install vagy a yum install használatával telepítenie a csomagokat. Ehelyett megadhatja a telepítendő csomagok listáját. A cloud-init automatikusan a natív csomagkezelő eszközt használja a kiválasztott disztribúcióhoz.
Partnereinkkel együttműködve a felhőbeli initet is belefoglaljuk, és az Azure-nak biztosított képeken dolgozunk. Az egyes disztribúciók cloud-init-támogatásával kapcsolatos részletes információkért lásd : Cloud-init támogatás az Azure-beli virtuális gépekhez.
Cloud-init konfigurációs fájl létrehozása
A cloud-init működés közbeni megtekintéséhez hozzon létre egy LEMP-vermet telepítő virtuális gépet, és egy SSL-tanúsítvánnyal védett egyszerű Wordpress-alkalmazást futtat. Az alábbi cloud-init konfiguráció telepíti a szükséges csomagokat, létrehozza a Wordpress webhelyet, majd inicializálja és elindítja a webhelyet.
cat << EOF > cloud-init.txt
#cloud-config
# Install, update, and upgrade packages
package_upgrade: true
package_update: true
package_reboot_if_require: true
# Install packages
packages:
- vim
- certbot
- python3-certbot-nginx
- bash-completion
- nginx
- mysql-client
- php
- php-cli
- php-bcmath
- php-curl
- php-imagick
- php-intl
- php-json
- php-mbstring
- php-mysql
- php-gd
- php-xml
- php-xmlrpc
- php-zip
- php-fpm
write_files:
- owner: www-data:www-data
path: /etc/nginx/sites-available/default.conf
content: |
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name $FQDN;
}
write_files:
- owner: www-data:www-data
path: /etc/nginx/sites-available/$FQDN.conf
content: |
upstream php {
server unix:/run/php/php8.1-fpm.sock;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name $FQDN;
ssl_certificate /etc/letsencrypt/live/$FQDN/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$FQDN/privkey.pem;
root /var/www/$FQDN;
index index.php;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
}
server {
listen 80;
listen [::]:80;
server_name $FQDN;
return 301 https://$FQDN\$request_uri;
}
runcmd:
- sed -i 's/;cgi.fix_pathinfo.*/cgi.fix_pathinfo = 1/' /etc/php/8.1/fpm/php.ini
- sed -i 's/^max_execution_time \= .*/max_execution_time \= 300/g' /etc/php/8.1/fpm/php.ini
- sed -i 's/^upload_max_filesize \= .*/upload_max_filesize \= 64M/g' /etc/php/8.1/fpm/php.ini
- sed -i 's/^post_max_size \= .*/post_max_size \= 64M/g' /etc/php/8.1/fpm/php.ini
- systemctl restart php8.1-fpm
- systemctl restart nginx
- certbot --nginx certonly --non-interactive --agree-tos -d $FQDN -m dummy@dummy.com --redirect
- ln -s /etc/nginx/sites-available/$FQDN.conf /etc/nginx/sites-enabled/
- rm /etc/nginx/sites-enabled/default
- systemctl restart nginx
- curl --url https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar --output /tmp/wp-cli.phar
- mv /tmp/wp-cli.phar /usr/local/bin/wp
- chmod +x /usr/local/bin/wp
- wp cli update
- mkdir -m 0755 -p /var/www/$FQDN
- chown -R azureadmin:www-data /var/www/$FQDN
- sudo -u azureadmin -i -- wp core download --path=/var/www/$FQDN
- sudo -u azureadmin -i -- wp config create --dbhost=$MY_MYSQL_DB_NAME.mysql.database.azure.com --dbname=wp001 --dbuser=$MY_MYSQL_ADMIN_USERNAME --dbpass="$MY_MYSQL_ADMIN_PW" --path=/var/www/$FQDN
- sudo -u azureadmin -i -- wp core install --url=$FQDN --title="Azure hosted blog" --admin_user=$MY_WP_ADMIN_USER --admin_password="$MY_WP_ADMIN_PW" --admin_email=$MY_AZURE_USER --path=/var/www/$FQDN
- sudo -u azureadmin -i -- wp plugin update --all --path=/var/www/$FQDN
- chmod 600 /var/www/$FQDN/wp-config.php
- mkdir -p -m 0775 /var/www/$FQDN/wp-content/uploads
- chgrp www-data /var/www/$FQDN/wp-content/uploads
EOF
Rugalmas Azure MySQL-kiszolgálóhoz készült Azure saját DNS-zóna létrehozása
Az Azure saját DNS Zónaintegráció lehetővé teszi a privát DNS feloldását az aktuális virtuális hálózaton belül, vagy bármely régión belüli társviszonyban lévő virtuális hálózaton, ahol a privát DNS-zóna kapcsolódik. A privát DNS-zóna létrehozásához használja az az network private-dns zone create (Privát DNS-zóna létrehozása ) elemet.
az network private-dns zone create \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $MY_DNS_LABEL.private.mysql.database.azure.com -o JSON
Eredmények:
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Network/privateDnsZones/mydnslabelxxxxxx.private.mysql.database.azure.com",
"location": "global",
"maxNumberOfRecordSets": 25000,
"maxNumberOfVirtualNetworkLinks": 1000,
"maxNumberOfVirtualNetworkLinksWithRegistration": 100,
"name": "mydnslabelxxxxxx.private.mysql.database.azure.com",
"numberOfRecordSets": 1,
"numberOfVirtualNetworkLinks": 0,
"numberOfVirtualNetworkLinksWithRegistration": 0,
"provisioningState": "Succeeded",
"resourceGroup": "myLEMPResourceGroupxxxxxx",
"tags": null,
"type": "Microsoft.Network/privateDnsZones"
}
Rugalmas Azure Database for MySQL-kiszolgáló létrehozása
A rugalmas Azure Database for MySQL-kiszolgáló egy felügyelt szolgáltatás, amellyel magas rendelkezésre állású MySQL-kiszolgálókat futtathat, kezelhet és skálázhat a felhőben. Hozzon létre egy rugalmas kiszolgálót az az mysql flexible-server create paranccsal. Egy kiszolgáló több adatbázist tartalmazhat. Az alábbi parancs létrehoz egy kiszolgálót az Azure CLI helyi környezetéből származó szolgáltatás alapértelmezései és változó értékei alapján:
az mysql flexible-server create \
--admin-password $MY_MYSQL_ADMIN_PW \
--admin-user $MY_MYSQL_ADMIN_USERNAME \
--auto-scale-iops Disabled \
--high-availability Disabled \
--iops 500 \
--location $REGION \
--name $MY_MYSQL_DB_NAME \
--database-name wp001 \
--resource-group $MY_RESOURCE_GROUP_NAME \
--sku-name Standard_B2s \
--storage-auto-grow Disabled \
--storage-size 20 \
--subnet $MY_MYSQL_SN_NAME \
--private-dns-zone $MY_DNS_LABEL.private.mysql.database.azure.com \
--tier Burstable \
--version 8.0.21 \
--vnet $MY_VNET_NAME \
--yes -o JSON
Eredmények:
{
"databaseName": "wp001",
"host": "mydbxxxxxx.mysql.database.azure.com",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.DBforMySQL/flexibleServers/mydbxxxxxx",
"location": "East US",
"resourceGroup": "myLEMPResourceGroupxxxxxx",
"skuname": "Standard_B2s",
"subnetId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Network/virtualNetworks/myVNetxxxxxx/subnets/myMySQLSNxxxxxx",
"username": "dbadminxxxxxx",
"version": "8.0.21"
}
echo "Your MySQL user $MY_MYSQL_ADMIN_USERNAME password is: $MY_WP_ADMIN_PW"
A létrehozott kiszolgáló az alábbi attribútumokkal rendelkezik:
- A kiszolgáló neve, rendszergazdai felhasználónév, rendszergazdai jelszó, erőforráscsoport neve és helye már meg van adva a felhőhéj helyi környezetében. Az erőforráscsoport és más Azure-összetevők ugyanazon a helyen jönnek létre.
- A fennmaradó kiszolgálókonfigurációk szolgáltatás alapértelmezései: számítási szint (Burstable), számítási méret/termékváltozat (Standard_B2s), biztonsági mentés megőrzési időtartama (7 nap) és MySQL-verzió (8.0.21)
- Az alapértelmezett kapcsolati módszer a privát hozzáférés (VNet-integráció) egy csatolt virtuális hálózattal és egy automatikusan létrehozott alhálózattal.
Feljegyzés
A kapcsolati módszer nem módosítható a kiszolgáló létrehozása után. Ha például a létrehozás során van kiválasztva Private access (VNet Integration)
, akkor a létrehozás után nem válthat rá Public access (allowed IP addresses)
. Javasoljuk, hogy hozzon létre egy privát hozzáféréssel rendelkező kiszolgálót, hogy biztonságosan elérhesse a kiszolgálót a VNet-integráció használatával. További információ a privát hozzáférésről az alapfogalmakról szóló cikkben.
Ha módosítani szeretné az alapértelmezett beállításokat, tekintse meg az Azure CLI referenciadokumentációját a konfigurálható CLI-paraméterek teljes listájához.
Ellenőrizze az Azure Database for MySQL rugalmas kiszolgálói állapotát
A rugalmas Azure Database for MySQL-kiszolgáló és a támogató erőforrások létrehozása néhány percet vesz igénybe.
runtime="10 minute";
endtime=$(date -ud "$runtime" +%s);
while [[ $(date -u +%s) -le $endtime ]]; do
STATUS=$(az mysql flexible-server show -g $MY_RESOURCE_GROUP_NAME -n $MY_MYSQL_DB_NAME --query state -o tsv);
echo $STATUS;
if [ "$STATUS" == 'Ready' ]; then
break;
else
sleep 10;
fi;
done
Kiszolgálóparaméterek konfigurálása az Azure Database for MySQL-ben – rugalmas kiszolgáló
Az Azure Database for MySQL rugalmas kiszolgálókonfigurációját kiszolgálóparaméterekkel kezelheti. A kiszolgálóparaméterek a kiszolgáló létrehozásakor az alapértelmezett és ajánlott értékkel vannak konfigurálva.
Kiszolgálóparaméter részleteinek megjelenítése:
Futtassa a rugalmas mysql-kiszolgáló paraméter megjelenítési parancsát a kiszolgáló bármely paraméterének részleteinek megjelenítéséhez.
Az Azure Database for MySQL letiltása – Rugalmas kiszolgálói SSL-kapcsolati paraméter a Wordpress-integrációhoz
Kiszolgálóparaméter értékének módosítása:
Módosíthatja egy adott kiszolgálóparaméter értékét is, amely frissíti a MySQL-kiszolgálómotor mögöttes konfigurációs értékét. A kiszolgálóparaméter frissítéséhez használja az az mysql flexible-server paraméterkészlet parancsot.
az mysql flexible-server parameter set \
-g $MY_RESOURCE_GROUP_NAME \
-s $MY_MYSQL_DB_NAME \
-n require_secure_transport -v "OFF" -o JSON
Eredmények:
{
"allowedValues": "ON,OFF",
"currentValue": "OFF",
"dataType": "Enumeration",
"defaultValue": "ON",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.DBforMySQL/flexibleServers/mydbxxxxxx/configurations/require_secure_transport",
"isConfigPendingRestart": "False",
"isDynamicConfig": "True",
"isReadOnly": "False",
"name": "require_secure_transport",
"resourceGroup": "myLEMPResourceGroupxxxxxx",
"source": "user-override",
"systemData": null,
"type": "Microsoft.DBforMySQL/flexibleServers/configurations",
"value": "OFF"
}
Azure Linux rendszerű virtuális gép létrehozása
Az alábbi példa létrehoz egy elnevezett $MY_VM_NAME
virtuális gépet, és SSH-kulcsokat hoz létre, ha még nem léteznek alapértelmezett kulcshelyen. A parancs rendszergazdai felhasználónevet is beállít $MY_VM_USERNAME
.
Az Azure-beli Linux rendszerű virtuális gépek biztonságának javítása érdekében integrálható a Microsoft Entra ID-hitelesítéssel. Mostantól a Microsoft Entra ID-t használhatja alapvető hitelesítési platformként. A Linux rendszerű virtuális gépbe a Microsoft Entra ID és az OpenSSH tanúsítványalapú hitelesítés használatával is bejelentkezhet. Ez a funkció lehetővé teszi a szervezetek számára, hogy azure-beli szerepköralapú hozzáférés-vezérlési és feltételes hozzáférési szabályzatokkal kezeljék a virtuális gépekhez való hozzáférést.
Hozzon létre egy virtuális gépet az az vm create paranccsal.
az vm create \
--name $MY_VM_NAME \
--resource-group $MY_RESOURCE_GROUP_NAME \
--admin-username $MY_VM_USERNAME \
--authentication-type ssh \
--assign-identity \
--image $MY_VM_IMAGE \
--location $REGION \
--nic-delete-option Delete \
--os-disk-caching ReadOnly \
--os-disk-delete-option Delete \
--os-disk-size-gb 30 \
--size $MY_VM_SIZE \
--generate-ssh-keys \
--storage-sku Premium_LRS \
--nics $MY_VM_NIC_NAME \
--custom-data cloud-init.txt -o JSON
Eredmények:
{
"fqdns": "mydnslabelxxxxxx.eastus.cloudapp.azure.com",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Compute/virtualMachines/myVMNamexxxxxx",
"identity": {
"principalId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"tenantId": "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz",
"type": "SystemAssigned",
"userAssignedIdentities": null
},
"location": "eastus",
"macAddress": "60-45-BD-D8-1D-84",
"powerState": "VM running",
"privateIpAddress": "10.19.0.4",
"resourceGroup": "myLEMPResourceGroupxxxxxx",
"zones": ""
}
Az Azure Linux rendszerű virtuális gép állapotának ellenőrzése
A virtuális gép és a kapcsolódó erőforrások létrehozása csak néhány percet vesz igénybe. A sikeres provisioningState érték akkor jelenik meg, ha a bővítmény sikeresen telepítve van a virtuális gépen. A bővítmény telepítéséhez a virtuális gépnek rendelkeznie kell egy futó virtuálisgép-ügynökkel .
runtime="5 minute";
endtime=$(date -ud "$runtime" +%s);
while [[ $(date -u +%s) -le $endtime ]]; do
STATUS=$(ssh -o StrictHostKeyChecking=no $MY_VM_USERNAME@$FQDN "cloud-init status --wait");
echo $STATUS;
if [[ "$STATUS" == *'status: done'* ]]; then
break;
else
sleep 10;
fi;
done
{
"condition": null,
"conditionVersion": null,
"createdBy": null,
"createdOn": "2023-09-04T09:29:16.895907+00:00",
"delegatedManagedIdentityResourceId": null,
"description": null,
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Authorization/roleAssignments/yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"name": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"principalId": "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz",
"principalType": "User",
"resourceGroup": "myLEMPResourceGroupxxxxxx",
"roleDefinitionId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Authorization/roleDefinitions/zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz",
"scope": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx",
"type": "Microsoft.Authorization/roleAssignments",
"updatedBy": "wwwwwwww-wwww-wwww-wwww-wwwwwwwwwwww",
"updatedOn": "2023-09-04T09:29:17.237445+00:00"
}
Microsoft Entra ID-bejelentkezés engedélyezése Linux rendszerű virtuális gépekhez az Azure-ban
A következő telepíti a bővítményt, hogy engedélyezze a Microsoft Entra ID bejelentkezést linuxos virtuális gépeken. A virtuálisgép-bővítmények olyan kis alkalmazások, amelyek üzembe helyezés utáni konfigurációs és automatizálási feladatokat biztosítanak az Azure-beli virtuális gépeken.
az vm extension set \
--publisher Microsoft.Azure.ActiveDirectory \
--name AADSSHLoginForLinux \
--resource-group $MY_RESOURCE_GROUP_NAME \
--vm-name $MY_VM_NAME -o JSON
Eredmények:
{
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": null,
"forceUpdateTag": null,
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myLEMPResourceGroupxxxxxx/providers/Microsoft.Compute/virtualMachines/myVMNamexxxxxx/extensions/AADSSHLoginForLinux",
"instanceView": null,
"location": "eastus",
"name": "AADSSHLoginForLinux",
"protectedSettings": null,
"protectedSettingsFromKeyVault": null,
"provisioningState": "Succeeded",
"publisher": "Microsoft.Azure.ActiveDirectory",
"resourceGroup": "myLEMPResourceGroupxxxxxx",
"settings": null,
"suppressFailures": null,
"tags": null,
"type": "Microsoft.Compute/virtualMachines/extensions",
"typeHandlerVersion": "1.0",
"typePropertiesType": "AADSSHLoginForLinux"
}
A WordPress webhelyének ellenőrzése és tallózása
A WordPress egy nyílt forráskód tartalomkezelő rendszer (CMS), amelyet a web több mint 40%-a használ webhelyek, blogok és egyéb alkalmazások létrehozásához. A WordPress több különböző Azure-szolgáltatáson is futtatható: AKS, Virtual Machines és App Service. Az Azure-beli WordPress-lehetőségek teljes listáját az Azure Marketplace-en található WordPressben találja.
Ez a WordPress-telepítés csak a működés ellenőrzésére szolgál. A WordPress legfrissebb verziójának az ajánlott biztonsági beállításokkal való telepítéséhez tekintse meg a WordPress dokumentációját.
Ellenőrizze, hogy az alkalmazás fut-e az alkalmazás URL-címének curlingelésével:
runtime="5 minute";
endtime=$(date -ud "$runtime" +%s);
while [[ $(date -u +%s) -le $endtime ]]; do
if curl -I -s -f $FQDN > /dev/null ; then
curl -L -s -f $FQDN 2> /dev/null | head -n 9
break
else
sleep 10
fi;
done
Eredmények:
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name='robots' content='max-image-preview:large' />
<title>Azure hosted blog</title>
<link rel="alternate" type="application/rss+xml" title="Azure hosted blog » Feed" href="https://mydnslabelxxxxxx.eastus.cloudapp.azure.com/?feed=rss2" />
<link rel="alternate" type="application/rss+xml" title="Azure hosted blog » Comments Feed" href="https://mydnslabelxxxxxx.eastus.cloudapp.azure.com/?feed=comments-rss2" />
echo "You can now visit your web server at https://$FQDN"