Skip to content

Commit 378d2dd

Browse files
author
gitName
committed
Merge branch 'main' of https://github.com/MicrosoftDocs/azure-docs-pr into pev2
2 parents 9464b62 + 255df06 commit 378d2dd

36 files changed

+362
-126
lines changed

articles/api-management/validate-graphql-request-policy.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,10 @@ Available actions are described in the following table.
9090
* Fragments
9191
* Unions
9292
* Interfaces
93-
* The schema element
94-
93+
* The schema element
94+
95+
* The policy can validate GraphQL requests with up to 250 query fields across all levels.
96+
9597
## Error handling
9698

9799
Failure to validate against the GraphQL schema, or a failure for the request's size or depth, is a request error and results in the request being failed with an errors block (but no data block).

articles/app-service/overview-wordpress.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ title: 'An overview of WordPress'
33
description: An overview of WordPress on App Service. You can focus on creating WordPress content while Azure takes care of the infrastructure, security, and performance needs.
44
keywords: app service, azure app service, wordpress, preview, app service on linux, plugins, mysql flexible server, wordpress on linux, php
55
author: msangapu-msft
6+
ai-usage: ai-assisted
67
ms.topic: overview
78
ms.date: 12/10/2024
89
# ms.devlang: wordpress

articles/app-service/toc.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,9 @@
420420
- name: Customize API Management developer portal
421421
displayName: API Management and WordPress
422422
href: /azure/api-management/developer-portal-wordpress-plugin
423+
- name: WordPress FAQ
424+
displayName: WordPress frequently asked questions
425+
href: wordpress-faq.md
423426
- name: WebJobs
424427
items:
425428
- name: Create WebJobs
@@ -522,8 +525,6 @@
522525
href: /azure/developer/java/migration/migrate-weblogic-to-jboss-eap-on-azure-app-service?toc=/azure/app-service/toc.json&bc=/azure/bread/toc.json
523526
- name: Migrate WebSphere
524527
href: /azure/developer/java/migration/migrate-websphere-to-jboss-eap-on-azure-app-service?toc=/azure/app-service/toc.json&bc=/azure/bread/toc.json
525-
- name: Migrate WordPress
526-
href: migrate-wordpress.md
527528
- name: Cookbooks
528529
items:
529530
- name: Reference Architectures

articles/app-service/wordpress-faq.md

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
---
2+
title: 'Frequently asked questions about WordPress on App Service'
3+
description: Use this article to find frequently asked questions and answers about WordPress on Azure App Service.
4+
keywords: app service, azure app service, wordpress, preview, app service on linux, plugins, mysql flexible server, wordpress on linux, php
5+
ai-usage: ai-assisted
6+
author: reddyabhishek
7+
ms.topic: faq
8+
ms.date: 12/13/2024
9+
# ms.devlang: wordpress
10+
ms.author: areddys
11+
ms.custom: mvc, linux-related-content
12+
---
13+
# WordPress on App Service: Frequently Asked Questions
14+
15+
## Are there limits on the number of sites, visits, storage, or bandwidth?
16+
17+
The allocated resources for an App Service plan and database tier determine the hosting capacity. For example:
18+
- **App Service B1 Plan:** Includes 1 core, 1.75 GB RAM, and 10 GB storage.
19+
- **Database B1ms Instance:** Offers 1 vCore, 2 GB RAM, and storage up to 16 GB.
20+
21+
There's no fixed limit on the number of sites you can host, but recommended app limits by SKU are:
22+
23+
| **SKU** | **Recommended Max Apps** |
24+
|--------------------|---------------------------|
25+
| B1, S1, P1v2, I1v1 | 8 |
26+
| B2, S2, P2v2, I2v1 | 16 |
27+
| B3, S3, P3v2, I3v1 | 32 |
28+
| P1v3, I1v2 | 16 |
29+
| P2v3, I2v2 | 32 |
30+
| P3v3, I3v2 | 64 |
31+
32+
Bandwidth is unlimited, but [charges apply for internet egress](https://azure.microsoft.com/pricing/details/bandwidth/).
33+
34+
## How are security patches updated?
35+
Azure manages security patches for core technologies, while WordPress-specific updates may require manual or semi-automated steps:
36+
- **PHP Major Versions:** Update manually under **App Service > Settings > Configuration**.
37+
- **WordPress Core:** Minor updates are automatic, while major updates need manual configuration.
38+
- **Plugins and Themes:** Perform manual updates after backing up your site to avoid issues. WordPress also offers auto update options.
39+
40+
See [How to keep your WordPress website stack on Azure App Service up to date](https://techcommunity.microsoft.com/blog/appsonazureblog/how-to-keep-your-wordpress-website-stack-on-azure-app-service-up-to-date/3832193) for more information.
41+
42+
## What security features are available to protect my website?
43+
Azure App Service integrates robust security features to safeguard WordPress sites:
44+
- **[App Service Security](overview-security.md):** HTTPS, IP restrictions, certificates, authentication, and network isolation.
45+
- **[Easy Authentication](overview-authentication-authorization.md):** Built-in identity provider integration with minimal effort.
46+
- **[Azure Database for MySQL](/security/benchmark/azure/baselines/azure-database-for-mysql-flexible-server-security-baseline):** Advanced protections for Azure MySQL servers, including encryption and backup capabilities.
47+
- **[Virtual Network (VNET)](/azure/virtual-network/virtual-networks-overview):** Secure communication between Azure resources, the internet, and on-premises networks.
48+
- **[Managed Identities](/entra/identity/managed-identities-azure-resources/how-manage-user-assigned-managed-identities):** Credential-free access to resources using Microsoft Entra tokens.
49+
- **[Microsoft Defender for Cloud](/azure/defender-for-cloud/defender-for-cloud-introduction):** Proactive threat detection with DevSecOps integration.
50+
- **[Azure Key Vault](/azure/key-vault/):** Secure storage for keys, secrets, and certificates.
51+
- **[Microsoft Entra ID](/entra/identity/):** Single sign-On (SSO) for seamless authentication.
52+
53+
54+
55+
## How can I set up WordPress Multisite?
56+
WordPress Multisite allows managing multiple sites from a single installation. To enable:
57+
Set up a **[subdirectory-based Multisite](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/how-to-set-up-subdirectory-multisite-in-wordpress-on-azure-app/ba-p/3791071)** or **[subdomain-based Multisite](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/how-to-set-up-subdomain-multisite-in-wordpress-on-app-service/ba-p/3886283)**.
58+
59+
> [!NOTE]
60+
> - Conversion to Multisite is permanent; reverting to a single site is unsupported.
61+
> - Switching between subdirectory and subdomain setups isn't allowed.
62+
>
63+
64+
## How do I access my WordPress website's database?
65+
The database can be accessed using **phpMyAdmin** at: `https://<your-site-link>/phpmyadmin`.
66+
Use the `DATABASE_USERNAME` as the username and a generated token as the password (tokens can be retrieved via **Kudu SSH**).
67+
68+
## How do I enable a custom domain for my WordPress website?
69+
Custom domains can be set up with these resources:
70+
- [Using custom domains with WordPress on Azure App Service](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/how-to-use-custom-domains-with-wordpress-on-app-service/ba-p/3886247)
71+
- [Configuring custom domains with Azure Front Door](/azure/frontdoor/front-door-custom-domain)
72+
73+
## Does WordPress on App Service have email functionality?
74+
Yes, email functionality is supported through **[Azure Communication Services](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/wordpress-on-azure-appservice-email-integration/ba-p/3890486)**. [Custom email domains can be also be configured](/azure/communication-services/quickstarts/email/add-custom-verified-domains).
75+
76+
## How can I update NGINX configurations for my WordPress website?
77+
NGINX configurations can be updated using a **startup script**. Detailed instructions are available in the [startup script guide](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/updating-nginx-default-configurations-on-azure-app-services/ba-p/3710146).
78+
79+
## How can I access error logs for my WordPress website?
80+
Access error logs for debugging via **App Service logs** or the **Kudu dashboard**. Refer to the [documentation](troubleshoot-diagnostic-logs.md) for detailed steps.
81+
82+
## How do I estimate pricing for hosting a WordPress site on Azure?
83+
Use the [Azure Pricing Calculator](https://azure.microsoft.com/pricing/) to estimate hosting costs, considering App Service, MySQL, CDN, Blob Storage, and other components. Use this [pricing estimate guide](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/how-to-estimate-pricing-for-wordpress-on-app-service/ba-p/4029262) for more information.
84+
85+
## How can I debug and monitor my WordPress site?
86+
Key tools for debugging and monitoring WordPress sites include:
87+
- **[App Service Logs](troubleshoot-diagnostic-logs.md)**
88+
- **[Kudu](https://techcommunity.microsoft.com/blog/appsonazureblog/kudu-dashboard-explained---wordpress-on-app-service/4030035)**
89+
- **[SSH Access](configure-linux-open-ssh-session.md?pivots=container-linux)**
90+
91+
### PhpMyAdmin
92+
WordPress on App Service utilizes an Azure Database for MySQL flexible server, which is integrated into a VNET. This setup restricts database access to within the VNET. WordPress on App Service includes phpMyAdmin by default. You can access it at: https://`<your-site-link>`/phpmyadmin.
93+
94+
If you are using Managed Identities, you can log in to phpMyAdmin by using the value from DATABASE_USERNAME environment variable as the username and the token as the password. To find the token use your Kudu SSH to run the following command:
95+
96+
/usr/local/bin/fetch-mysql-access-token.sh
97+
98+
Or you can find the database username and password from App Service environment variables
99+
100+
## What features can I use to boost my WordPress site's performance?
101+
102+
Enhance performance with these features / plugins:
103+
- **[Content Delivery Network (CDN)](/azure/cdn/)**
104+
- **[Azure Front Door (AFD)](/azure/frontdoor/)**
105+
- **[Blob Storage](/azure/storage/blobs/)**
106+
- **Dynamic Caching**
107+
- **[Image Compression (Smush)](https://wordpress.org/plugins/wp-smushit/)**
108+
- **[Scaling Up](/azure/app-service/manage-scale-up) and [Out](/azure/app-service/manage-automatic-scaling)**
109+
- **[Redis Cache](https://techcommunity.microsoft.com/blog/appsonazureblog/distributed-caching-with-azure-redis-to-boost-your-wordpress-sites-performance/3974605)**
110+
111+
## What are the options for configuring and setting up my WordPress site?
112+
113+
Options for setting up WordPress include:
114+
- **[FTP File Transfers](/azure/app-service/deploy-ftp)**
115+
- **[NGINX Configuration Updates](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/updating-nginx-default-configurations-on-azure-app-services/ba-p/3710146)**
116+
- **[App Service settings](/azure/app-service/configure-common)**
117+
118+
## How can I build a headless WordPress site?
119+
Enable **WP REST APIs** and integrate with **Static Web Apps** to create a decoupled front-end experience. Learn more [here](https://techcommunity.microsoft.com/blog/appsonazureblog/integrating-wordpress-on-app-service-with-azure-static-web-apps/4004955).
120+
121+
## What features are available for creating an enterprise-grade production website?
122+
Key features include:
123+
- [Staging slots](https://techcommunity.microsoft.com/blog/appsonazureblog/how-to-set-up-staging-slots-in-wordpress-on-app-service/4144847) for safe testing
124+
- [Custom domains](https://techcommunity.microsoft.com/blog/appsonazureblog/how-to-use-custom-domains-with-wordpress-on-app-service/3886247) and SSL certificates
125+
- [CI/CD](https://techcommunity.microsoft.com/blog/appsonazureblog/how-to-integrate-continuous-integration-and-deployment-with-wordpress-on-app-ser/4144886) pipelines for automated deployments
126+
- [Startup scripts](https://techcommunity.microsoft.com/blog/appsonazureblog/how-to-run-bash-scripts-in-wordpress-on-azure-app-service/3625692) for configuration
127+
- [Emails with custom domain](/azure/communication-services/quickstarts/email/add-custom-verified-domains)
128+
- [Scaling](/azure/app-service/manage-scale-up) and [load testing](/azure/load-testing/concept-load-test-app-service) capabilities
129+
130+
## What are common errors for WordPress on App Service, and how can I troubleshoot?
131+
Typical issues and resolutions:
132+
- **[Debug Logs](https://github.com/Azure/wordpress-linux-appservice/blob/main/WordPress/enabling_debug_logs_for_wordpress.md):** Enable for troubleshooting.
133+
- **[CORS Issues](https://github.com/Azure/wordpress-linux-appservice/blob/main/WordPress/cors_issue_with_azure_cdn_frontdoor_blob.md):** Adjust settings in CDN or Azure Front Door.
134+
- **[Existing WordPress Detected Warning](https://github.com/Azure/wordpress-linux-appservice/blob/main/WordPress/troubleshooting-guides/tsg_existing_wordpress_installation_detected.md):** Follow [troubleshooting steps](#).
135+
- **[Intl Extension issues](https://techcommunity.microsoft.com/blog/appsonazureblog/how-to-install-intl-extension-on-wordpress-on-azure-app-service/4138353):** Install via the configuration panel.

articles/container-apps/faq.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,19 @@ title: Azure Container Apps frequently asked questions (FAQs)
1414
summary: This article lists commonly asked questions about Azure Container Apps together with related answers.
1515

1616
sections:
17+
- name: Regions
18+
questions:
19+
- question: |
20+
Where can I find the most up-to-date information about supported regions in Azure Container Apps?
21+
answer: |
22+
A list can be generated by running the following Azure CLI command:
23+
24+
```azurecli
25+
az provider show \
26+
--namespace Microsoft.App \
27+
--query "resourceTypes[?resourceType=='managedEnvironments'].locations"
28+
```
29+
1730
- name: APIs
1831
questions:
1932
- question: |

articles/container-apps/networking.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,8 @@ Different environment types have different subnet requirements:
160160

161161
- `/23` is the minimum subnet size required for virtual network integration.
162162

163+
- Your subnet must not be delegated to any services.
164+
163165
- The Container Apps runtime reserves a minimum of 60 IPs for infrastructure in your VNet. The reserved amount may increase up to 256 addresses as apps in your environment scale.
164166

165167
- As your apps scale, a new IP address is allocated for each new replica.

articles/container-apps/opentelemetry-agents.md

Lines changed: 111 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ This article shows you how to set up and configure an OpenTelemetry agent for yo
2121

2222
## Configure an OpenTelemetry agent
2323

24-
OpenTelemetry agents live within your container app environment. You configure agent settings via an ARM template or Bicep calls to the environment, or through the CLI.
24+
OpenTelemetry agents live within your container app environment. You configure agent settings via an ARM template or Bicep calls to the environment, or through the CLI, or through Terraform (via the [AzAPI provider](https://registry.terraform.io/providers/Azure/azapi/latest/docs)).
2525

2626
Each endpoint type (Azure Monitor Application Insights, DataDog, and OTLP) has specific configuration requirements.
2727

@@ -53,7 +53,7 @@ The following table shows you what type of data you can send to each destination
5353

5454
## Azure Monitor Application Insights
5555

56-
The only configuration detail required from Application Insights is the connection string. Once you have the connection string, you can configure the agent via your container app's ARM template or with Azure CLI commands.
56+
The only configuration detail required from Application Insights is the connection string. Once you have the connection string, you can configure the agent via your container app's ARM template, with Azure CLI commands or Terraform.
5757

5858
The connection string contains an instrumentation key, which is a unique identifier used to associate telemetry to a specific Application Insights resource. Instrumentation keys aren't security tokens or security keys, and aren't considered secrets.
5959

@@ -99,6 +99,38 @@ az containerapp env telemetry app-insights set \
9999
>[!NOTE]
100100
> Due to the sensitivity of the connection-string, you will not be able to see the detail values of the connection string when the command returns. The system will display it as null.
101101
102+
# [Terraform](#tab/terraform)
103+
104+
```hcl
105+
resource "azapi_update_resource" "app_insights_open_telemetry_integration" {
106+
name = azurerm_container_app_environment.managed_environment.name
107+
parent_id = azurerm_resource_group.resource_group.id
108+
type = "Microsoft.App/managedEnvironments@2023-11-02-preview"
109+
body = jsonencode({
110+
properties = {
111+
appInsightsConfiguration = {
112+
connectionString = azurerm_application_insights.applicationinsights.connection_string
113+
}
114+
appLogsConfiguration = {
115+
destination = "log-analytics"
116+
logAnalyticsConfiguration = {
117+
customerId = azurerm_log_analytics_workspace.workspace.workspace_id
118+
sharedKey = azurerm_log_analytics_workspace.workspace.primary_shared_key
119+
}
120+
}
121+
openTelemetryConfiguration = {
122+
tracesConfiguration = {
123+
destinations = ["appInsights"]
124+
}
125+
logsConfiguration = {
126+
destinations = ["appInsights"]
127+
}
128+
}
129+
}
130+
})
131+
}
132+
```
133+
102134
---
103135

104136
## Datadog
@@ -205,6 +237,34 @@ az containerapp env telemetry data-dog set \
205237
>[!NOTE]
206238
> Due to the sensitivity of the key, you will not be able to see the detail values of the key when the command returns. The system will display it as null.
207239
240+
# [Terraform](#tab/terraform)
241+
242+
```hcl
243+
resource "azapi_update_resource" "app_insights_open_telemetry_integration" {
244+
name = azurerm_container_app_environment.managed_environment.name
245+
parent_id = azurerm_resource_group.resource_group.id
246+
type = "Microsoft.App/managedEnvironments@2023-11-02-preview"
247+
body = jsonencode({
248+
properties = {
249+
openTelemetryConfiguration = {
250+
destinationsConfiguration = {
251+
dataDogConfiguration = {
252+
site = "<YOUR_DATADOG_SUBDOMAIN>.datadoghq.com"
253+
key = "<YOUR_DATADOG_KEY>"
254+
}
255+
}
256+
tracesConfiguration = {
257+
destinations = ["dataDog"]
258+
}
259+
metricsConfiguration = {
260+
destinations = ["dataDog"]
261+
}
262+
}
263+
}
264+
})
265+
}
266+
```
267+
208268
---
209269

210270
## OTLP endpoint
@@ -280,6 +340,53 @@ az containerapp env telemetry otlp add \
280340
>[!NOTE]
281341
> Due to the sensitivity of the headers value, you will not be able to see the detail values of the headers value when the command returns. The system will display them as null.
282342
343+
# [Terraform](#tab/terraform)
344+
345+
```hcl
346+
resource "azapi_update_resource" "app_insights_open_telemetry_integration" {
347+
name = azurerm_container_app_environment.managed_environment.name
348+
parent_id = azurerm_resource_group.resource_group.id
349+
type = "Microsoft.App/managedEnvironments@2023-11-02-preview"
350+
body = jsonencode({
351+
properties = {
352+
openTelemetryConfiguration = {
353+
destinationsConfiguration = {
354+
otlpConfigurations = [
355+
{
356+
name = "otlp1"
357+
endpoint = "ENDPOINT_URL_1"
358+
insecure = false
359+
headers = "api-key-1=key"
360+
},
361+
{
362+
name = "otlp2"
363+
endpoint = "ENDPOINT_URL_2"
364+
insecure = true
365+
}
366+
]
367+
}
368+
logsConfiguration = {
369+
destinations = [
370+
"otlp2"
371+
]
372+
},
373+
tracesConfiguration = {
374+
destinations = [
375+
"otlp1",
376+
"otlp2"
377+
]
378+
},
379+
metricsConfiguration = {
380+
destinations = [
381+
"otlp1"
382+
]
383+
}
384+
}
385+
}
386+
})
387+
}
388+
```
389+
283390
---
284391

285392
| Name | Description |
@@ -310,9 +417,8 @@ To configure an agent, use the `destinations` array to define which agents your
310417
- You can only set up one Application Insights and Datadog endpoint each at a time.
311418
- While you can define more than one OTLP-configured endpoint, each one must have a distinct name.
312419

313-
314-
The following example shows how to use an OTLP endpoint named `customDashboard`. It sends:
315-
- traces to app insights and `customDashboard`
420+
The following example ARM template shows how to use an OTLP endpoint named `customDashboard`. It sends:
421+
- traces to app insights and `customDashboard`
316422
- logs to app insights and `customDashboard`
317423
- metrics to DataDog and `customDashboard`
318424

articles/container-apps/tutorial-ci-cd-runners-jobs.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,11 +156,12 @@ The Azure Container Apps environment acts as a secure boundary around container
156156
```
157157

158158
# [Azure PowerShell](#tab/azure-powershell)
159+
159160
```powershell
160-
az containerapp env create `
161-
--name "$ENVIRONMENT" `
162-
--resource-group "$RESOURCE_GROUP" `
163-
--location "$LOCATION"
161+
New-AzContainerAppManagedEnvironment `
162+
-Name $ENVIRONMENT `
163+
-ResourceGroupName $RESOURCE_GROUP `
164+
-Location $LOCATION
164165
```
165166

166167
---

0 commit comments

Comments
 (0)