From 51f05fc27ee5f78c10157936f8bf8d4a7213edaa Mon Sep 17 00:00:00 2001 From: Vellaisamy Auvudaiappan Date: Mon, 10 Aug 2026 17:20:43 +0530 Subject: [PATCH 1/6] 1045872-addressed the changes --- ...-container-in-amazon-kubernetes-service.md | 44 +++---- ...r-docker-container-in-azure-app-service.md | 16 +-- ...r-container-in-azure-kubernetes-service.md | 89 +++++++------ ...in-azure-app-service-from-visual-studio.md | 18 +-- ...-processor-server-docker-image-overview.md | 120 +++++++++--------- 5 files changed, 143 insertions(+), 144 deletions(-) diff --git a/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-deploy-word-processor-server-docker-container-in-amazon-kubernetes-service.md b/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-deploy-word-processor-server-docker-container-in-amazon-kubernetes-service.md index 2e1c2cb6ce..8462db5ba6 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-deploy-word-processor-server-docker-container-in-amazon-kubernetes-service.md +++ b/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-deploy-word-processor-server-docker-container-in-amazon-kubernetes-service.md @@ -1,38 +1,38 @@ --- layout: post title: Deploy Syncfusion Word Processor in Amazon Kubernetes Service -description: Learn here all about How to deploy word processor server docker container in amazon kubernetes service in Syncfusion Document editor. +description: Learn here all about deploying word processor server docker container in Amazon Kubernetes Service in the Syncfusion Document Editor. platform: document-processing control: How to deploy word processor server docker container in amazon kubernetes service documentation: ug domainurl: ##DomainURL## --- -# How to deploy Word Processor server in Amazon Kubernetes Service +# Deploy Syncfusion Word Processor in Amazon Kubernetes Service ## Prerequisites -* `AWS Account` :Have Amazon account +* `AWS Account`: Have an Amazon account. * `AWS CLI`: Install the AWS Command Line Interface (CLI) on your local machine. -* `Kubectl` : Install the Kubernetes command-line tool kubectl on your local machine. +* `Kubectl`: Install the Kubernetes command-line tool kubectl on your local machine. * `Docker`: Install Docker on your local machine. * `Word Processor Docker Image`: Have a Docker image of the Word Processor server ready to deploy. -To deploy the Word Processor server docker image, need to follow the below process +To deploy the Word Processor server docker image, you need to follow the process below. * Push Docker Image to Registry (Amazon Elastic Registry) * Deploy Docker Image on Amazon Kubernetes Service -Lets us discuss briefly about the each process +Let us briefly discuss each process. ## Push the Docker image to the Amazon Elastic Registry **Step 1:** Dockerize the Word Processor Server Application with the image name [syncfusion/word-processor-server](https://hub.docker.com/r/syncfusion/word-processor-server) ``` -docker build -t +docker build -t . ``` -**Step 2:** Create a private repository name ‘documenteditor’ in Amazon Elastic Container Registry (ECR) using the AWS CLI or AWS Console to push the docker image +**Step 2:** Create a private repository named 'documenteditor' in Amazon Elastic Container Registry (ECR) using the AWS CLI or AWS Console. ``` aws ecr create-repository --repository-name @@ -43,13 +43,13 @@ aws ecr create-repository --repository-name ``` docker tag :latest /:latest ``` -Refer to the following example to tag the image +Refer to the following example to tag the image. ``` docker tag syncfusion/word-processor-server:latest 123456.dkr.ecr.us-east-1.amazonaws.com/documenteditor:latest ``` -> Get the ECR registry URI from AWS console or using the below AWS CLI command +N> Get the ECR registry URI from AWS console or using the below AWS CLI command. ``` aws ecr describe-repositories --repository-names --query 'repositories[*].repositoryUri' --output text @@ -71,18 +71,18 @@ docker push /:latest ## Deploy Docker Image on Amazon Kubernetes Service -Follow the below steps to deploy the Docker image from the Amazon Elastic Registry( ECR) to Amazon Kubernetes Services (EKS) +Follow the below steps to deploy the Docker image from the Amazon Elastic Registry (ECR) to Amazon Kubernetes Services (EKS). -**Step 1:** DCreate Amazon EKS cluster using the AWS Console +**Step 1:** Create an Amazon EKS cluster using the AWS Console. -**Step 2:** Authenticate with AWS ECR -Need to get the authenticate with the AWS ECR to pull the image from the registry +**Step 2:** Authenticate with AWS ECR. +You need to authenticate with the AWS ECR to pull the image from the registry. ``` aws ecr get-login-password --region | docker login --username AWS --password-stdin .dkr.ecr..amazonaws.com ``` -**Step 3:** : Configure Kubernetes to Communicate with the Cluster +**Step 3:** Configure Kubernetes to communicate with the cluster. ``` aws eks --region update-kubeconfig --name @@ -94,7 +94,7 @@ aws eks --region update-kubeconfig --name docker tag .dkr.ecr..amazonaws.com/: .dkr.ecr..amazonaws.com/: ``` -Refer to the following example +Refer to the following example. ``` docker tag 12345.dkr.ecr.us-east-1.amazonaws.com/documenteditor:latest 98765ABCD.dkr.ecr.us-east-1.amazonaws.com/documenteditor:latest ``` @@ -104,11 +104,11 @@ In this command: * should be replaced with your AWS region. -**Step 5:** To create Kubernetes deployment write Kubernetes manifest +**Step 5:** To create a Kubernetes deployment, write a Kubernetes manifest. **i.** Create a Kubernetes Deployment manifest (deployment.yaml) for your application. Specify the Docker image location. -``` +```yaml apiVersion: apps/v1 kind: Deployment metadata: @@ -129,22 +129,22 @@ spec: ports: - containerPort: 80 ``` -**ii.** Apply the Deployment manifest to create the deployment in your EKS cluster +**ii.** Apply the Deployment manifest to create the deployment in your EKS cluster. ``` kubectl apply -f deployment.yaml ``` -**iii.** Use port forwarding to access the Word Processor Server application locally and verify its functionality +**iii.** Use port forwarding to access the Word Processor Server application locally and verify its functionality. ``` kubectl port-forward pod-name local-port:container-port ``` -> Get the pod names in AWS Console or using the below AWS CLI command +N> Get the pod names in AWS Console or using the below AWS CLI command. ``` kubectl get pods ``` -Finally you can get the sample in the localhost http://``````/api/documenteditor/ \ No newline at end of file +Finally, you can access the sample at localhost: http:///api/documenteditor/ \ No newline at end of file diff --git a/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-deploy-word-processor-server-docker-container-in-azure-app-service.md b/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-deploy-word-processor-server-docker-container-in-azure-app-service.md index 18a288d191..9b1f87359e 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-deploy-word-processor-server-docker-container-in-azure-app-service.md +++ b/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-deploy-word-processor-server-docker-container-in-azure-app-service.md @@ -1,13 +1,13 @@ --- layout: post -title: How to deploy word processor server docker container in azure app service in JavaScript (ES6) Document editor control | Syncfusion -description: Learn here all about How to deploy word processor server docker container in azure app service in Syncfusion JavaScript (ES6) Document editor control of Syncfusion Essential JS 2 and more. +title: How to deploy word processor server docker container in azure app service in JavaScript (ES6) DOCX Editor control | Syncfusion +description: Learn here all about deploying word processor server docker container in Azure App Service in the Syncfusion JavaScript (ES6) Document Editor. platform: document-processing control: How to deploy word processor server docker container in azure app service documentation: ug domainurl: ##DomainURL## --- -# How to deploy word processor server docker container in azure app service in JavaScript (ES6) Document editor control +# Deploy Word Processor Docker Server in Azure App Service ## Prerequisites @@ -23,7 +23,7 @@ az login Create a resource group using the [`az group create`](https://docs.microsoft.com/en-us/cli/azure/group#az-group-create) command. -The following example creates a resource group named documenteditorresourcegroup in the eastus location. +The following example creates a resource group named documenteditorresourcegroup in the East US location. ``` az group create --name documenteditorresourcegroup --location "East US" @@ -41,7 +41,7 @@ az appservice plan create --name documenteditorappservice --resource-group docum **Step 3:** Create a Docker Compose app. -Create a multi-container [`web app`](https://docs.microsoft.com/en-us/azure/app-service/containers/app-service-linux-intro) in the documenteditorappservice App Service plan with the [`az webapp create`](https://docs.microsoft.com/en-us/cli/azure/webapp?view=azure-cli-latest#az-webapp-create) command. The following command creates the web app using the provided Docker compose file. Please look into the section for getting started with Docker compose to create the Docker compose file for the Document Editor server and use the created Docker compose file here. +Create a multi-container [`web app`](https://docs.microsoft.com/en-us/azure/app-service/containers/app-service-linux-intro) in the documenteditorappservice App Service plan with the [`az webapp create`](https://docs.microsoft.com/en-us/cli/azure/webapp?view=azure-cli-latest#az-webapp-create) command. The following command creates the web app using the provided Docker Compose file. Refer to the Docker Compose getting started section to create the Docker Compose file for the document editor server and use the created Docker Compose file here. ``` az webapp create --resource-group documenteditorresourcegroup --plan documenteditorappservice --name documenteditor-server --multicontainer-config-type compose --multicontainer-config-file documenteditor-server-compose.yml @@ -49,8 +49,8 @@ az webapp create --resource-group documenteditorresourcegroup --plan documentedi **Step 4:** Browse to the app. -Browse to the deployed app at `http://.azurewebsites.net`, i.e. `http://documenteditor-server.azurewebsites.net`. Browse this link and navigate to the Document Editor Web API control `http://documenteditor-server.azurewebsites.net/api/documenteditor`. It returns the default get method response. +Browse to the deployed app at `http://.azurewebsites.net`, i.e., `http://documenteditor-server.azurewebsites.net`. Open this link and navigate to the Document Editor Web API control `http://documenteditor-server.azurewebsites.net/api/documenteditor`. It returns the default GET method response. -Append the app service running the URL `http://documenteditor-server.azurewebsites.net/api/documenteditor/` to the service URL in the client-side Document Editor control. For more information about the Document Editor control, refer to this [`getting started page`](../getting-started). +Append the app service running URL `http://documenteditor-server.azurewebsites.net/api/documenteditor/` to the service URL in the client-side Document Editor control. For more information about the Document Editor control, refer to this [`getting started page`](../getting-started). -For more information about the app container service, please look deeper into the [`Microsoft Azure Container Service`](https://docs.microsoft.com/en-us/azure/app-service/containers/quickstart-multi-container) for a production-ready setup. +For more information about the app container service, refer to the [`Azure App Service`](https://docs.microsoft.com/en-us/azure/app-service/containers/quickstart-multi-container) for a production-ready setup. diff --git a/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-deploy-word-processor-server-docker-container-in-azure-kubernetes-service.md b/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-deploy-word-processor-server-docker-container-in-azure-kubernetes-service.md index 31f0ff0875..fbd016a4b1 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-deploy-word-processor-server-docker-container-in-azure-kubernetes-service.md +++ b/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-deploy-word-processor-server-docker-container-in-azure-kubernetes-service.md @@ -1,13 +1,13 @@ --- layout: post -title: How to deploy word processor server docker container in azure kubernetes service in JavaScript (ES6) Document editor control | Syncfusion -description: Learn here all about How to deploy word processor server docker container in azure kubernetes service in Syncfusion JavaScript (ES6) Document editor control of Syncfusion Essential JS 2 and more. +title: How to deploy word processor server docker container in azure kubernetes service in JavaScript (ES6) Document Editor control | Syncfusion +description: Learn here all about deploying word processor server docker container in Azure Kubernetes Service in the Syncfusion JavaScript (ES6) Document Editor. platform: document-processing control: How to deploy word processor server docker container in azure kubernetes service documentation: ug domainurl: ##DomainURL## --- -# How to deploy word processor server docker container in azure kubernetes service in JavaScript (ES6) Document editor control +# Deploy Word Processor Server Docker Container in Azure Kubernetes Service ## Prerequisites @@ -23,7 +23,7 @@ az login Create a resource group using the [`az group create`](https://docs.microsoft.com/en-us/cli/azure/group#az-group-create) command. -The following example creates a resource group named documenteditorresourcegroup in the eastus location. +The following example creates a resource group named documenteditorresourcegroup in the East US location. ``` az group create --name documenteditorresourcegroup --location "East US" @@ -39,7 +39,7 @@ az aks create --resource-group documenteditorresourcegroup --name documenteditor **Step 3:** Connect to the cluster. -Install the [`kubectl`](https://kubernetes.io/docs/reference/kubectl/kubectl/) into the workspace using the following command. +Install [`kubectl`](https://kubernetes.io/docs/reference/kubectl/kubectl/) using the following command. ``` az aks install-cli @@ -56,45 +56,44 @@ az aks get-credentials --resource-group documenteditorresourcegroup --name docum [`Kubernetes Services`](https://kubernetes.io/docs/concepts/services-networking/service/) and [`Deployments`](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) can be configured in a file. To run the Document Editor server, you must define a Service and a Deployment documenteditorserver. To do this, create the documenteditor-server.yml file in the current directory using the following code. ```yaml - apiVersion: apps/v1 - kind: Deployment - metadata: - labels: +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: documenteditorserver + name: documenteditorserver +spec: + replicas: 1 + selector: + matchLabels: app: documenteditorserver - name: documenteditorserver - spec: - replicas: 1 - selector: - matchLabels: + template: + metadata: + labels: app: documenteditorserver - strategy: {} - template: - metadata: - labels: - app: documenteditorserver - spec: - containers: - - image: syncfusion/word-processor-server:latest - name: documenteditorserver - ports: - - containerPort: 80 - env: - - name: SYNCFUSION_LICENSE_KEY - value: "YOUR_LICENSE_KEY" - --- - apiVersion: v1 - kind: Service - metadata: - labels: - app: documenteditorserver - name: documenteditorserver - spec: - ports: - - port: 80 - targetPort: 80 - selector: - app: documenteditorserver - type: LoadBalancer + spec: + containers: + - image: syncfusion/word-processor-server:latest + name: documenteditorserver + ports: + - containerPort: 80 + env: + - name: SYNCFUSION_LICENSE_KEY + value: "YOUR_LICENSE_KEY" +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: documenteditorserver + name: documenteditorserver +spec: + ports: + - port: 80 + targetPort: 80 + selector: + app: documenteditorserver + type: LoadBalancer ``` **Step 5:** To create all Services and Deployments needed to run the Document Editor server, execute the following. @@ -109,8 +108,8 @@ Run the following command to get the Kubernetes cluster deployed service details kubectl get all ``` -Browse the copied external IP address and navigate to the Document Editor Web API control `http:///api/documenteditor`. It returns the default get method response. +Browse to the copied external IP address and navigate to the Document Editor Web API control `http:///api/documenteditor`. It returns the default GET method response. -**Step 6:** Append the Kubernetes service running the URL `http:///api/documenteditor/` to the service URL in the client-side Document Editor control. For more information about the Document Editor control, refer to this [`getting started page`](../getting-started). +**Step 6:** Append the Kubernetes service running URL `http:///api/documenteditor/` to the service URL in the client-side Document Editor control. For more information about the Document Editor control, refer to this [`getting started page`](../getting-started). -For more details about the Azure Kubernetes service, please look deeper into [`Microsoft Azure Kubernetes Service`](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough) for a production-ready setup. +For more details about the Azure Kubernetes service, refer to the [`Azure Kubernetes Service`](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough) for a production-ready setup. \ No newline at end of file diff --git a/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-publish-documenteditor-web-api-application-in-azure-app-service-from-visual-studio.md b/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-publish-documenteditor-web-api-application-in-azure-app-service-from-visual-studio.md index 0349c76de9..5fb050b99a 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-publish-documenteditor-web-api-application-in-azure-app-service-from-visual-studio.md +++ b/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/how-to-publish-documenteditor-web-api-application-in-azure-app-service-from-visual-studio.md @@ -1,7 +1,7 @@ --- layout: post -title: How to publish documenteditor web api application in azure app service from visual studio in ##javascript-es6## Document editor control | Syncfusion -description: Learn here all about How to publish documenteditor web api application in azure app service from visual studio in Syncfusion ##javascript-es6## Document editor control of Syncfusion Essential JS 2 and more. +title: Publish Syncfusion DOCX Editor Web API to Azure App Service +description: Learn here all about publishing Document Editor Web API application in Azure App Service from Visual Studio in the Syncfusion Document Editor. platform: document-processing control: How to publish documenteditor web api application in azure app service from visual studio publishingplatform: ##javascript-es6## @@ -9,7 +9,7 @@ documentation: ug domainurl: ##DomainURL## --- -# How to publish documenteditor web api application in azure app service from visual studio in ##javascript-es6## Document editor control +# Publish Syncfusion Document Editor Web API to Azure App Service ## Prerequisites @@ -23,22 +23,22 @@ Make sure you build the project using the Build > Build Solution menu command be **Step 1:** In Solution Explorer, right-click the project and click Publish (or use the Build > Publish menu item). -![azure publish ](../images/azure_publish.png) +![Azure publish](../images/azure_publish.png) **Step 2:** If you have previously configured any publishing profiles, the Publish pane appears, in which case select Create new profile. **Step 3:** In the Pick a publish target dialog box, select App Service. -![azure target](../images/azure_target.png) +![Azure target](../images/azure_target.png) **Step 4:** Select Publish. The Create App Service dialog box appears. Sign in with your Azure account, if necessary, and then the default app service settings populate the fields. ![azure documenteditor](../images/azure_documenteditor.png) -**Step 5:** Select Create. Visual Studio deploys the app to your Azure App Service, and the web app loads in your browser with the app name at `http://.azurewebsites.net` (i.e. `http://ej2-documenteditor-server20200514102909.azurewebsites.net`). +**Step 5:** Select Create. Visual Studio deploys the app to your Azure App Service, and the web app loads in your browser with the app name at `http://.azurewebsites.net` (i.e., `http://ej2-documenteditor-server20200514102909.azurewebsites.net`). -**Step 6:** Navigate to Document Editor Web API control `http://ej2-documenteditor-server20200514102909.azurewebsites.net/api/documenteditor`. It returns the default get method response. +**Step 6:** Navigate to Document Editor Web API control `http://ej2-documenteditor-server20200514102909.azurewebsites.net/api/documenteditor`. It returns the default GET method response. -Append the app service running the URL `http://ej2-documenteditor-server20200514102909.azurewebsites.net/api/documenteditor` to the service URL in the client-side Document Editor control. For more information about how to get started with the Document Editor control, refer to this [`getting started page`](../getting-started). +Append the app service running URL `http://ej2-documenteditor-server20200514102909.azurewebsites.net/api/documenteditor` to the service URL in the client-side Document Editor control. For more information about how to get started with the Document Editor control, refer to this [`getting started page`](../getting-started). -For more information about the app container service, please look deeper into the [`Microsoft Azure App Service`](https://docs.microsoft.com/en-us/visualstudio/deployment/) for a production-ready setup. +For more information about the app container service, refer to the [`Azure App Service`](https://docs.microsoft.com/en-us/visualstudio/deployment/) for a production-ready setup. diff --git a/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/word-processor-server-docker-image-overview.md b/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/word-processor-server-docker-image-overview.md index 11a62c73e6..807f2b26f9 100644 --- a/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/word-processor-server-docker-image-overview.md +++ b/Document-Processing/Word/Word-Processor/javascript-es6/server-deployment/word-processor-server-docker-image-overview.md @@ -1,17 +1,17 @@ --- layout: post -title: Overview in JavaScript (ES6) Document editor control | Syncfusion -description: Learn here all about Word processor server docker image overview in Syncfusion JavaScript (ES6) Document editor control of Syncfusion Essential JS 2 and more. +title: Image overview in JavaScript (ES6) DOCX Editor component | Syncfusion +description: Learn here all about Word processor server docker image overview in Syncfusion JavaScript (ES6) Document Editor component of Syncfusion Essential JS 2 and more. platform: document-processing control: Word processor server docker image overview documentation: ug domainurl: ##DomainURL## --- -# Word processor server docker image overview in JavaScript (ES6) Document editor control +# Word processor server docker image overview in JavaScript (ES6) Document Editor component -The [TypeScript DOCX Editor](https://www.syncfusion.com/docx-editor-sdk/javascript-docx-editor) (Document Editor) (also known as Document Editor)** is a component with editing capabilities like Microsoft Word. It is used to create, edit, view, and print Word documents. It provides all the common word processing abilities, including editing text; formatting contents; resizing images and tables; finding and replacing text; importing, exporting, and printing Word documents; and using bookmarks and tables of contents. +The [TypeScript DOCX Editor](https://www.syncfusion.com/docx-editor-sdk/javascript-docx-editor) (Document Editor) is a component with editing capabilities like Microsoft Word. It is used to create, edit, view, and print Word documents. It provides all the common word processing abilities, including editing text; formatting contents; resizing images and tables; finding and replacing text; importing, exporting, and printing Word documents; and using bookmarks and tables of contents. -This Docker image is the predefined Docker container of Syncfusion’s Word Processor backend. You can deploy it quickly to your infrastructure. +This Docker image is the predefined Docker container of Syncfusion’s Word Processor back-end. You can deploy it quickly to your infrastructure. Word Processor is a commercial product, and it requires a valid license to use it in a production environment [`(request license or trial key).`](https://help.syncfusion.com/common/essential-studio/licensing/licensing-faq/where-can-i-get-a-license-key) @@ -21,7 +21,7 @@ The Word Processor is supported in the JavaScript, Angular, React, Vue, ASP.NET Have [`Docker`](https://www.docker.com/products/container-runtime#/download) installed in your environment: * On Windows, install [`Docker for Windows`](https://hub.docker.com/editions/community/docker-ce-desktop-windows). -* On macOS, install [`Docker for Mac`](https://hub.docker.com/editions/community/docker-ce-desktop-windows). +* On macOS, install [`Docker for Mac`](https://hub.docker.com/editions/community/docker-ce-desktop-mac). ## How to deploy Word Processor Docker image @@ -52,9 +52,9 @@ docker pull syncfusion/word-processor-server docker-compose up ``` -Now the Word Processor server Docker instance runs in the localhost with the provided port number `http://localhost:6002`. Open this link in a browser and navigate to the Word Processor Web API control `http://localhost:6002/api/documenteditor`. It returns the default get method response. +Now the Word Processor server Docker instance runs in the localhost with the provided port number `http://localhost:6002`. Open this link in a browser and navigate to the Word Processor Web API control `http://localhost:6002/api/documenteditor`. It returns the default GET method response. -**Step 4:** Append the Docker instance running the URL `(http://localhost:6002/api/documenteditor)` to the service URL in the client-side Word Processor control. For more information about how to get started with the Word Processor control, refer to this [`getting started page.`](../getting-started) +**Step 4:** Append the Docker instance running URL `(http://localhost:6002/api/documenteditor)` to the service URL in the client-side Word Processor control. For more information about how to get started with the Word Processor control, refer to this [`getting started page.`](../getting-started). ``` @@ -103,7 +103,7 @@ Now the Word Processor server Docker instance runs in the localhost with the pro