diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index f32901b5610..2c31711825e 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -14,21 +14,21 @@ religion, or sexual identity and orientation. Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* Using sexualized language or imagery and unwelcome sexual attention or +* Using sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a +* Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities diff --git a/.github/ISSUE_TEMPLATE/BUG.md b/.github/ISSUE_TEMPLATE/BUG.md index 8958d17dafc..682d9318bdd 100644 --- a/.github/ISSUE_TEMPLATE/BUG.md +++ b/.github/ISSUE_TEMPLATE/BUG.md @@ -14,8 +14,8 @@ about: Create an issue about a bug on the devdocs website 1. First Step -2. Second Step -3. Etc. +1. Second Step +1. Etc. ## Expected result diff --git a/.github/ISSUE_TEMPLATE/COMMUNITY_ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/COMMUNITY_ISSUE_TEMPLATE.md index 741cb2f6de7..17b36717a9a 100644 --- a/.github/ISSUE_TEMPLATE/COMMUNITY_ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE/COMMUNITY_ISSUE_TEMPLATE.md @@ -9,9 +9,9 @@ about: Create an issue related to a community engineering effort Type of Doc: -- [ ] New topic -- [ ] Topic Update, Devdoc link: -- [ ] Other +- [ ] New topic +- [ ] Topic Update, Devdoc link: +- [ ] Other Magento 2 GitHub Issue: https://github.com/magento/devdocs/issues/link @@ -19,18 +19,18 @@ Magento 2 GitHub PR: https://github.com/magento/devdocs/pull/link Magento 2 version: -- [ ] 2.1.X -- [ ] 2.2.X -- [ ] 2.3.X -- [ ] back port -- [ ] forward port +- [ ] 2.1.X +- [ ] 2.2.X +- [ ] 2.3.X +- [ ] back port +- [ ] forward port Notifications of Changes: -- [ ] Changes to Admin interface? -- [ ] New software requirements? -- [ ] New REST endpoints or updated GraphQL query syntax? -- [ ] New command line option? +- [ ] Changes to Admin interface? +- [ ] New software requirements? +- [ ] New REST endpoints or updated GraphQL query syntax? +- [ ] New command line option? ## Content diff --git a/.github/ISSUE_TEMPLATE/NEW_TOPIC.md b/.github/ISSUE_TEMPLATE/NEW_TOPIC.md index deb978c8ef7..48969c8f711 100644 --- a/.github/ISSUE_TEMPLATE/NEW_TOPIC.md +++ b/.github/ISSUE_TEMPLATE/NEW_TOPIC.md @@ -15,10 +15,10 @@ about: Create a request to add missing information to devdocs -- [ ] The topic provides an explanation of how ____ works. -- [ ] The topic provides steps for ____. -- [ ] The topic contains code samples that shows ____. -- [ ] Other (please specify) +- [ ] The topic provides an explanation of how ____ works. +- [ ] The topic provides steps for ____. +- [ ] The topic contains code samples that shows ____. +- [ ] Other (please specify) ## Additional information/resources diff --git a/.github/MAINTAINER_GUIDELINES.md b/.github/MAINTAINER_GUIDELINES.md index e3d093918b8..0837513ae75 100644 --- a/.github/MAINTAINER_GUIDELINES.md +++ b/.github/MAINTAINER_GUIDELINES.md @@ -17,11 +17,11 @@ Labels are important because they help us identify pull requests and ensure that Here is a brief summary of the most important labels: -- `New Topic`: Entirely new documents -- `Major Update`: Significant new info: new section in existing topic, etc. -- `Technical`: Changes to technical content/code/processes/naming conventions (any change to technical content) -- `Editorial`: Typos, grammatical inconsistencies, or minor rewrites -- `small changes`: See [Small changes workflow](#small-changes-workflow) +- `New Topic`: Entirely new documents +- `Major Update`: Significant new info: new section in existing topic, etc. +- `Technical`: Changes to technical content/code/processes/naming conventions (any change to technical content) +- `Editorial`: Typos, grammatical inconsistencies, or minor rewrites +- `small changes`: See [Small changes workflow](#small-changes-workflow) We also use version labels when appropriate. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 0d536d6b9e5..f048a6fd01d 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -6,13 +6,13 @@ This pull request (PR) ... -- ... +- ... ## Links to Magento source code -- ... +- ... -* `Progress: on hold` - The pull request is on hold due and will be further reviewed to accept or reject. -* `Progress: accept` - The pull request has been accepted and will be merged into mainline code. -* `Progress: reject` - The pull request has been rejected and will not be merged into mainline code. Possible reasons can include but are not limited to: issue has already been fixed in another code contribution, or there is an issue with the code contribution. +* `Progress: needs update` - The Community Engineering Team needs additional information from the reporter to properly prioritize and process the pull request. +* `Progress: on hold` - The pull request is on hold due and will be further reviewed to accept or reject. +* `Progress: accept` - The pull request has been accepted and will be merged into mainline code. +* `Progress: reject` - The pull request has been rejected and will not be merged into mainline code. Possible reasons can include but are not limited to: issue has already been fixed in another code contribution, or there is an issue with the code contribution. ### Contribution awards {:.no_toc} The level of investigation, research, and work required for a task may differ. Contribution Rewards labels indicate what type of contribution awards will be applied when completing an issue and PR. Some awards will provide higher points and rewards than others. -* `Award: complex` -* `Award: advanced` -* `Award: special achievement` -* `Award: category of expertise` -* `Award: test coverage` -* `Award: devdocs update` -* `Award: MFTF test coverage` -* `Award: bug fix` -* `Cleanup` -* `Port` +* `Award: complex` +* `Award: advanced` +* `Award: special achievement` +* `Award: category of expertise` +* `Award: test coverage` +* `Award: devdocs update` +* `Award: MFTF test coverage` +* `Award: bug fix` +* `Cleanup` +* `Port` ### Partners {:.no_toc} @@ -39,22 +39,22 @@ All partners Pull Requests should be marked with label `partners-contribution`. Example labels: -* `partners-contribution` -* `Partner: Atwix` -* `Partner: Comwrap` -* `Partner: Interactiv4` -* `Partner: Wagento` +* `partners-contribution` +* `Partner: Atwix` +* `Partner: Comwrap` +* `Partner: Interactiv4` +* `Partner: Wagento` ### Components {:.no_toc} -Component labels indicate the components affected by the Pull Request. To learn more about available components and assigned architects, see [Magento Components Assignment](https://github.com/magento/magento2/wiki/Magento-Components-Assignment). +Component labels indicate the components affected by the Pull Request. To learn more about available components and assigned architects, see [Magento Components Assignment](https://github.com/magento/architecture/wiki/Component-Assignments). Example labels: -* `Component: Catalog` -* `Component: Report` -* `Component: Checkout` +* `Component: Catalog` +* `Component: Report` +* `Component: Checkout` For edge cases, `Component: Other` and `Component: Multiple` may be used. @@ -65,43 +65,43 @@ Event labels mark recommended issues and submitted PRs for a specific event. Eve Example labels: -* `Event: mm18in` -* `Event: mm17es` -* `Event: mlau18` +* `Event: mm18in` +* `Event: mm17es` +* `Event: mlau18` ### General {:.no_toc} General labels include a variety of tasks and definitions for pull requests and issues. -* `good first issue` - Indicates a good issue for first-time contributors. -* `help wanted` - Indicates the creator or author needs help with a decision, advice for resolving, and so on. -* `triage wanted` - Indicates the issues are under triage. See this information to learn more about the [Triage Wanted program](https://github.com/magento/magento2/wiki/Triage-Wanted). +* `good first issue` - Indicates a good issue for first-time contributors. +* `help wanted` - Indicates the creator or author needs help with a decision, advice for resolving, and so on. +* `triage wanted` - Indicates the issues are under triage. See this information to learn more about the [Triage Wanted program](https://github.com/magento/magento2/wiki/Triage-Wanted). ### Issue resolution status {:.no_toc} Labels applied to issues through verification and completion. For details on the process, see [GitHub Issues Processing Workflow](https://github.com/magento/magento2/wiki/GitHub-Issues-Processing-Workflow). -* `Issue: Format is not valid` - Gate 1 failed. Automatic verification by the Automated Contributor Assistant failed and the issue needs updates. The [format](https://github.com/magento/magento2/tree/2.3-develop/.github/ISSUE_TEMPLATE) of the issue description and minimum required information is not provided: Preconditions, Steps to Reproduce, Actual Result, Expected Result. Previous label `G1 Failed`. -* `Issue: Format is valid` - Gate 1 passed. Automatic verification by the Automated Contributor Assistant passed for all issue content. Previous label `G1 Passed`. -* `Issue: Clear Description` - Gate 2 passed. The Community Engineering Team has confirmed that this issue contains the minimum required information to reproduce. Previous label `G2 Passed`. -* `Issue: Cannot Reproduce` - Gate 3 failed. The issue could not be reproduced or validated. Previous label `Cannot Reproduce`. -* `Issue: Confirmed` - Gate 3 passed. Manual verification of the issue description and reproduction steps was confirmed. Previous label `G3 Passed`. -* `Issue: Ready for Work` - Gate 4 passed. The issue is acknowledged and added to the backlog for open development. Previous label `acknowledged`. -* `Reproduced on 2.2.x` - The Community Engineering Team reproduced the issue on latest 2.2.x release. -* `Reproduced on 2.3.x` - The Community Engineering Team reproduced the issue on latest 2.3.x release. +* `Issue: Format is not valid` - Gate 1 failed. Automatic verification by the Automated Contributor Assistant failed and the issue needs updates. The [format](https://github.com/magento/magento2/tree/2.3-develop/.github/ISSUE_TEMPLATE) of the issue description and minimum required information is not provided: Preconditions, Steps to Reproduce, Actual Result, Expected Result. Previous label `G1 Failed`. +* `Issue: Format is valid` - Gate 1 passed. Automatic verification by the Automated Contributor Assistant passed for all issue content. Previous label `G1 Passed`. +* `Issue: Clear Description` - Gate 2 passed. The Community Engineering Team has confirmed that this issue contains the minimum required information to reproduce. Previous label `G2 Passed`. +* `Issue: Cannot Reproduce` - Gate 3 failed. The issue could not be reproduced or validated. Previous label `Cannot Reproduce`. +* `Issue: Confirmed` - Gate 3 passed. Manual verification of the issue description and reproduction steps was confirmed. Previous label `G3 Passed`. +* `Issue: Ready for Work` - Gate 4 passed. The issue is acknowledged and added to the backlog for open development. Previous label `acknowledged`. +* `Reproduced on 2.2.x` - The Community Engineering Team reproduced the issue on latest 2.2.x release. +* `Reproduced on 2.3.x` - The Community Engineering Team reproduced the issue on latest 2.3.x release. -* `Fixed in 2.2.x` - The issue has been fixed in one of the 2.2.x releases or in 2.2-develop branch and will be available with the upcoming patch release. -* `Fixed in 2.3.x` - The issue has been fixed in one of the 2.3.x releases or in 2.3-develop branch and will be available with the upcoming patch release. -* `non-issue` - A described behavior in the issue description is valid and shouldn't be changed in Magento code base. +* `Fixed in 2.2.x` - The issue has been fixed in one of the 2.2.x releases or in 2.2-develop branch and will be available with the upcoming patch release. +* `Fixed in 2.3.x` - The issue has been fixed in one of the 2.3.x releases or in 2.3-develop branch and will be available with the upcoming patch release. +* `non-issue` - A described behavior in the issue description is valid and shouldn't be changed in Magento code base. ### DevDocs {:.no_toc} All [contributions to DevDocs](https://github.com/magento/devdocs/blob/master/.github/CONTRIBUTING.md) receive the following labels: -* `New topic`- New topic submissions for content that has never existed on DevDocs such as tutorials, references, instructions, and so on -* `Major update` - Significant original updates to existing content -* `Technical` - Updates to the code or processes that alter the technical content of the document, such as code snippets, reference documentation, parameter names and values, and other relevant content -* `Editorial` - Fixes for typos, grammatical inconsistencies, or minor rewrites to correct inaccuracies +* `New topic`- New topic submissions for content that has never existed on DevDocs such as tutorials, references, instructions, and so on +* `Major update` - Significant original updates to existing content +* `Technical` - Updates to the code or processes that alter the technical content of the document, such as code snippets, reference documentation, parameter names and values, and other relevant content +* `Editorial` - Fixes for typos, grammatical inconsistencies, or minor rewrites to correct inaccuracies diff --git a/_includes/contributor/rewards.md b/_includes/contributor/rewards.md index dd64ac3f6b7..389695a9690 100644 --- a/_includes/contributor/rewards.md +++ b/_includes/contributor/rewards.md @@ -11,12 +11,12 @@ Due to the level of work required for developing and reviewing a PR, Contributor See the following examples for calculated reward points: -- Contributor submits PR with complex code contributions: Improvement(base) 10 points + Complex(additional) 20 points = 30 points -- Contributor submits PR with complex code and tests: Improvement(base) 10 points + Complex(additional) 20 points + Test coverage(additional) 10 points = 40 points -- Contributor submits PR port of existing merged PR: - - Original contributor: (Improvement(base) 10 points + Complex(additional) 20 points) + Author of Ported Issue 5 points = 35 points - - Porting contributor: Port(base) 5 points -- Maintainer reviews and approves PR with complex code and tests: Improvement(base) 10 points + Complex(additional) 20 points + Test coverage(additional) 10 points = 40 points +- Contributor submits PR with complex code contributions: Improvement(base) 10 points + Complex(additional) 20 points = 30 points +- Contributor submits PR with complex code and tests: Improvement(base) 10 points + Complex(additional) 20 points + Test coverage(additional) 10 points = 40 points +- Contributor submits PR port of existing merged PR: + - Original contributor: (Improvement(base) 10 points + Complex(additional) 20 points) + Author of Ported Issue 5 points = 35 points + - Porting contributor: Port(base) 5 points +- Maintainer reviews and approves PR with complex code and tests: Improvement(base) 10 points + Complex(additional) 20 points + Test coverage(additional) 10 points = 40 points Earned achievements display as labels on GitHub PRs and for each Magento Contributor, Partner, and Maintainer on [magento.com](https://magento.com/magento-contributors). @@ -54,8 +54,8 @@ Contributors and Maintainers can also earn rewards for merged submissions to the See the following examples for calculated reward points: -- Contributor submits PR with HTML formatting and typos fixes: Editorial(base) 1 point -- Contributor submits PR with code sample update and new parameter descriptions: Improvement(base) 10 points + Major update(additional) 20 points = 30 points +- Contributor submits PR with HTML formatting and typos fixes: Editorial(base) 1 point +- Contributor submits PR with code sample update and new parameter descriptions: Improvement(base) 10 points + Major update(additional) 20 points = 30 points ### Base achievements {:.no_toc} diff --git a/_includes/design/icon-fonts.md b/_includes/design/icon-fonts.md index 486f6b537a4..46c83b2cfe9 100644 --- a/_includes/design/icon-fonts.md +++ b/_includes/design/icon-fonts.md @@ -2,8 +2,8 @@ If you want to add your own icons, each icon will need to be in its own SVG file 1. Go to [https://icomoon.io/app/](https://icomoon.io/app/) or download this app in Chrome web store. -2. Upload your icons in SVG format into the app. +1. Upload your icons in SVG format into the app. -3. Specify desired font names and specify the Unicode characters to map the icons. Setting the icons to Private User Area will disable screen-readers or other accessibility tools to read your icon's characters (read "Unicode" section here). +1. Specify desired font names and specify the Unicode characters to map the icons. Setting the icons to Private User Area will disable screen-readers or other accessibility tools to read your icon's characters (read "Unicode" section here). -4. Then initialize a download in the app to generate the icon font and [CSS](https://glossary.magento.com/css) style sheet. +1. Then initialize a download in the app to generate the icon font and [CSS](https://glossary.magento.com/css) style sheet. diff --git a/_includes/graphql/customizable-option-input.md b/_includes/graphql/customizable-option-input.md index 4ec894093cb..94d2341df1e 100644 --- a/_includes/graphql/customizable-option-input.md +++ b/_includes/graphql/customizable-option-input.md @@ -1,4 +1,4 @@ Attribute | Data Type | Description --- | --- | --- `id` | Int! | A unique ID assigned to the customizable option -`value_string` | String! | A value assigned to the the customizable option \ No newline at end of file +`value_string` | String! | A value assigned to the customizable option \ No newline at end of file diff --git a/_includes/install/allowoverrides22.md b/_includes/install/allowoverrides22.md index f1b44641c14..f925910ea58 100644 --- a/_includes/install/allowoverrides22.md +++ b/_includes/install/allowoverrides22.md @@ -10,40 +10,40 @@ Failure to enable these settings typically results in no styles displaying on yo * Ubuntu: `vim /etc/apache2/sites-available/default` * CentOS: `vim /etc/httpd/conf/httpd.conf` -2. Locate the block that starts with: +1. Locate the block that starts with: * Ubuntu 12: `` * Ubuntu 14 or CentOS: `` -3. Change the value of `AllowOverride` to ``. +1. Change the value of `AllowOverride` to ``. - An example for Ubuntu 12 follows. + An example for Ubuntu 12 follows. - ```conf - - Options Indexes FollowSymLinks MultiViews - AllowOverride - Order allow,deny - Allow from all - - ``` + ```conf + + Options Indexes FollowSymLinks MultiViews + AllowOverride + Order allow,deny + Allow from all + + ``` {:.bs-callout .bs-callout-info} The preceding values for `Order` might not work in all cases. For more information, see the Apache documentation ([2.2](https://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#order)), [2.4](https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html#order)). -4. Save the file and exit the text editor. -5. *Ubuntu only*. Configure Apache to use the `mod_rewrite` module. +1. Save the file and exit the text editor. +1. *Ubuntu only*. Configure Apache to use the `mod_rewrite` module. - ```bash - cd /etc/apache2/mods-enabled - ``` + ```bash + cd /etc/apache2/mods-enabled + ``` - ```bash - ln -s ../mods-available/rewrite.load - ``` + ```bash + ln -s ../mods-available/rewrite.load + ``` -6. If you changed Apache settings, restart Apache. +1. If you changed Apache settings, restart Apache. - ```bash - service apache2 restart - ``` + ```bash + service apache2 restart + ``` diff --git a/_includes/install/allowoverrides24.md b/_includes/install/allowoverrides24.md index a68d94317b5..f5c8c5b2c9b 100644 --- a/_includes/install/allowoverrides24.md +++ b/_includes/install/allowoverrides24.md @@ -5,33 +5,33 @@ Magento uses server rewrites and `.htaccess` to provide directory-level instruct {:.bs-callout .bs-callout-info} Failure to enable these settings typically results in no styles displaying on your storefront or Admin. -1. Enable the Apache rewrite module: +1. Enable the Apache rewrite module: - ```bash - a2enmod rewrite - ``` + ```bash + a2enmod rewrite + ``` -1. To enable Magento to use the distributed `.htaccess` configuration file, see the guidelines in the [Apache 2.4 documentation](http://httpd.apache.org/docs/current/mod/mod_rewrite.html). +1. To enable Magento to use the distributed `.htaccess` configuration file, see the guidelines in the [Apache 2.4 documentation](http://httpd.apache.org/docs/current/mod/mod_rewrite.html). - Note that in Apache 2.4, the server's default site configuration file is `/etc/apache2/sites-available/000-default.conf`. + Note that in Apache 2.4, the server's default site configuration file is `/etc/apache2/sites-available/000-default.conf`. - For example, you can add the following to the end of `000-default.conf`: + For example, you can add the following to the end of `000-default.conf`: - ```terminal - - AllowOverride - - ``` + ```terminal + + AllowOverride + + ``` - {:.bs-callout .bs-callout-info} - In some cases, additional parameters might be required. For more information, see the [Apache 2.4 documentation](https://httpd.apache.org/docs/2.4/mod/mod_access_compat.html#order). + {:.bs-callout .bs-callout-info} + In some cases, additional parameters might be required. For more information, see the [Apache 2.4 documentation](https://httpd.apache.org/docs/2.4/mod/mod_access_compat.html#order). -1. If you changed Apache settings, restart Apache: +1. If you changed Apache settings, restart Apache: - ```bash - service apache2 restart - ``` + ```bash + service apache2 restart + ``` - {:.bs-callout .bs-callout-info} - - If you upgraded from an earlier Apache version, first look for `` or `` in `000-default.conf`. - - You must change the value of `AllowOverride` in the directive for the directory to which you expect to install the Magento software. For example, to install in the web server docroot, edit the directive in ``. + {:.bs-callout .bs-callout-info} + - If you upgraded from an earlier Apache version, first look for `` or `` in `000-default.conf`. + - You must change the value of `AllowOverride` in the directive for the directory to which you expect to install the Magento software. For example, to install in the web server docroot, edit the directive in ``. diff --git a/_includes/install/auth-json.md b/_includes/install/auth-json.md index dc4416a96ab..28300a173e6 100644 --- a/_includes/install/auth-json.md +++ b/_includes/install/auth-json.md @@ -21,7 +21,7 @@ When choosing token permissions, select all checkboxes in the `repo` scope. Comp ### Create `auth.json` file 1. Log in to your Magento server as the [Magento file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html). -2. Create the `auth.json` file in the user's home directory. For example, if `magento_user` is your Unix username, then create `/home/magento_user/.composer/auth.json`. +1. Create the `auth.json` file in the user's home directory. For example, if `magento_user` is your Unix username, then create `/home/magento_user/.composer/auth.json`. ### Edit `auth.json` file diff --git a/_includes/install/auth-tokens-get.md b/_includes/install/auth-tokens-get.md index 9d8e24c4489..eb1dd5aaed5 100644 --- a/_includes/install/auth-tokens-get.md +++ b/_includes/install/auth-tokens-get.md @@ -3,15 +3,15 @@ The `repo.magento.com` repository is where Magento 2 and third-party Composer pa To create authentication keys: 1. Log in to the [Magento Marketplace](https://marketplace.magento.com){:target="_blank"}. If you don't have an account, click **Register**. -2. Click your account name in the top-right of the page and select **My Profile**. +1. Click your account name in the top-right of the page and select **My Profile**. -3. Click **Access Keys** in the Marketplace tab. +1. Click **Access Keys** in the Marketplace tab. ![Get your secure access keys on Magento Marketplace]({{ site.baseurl }}/common/images/cloud_access-key.png){:width="500px"} -4. Click **Create a New Access Key**. Enter a specific name for the keys (e.g., the name of the developer receiving the keys) and click **OK**. +1. Click **Create a New Access Key**. Enter a specific name for the keys (e.g., the name of the developer receiving the keys) and click **OK**. -5. New public and private keys are now associated with your account that you can click to copy. Save this information or keep the page open when working with your Magento project. Use the **Public key** as your username and the **Private key** as your password. +1. New public and private keys are now associated with your account that you can click to copy. Save this information or keep the page open when working with your Magento project. Use the **Public key** as your username and the **Private key** as your password. ### Manage your authentication keys @@ -21,12 +21,22 @@ You can also disable or delete authentication keys. For example, you can disable * To enable a previously disabled key: Click **Enable**. * To delete keys: Click **Delete**. -You cannot delete or disable keys you created by signing in to your [magento.com account](https://www.magentocommerce.com/products/customer/account/login){:target="_blank"}. To manage those keys: +### Manage SSH access token + +To download Magento releases using SSH, you must generate a Downloads Access Token. To generate a token: 1. Log in to your [magento.com account](https://www.magentocommerce.com/products/customer/account/login){:target="_blank"}. -2. Click **My Account** at the top of the page. -3. Click **Account Settings** > **Downloads Access Token**. +1. Click **My Account** at the top of the page. +1. Click **Account Settings** > **Downloads Access Token**. ![Access your keys]({{ site.baseurl }}/common/images/connect_keys1.png){:width="200px"} -4. Click **Generate new token** to replace and disable an existing token. +1. Click **Generate new token** to replace and disable an existing token. + +You must use your MAGEID plus your token to download a release. Your MAGEID is displayed at the top-left of your account page. + +For example: + +```bash +curl -k https://MAGEID:TOKEN@www.magentocommerce.com/products/downloads/info/help +``` diff --git a/_includes/install/before-you-begin-cli.md b/_includes/install/before-you-begin-cli.md index d05c91be90a..cfca607d9bd 100644 --- a/_includes/install/before-you-begin-cli.md +++ b/_includes/install/before-you-begin-cli.md @@ -1,5 +1,5 @@ Before you begin, make sure that: -1. Your system meets the requirements discussed in [Magento System Requirements]({{ page.baseurl }}/install-gde/system-requirements.html) -1. You completed all prerequisite tasks discussed in [Prerequisites]({{ page.baseurl }}/install-gde/prereq/prereq-overview.html). -1. After you log in to the Magento server, switch to a user that has permissions to write to the Magento file system. One way to do this is discussed in [switch to the Magento file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html). +1. Your system meets the requirements discussed in [Magento System Requirements]({{ page.baseurl }}/install-gde/system-requirements.html) +1. You completed all prerequisite tasks discussed in [Prerequisites]({{ page.baseurl }}/install-gde/prereq/prereq-overview.html). +1. After you log in to the Magento server, switch to a user that has permissions to write to the Magento file system. One way to do this is discussed in [switch to the Magento file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html). diff --git a/_includes/install/before-you-begin-web.md b/_includes/install/before-you-begin-web.md index 7cafc30e22a..48582687335 100644 --- a/_includes/install/before-you-begin-web.md +++ b/_includes/install/before-you-begin-web.md @@ -1,6 +1,6 @@ Before you begin, make sure that: -1. Your system meets the requirements discussed in [Magento System Requirements]({{ page.baseurl }}/install-gde/system-requirements.html). -1. You completed all prerequisite tasks discussed in [Prerequisites]({{ page.baseurl }}/install-gde/prereq/prereq-overview.html). -1. You started your installation as discussed in [Getting started]({{ page.baseurl }}/install-gde/install/web/install-web.html#instgde-install-magento-web-step0). -1. You completed all preceding steps in the Setup Wizard. +1. Your system meets the requirements discussed in [Magento System Requirements]({{ page.baseurl }}/install-gde/system-requirements.html). +1. You completed all prerequisite tasks discussed in [Prerequisites]({{ page.baseurl }}/install-gde/prereq/prereq-overview.html). +1. You started your installation as discussed in [Getting started]({{ page.baseurl }}/install-gde/install/web/install-web.html#instgde-install-magento-web-step0). +1. You completed all preceding steps in the Setup Wizard. diff --git a/_includes/install/composer-clone.md b/_includes/install/composer-clone.md index 67d1eaa1e2a..edd419cdb82 100644 --- a/_includes/install/composer-clone.md +++ b/_includes/install/composer-clone.md @@ -13,14 +13,14 @@ To install Composer: 1. Change to or create an empty directory on your Magento server. -2. Enter the following commands: +1. Enter the following commands: - ```bash - curl -sS https://getcomposer.org/installer | php - ``` + ```bash + curl -sS https://getcomposer.org/installer | php + ``` - ```bash - mv composer.phar /usr/local/bin/composer - ``` + ```bash + mv composer.phar /usr/local/bin/composer + ``` For additional installation options, see the [Composer installation documentation](https://getcomposer.org/download/). diff --git a/_includes/install/composer-overview.md b/_includes/install/composer-overview.md index 85df2547344..095a3742597 100644 --- a/_includes/install/composer-overview.md +++ b/_includes/install/composer-overview.md @@ -1,10 +1,10 @@ We use [Composer](https://getcomposer.org/){:target="_blank"} to manage Magento components and their dependencies. Using Composer to get the Magento software [metapackage](https://glossary.magento.com/metapackage) provides the following advantages: -- Reuse third-party libraries without bundling them with source code -- Reduce extension conflicts and compatibility issues by using a component-based architecture with robust dependency management -- Adhere to [PHP-Framework Interoperability Group (FIG)](https://www.php-fig.org/) standards -- Repackage Magento Open Source with other components -- Use the Magento software in a production environment +- Reuse third-party libraries without bundling them with source code +- Reduce extension conflicts and compatibility issues by using a component-based architecture with robust dependency management +- Adhere to [PHP-Framework Interoperability Group (FIG)](https://www.php-fig.org/) standards +- Repackage Magento Open Source with other components +- Use the Magento software in a production environment {:.bs-callout .bs-callout-warning} You must create a Composer project from our metapackage if you want to use the Magento Web Setup Wizard to upgrade the Magento software and third-party extensions. diff --git a/_includes/install/enable-disable-modules.md b/_includes/install/enable-disable-modules.md index 7957de0cec1..ecf2810bcf7 100644 --- a/_includes/install/enable-disable-modules.md +++ b/_includes/install/enable-disable-modules.md @@ -6,15 +6,15 @@ In addition, there might be *conflicting* modules that cannot both be enabled at Examples: -- Module A depends on Module B. You cannot disable Module B unless you first disable Module A. +- Module A depends on Module B. You cannot disable Module B unless you first disable Module A. -- Module A depends on Module B, both of which are disabled. You must enable module B before you can enable module A. +- Module A depends on Module B, both of which are disabled. You must enable module B before you can enable module A. -- Module A conflicts with Module B. You can disable Module A and Module B, or you can disable either module but you *cannot* enable Module A and Module B at the same time. +- Module A conflicts with Module B. You can disable Module A and Module B, or you can disable either module but you *cannot* enable Module A and Module B at the same time. -- Dependencies are declared in the `require` field in Magento's `composer.json` file for each module. Conflicts are declared in the `conflict` field in modules' `composer.json` files. We use that information to build a dependency graph: `A->B` means module A depends on module B. +- Dependencies are declared in the `require` field in Magento's `composer.json` file for each module. Conflicts are declared in the `conflict` field in modules' `composer.json` files. We use that information to build a dependency graph: `A->B` means module A depends on module B. -- A *dependency chain* is the path from a module to another one. For example, if module A depends on module B and module B depends on module C, then the dependency chain is `A->B->C`. +- A *dependency chain* is the path from a module to another one. For example, if module A depends on module B and module B depends on module C, then the dependency chain is `A->B->C`. If you attempt to enable or disable a module that depends on other modules, the dependency graph displays in the error message. diff --git a/_includes/install/file-system-perms-before_22.md b/_includes/install/file-system-perms-before_22.md index e989f1b0dd1..0f1b8022858 100644 --- a/_includes/install/file-system-perms-before_22.md +++ b/_includes/install/file-system-perms-before_22.md @@ -27,8 +27,8 @@ This section discusses how to set ownership and permissions for your own server After you've performed the other tasks in this topic, enter one of the following commands to switch to that user: -* Ubuntu: `su ` -* CentOS: `su - ` +* Ubuntu: `su ` +* CentOS: `su - ` For example, diff --git a/_includes/install/file-system-perms-oneuser.md b/_includes/install/file-system-perms-oneuser.md index 797cddcce33..a8704fbee71 100644 --- a/_includes/install/file-system-perms-oneuser.md +++ b/_includes/install/file-system-perms-oneuser.md @@ -3,11 +3,11 @@ To set permissions before you install the Magento software: 1. Log in to your Magento server. 1. Use a file manager application provided by your shared hosting provider to verify write permissions are set on the following directories: - * `vendor` (Composer or compressed archive installation) - * `app/etc` - * `pub/static` - * `var` - * Any other static resources + * `vendor` (Composer or compressed archive installation) + * `app/etc` + * `pub/static` + * `var` + * Any other static resources 1. If you have command-line access, enter the following commands in the order shown: @@ -29,20 +29,20 @@ To set permissions before you install the Magento software: 1. To optionally enter all commands on one line, enter the following, assuming Magento is installed in `/var/www/html/magento2`: - ```bash - cd /var/www/html/magento2 && find var vendor pub/static pub/media app/etc -type f -exec chmod u+w {} + && find var vendor pub/static pub/media app/etc -type d -exec chmod u+w {} + && chmod u+x bin/magento - ``` + ```bash + cd /var/www/html/magento2 && find var vendor pub/static pub/media app/etc -type f -exec chmod u+w {} + && find var vendor pub/static pub/media app/etc -type d -exec chmod u+w {} + && chmod u+x bin/magento + ``` -If you haven't done so already, get the Magento software in one of the following ways: + If you haven't done so already, get the Magento software in one of the following ways: -* [Compressed archive]({{ page.baseurl }}/install-gde/prereq/zip_install.html) -* [Composer metapackage]({{ page.baseurl }}/install-gde/composer.html) -* [Clone the repository (contributing developers only)]({{ page.baseurl }}/install-gde/prereq/dev_install.html) + * [Compressed archive]({{ page.baseurl }}/install-gde/prereq/zip_install.html) + * [Composer metapackage]({{ page.baseurl }}/install-gde/composer.html) + * [Clone the repository (contributing developers only)]({{ page.baseurl }}/install-gde/prereq/dev_install.html) 1. After you have set file system ownership and permissions, continue with any of the following: -* [Command-line installation]({{ page.baseurl }}/install-gde/install/cli/install-cli.html) -* [Setup Wizard installation]({{ page.baseurl }}/install-gde/install/web/install-web.html) + * [Command-line installation]({{ page.baseurl }}/install-gde/install/cli/install-cli.html) + * [Setup Wizard installation]({{ page.baseurl }}/install-gde/install/web/install-web.html) {:.bs-callout .bs-callout-info} To further restrict permissions after installing the Magento software, you [configure a Magento umask]({{ page.baseurl }}/install-gde/install/post-install-umask.html). diff --git a/_includes/install/file-system-perms-oneuser_22.md b/_includes/install/file-system-perms-oneuser_22.md index 83dfc44c727..705adc0579d 100644 --- a/_includes/install/file-system-perms-oneuser_22.md +++ b/_includes/install/file-system-perms-oneuser_22.md @@ -3,30 +3,30 @@ To set permissions before you install the Magento software: 1. Log in to your Magento server. 1. Use a file manager application provided by your shared hosting provider to verify write permissions are set on the following directories: - * `vendor` (Composer or compressed archive installation) - * `app/etc` - * `pub/static` - * `var` - * `generated` - * Any other static resources + * `vendor` (Composer or compressed archive installation) + * `app/etc` + * `pub/static` + * `var` + * `generated` + * Any other static resources 1. If you have command-line access, enter the following commands in the order shown: - ```bash - cd + ```bash + cd ``` - ```bash - find var generated vendor pub/static pub/media app/etc -type f -exec chmod u+w {} + - ``` + ```bash + find var generated vendor pub/static pub/media app/etc -type f -exec chmod u+w {} + + ``` - ```bash - find var generated vendor pub/static pub/media app/etc -type d -exec chmod u+w {} + - ``` + ```bash + find var generated vendor pub/static pub/media app/etc -type d -exec chmod u+w {} + + ``` - ```bash - chmod u+x bin/magento - ``` + ```bash + chmod u+x bin/magento + ``` To optionally enter all commands on one line, enter the following assuming Magento is installed in `/var/www/html/magento2`: @@ -36,14 +36,14 @@ cd /var/www/html/magento2 && find var generated vendor pub/static pub/media app/ 1. If you haven't done so already, get the Magento software in one of the following ways: - * [Compressed archive]({{ page.baseurl }}/install-gde/prereq/zip_install.html) - * [Composer metapackage]({{ page.baseurl }}/install-gde/composer.html) - * [Clone the repository (contributing developers only)]({{ page.baseurl }}/install-gde/prereq/dev_install.html) + * [Compressed archive]({{ page.baseurl }}/install-gde/prereq/zip_install.html) + * [Composer metapackage]({{ page.baseurl }}/install-gde/composer.html) + * [Clone the repository (contributing developers only)]({{ page.baseurl }}/install-gde/prereq/dev_install.html) 1. After you have set file system ownership and permissions, continue with any of the following: - * [Command-line installation]({{ page.baseurl }}/install-gde/install/cli/install-cli.html) - * [Setup Wizard installation]({{ page.baseurl }}/install-gde/install/web/install-web.html) + * [Command-line installation]({{ page.baseurl }}/install-gde/install/cli/install-cli.html) + * [Setup Wizard installation]({{ page.baseurl }}/install-gde/install/web/install-web.html) {:.bs-callout .bs-callout-info} To further restrict permissions after installing the Magento software, you [configure a Magento umask]({{ page.baseurl }}/install-gde/install/post-install-umask.html). diff --git a/_includes/install/file-system-perms-twouser.md b/_includes/install/file-system-perms-twouser.md index c5e85d81dd0..87bedddfa0a 100644 --- a/_includes/install/file-system-perms-twouser.md +++ b/_includes/install/file-system-perms-twouser.md @@ -1,11 +1,11 @@ Complete the following tasks in the order shown: -* [About the shared group](#mage-owner-about-group) -* [Step 1: Create the Magento file system owner and give the user a strong password](#mage-owner-create-user) -* [Step 2: Find the web server group](#install-update-depend-user-findgroup) -* [Step 3: Put the Magento file system owner in the web server's group](#install-update-depend-user-add2group) -* [Step 4: Get the Magento software](#perms-get-software) -* [Step 5: Set ownership and permissions for the shared group](#perms-set-two-users) +* [About the shared group](#mage-owner-about-group) +* [Step 1: Create the Magento file system owner and give the user a strong password](#mage-owner-create-user) +* [Step 2: Find the web server group](#install-update-depend-user-findgroup) +* [Step 3: Put the Magento file system owner in the web server's group](#install-update-depend-user-add2group) +* [Step 4: Get the Magento software](#perms-get-software) +* [Step 5: Set ownership and permissions for the shared group](#perms-set-two-users) ### About the shared group {#mage-owner-about-group} @@ -54,7 +54,7 @@ Because the point of creating this user is to provide added security, make sure To find the web server user's group: -* CentOS: +* CentOS: ```bash grep -E -i '^user|^group' /etc/httpd/conf/httpd.conf @@ -68,7 +68,7 @@ grep -Ei '^user|^group' /etc/httpd/conf/httpd.conf Typically, the user and group name are both `apache`. -* Ubuntu: `ps aux | grep apache` to find the apache user, then `groups ` to find the group. +* Ubuntu: `ps aux | grep apache` to find the apache user, then `groups ` to find the group. Typically, the username and the group name are both `www-data`. @@ -76,8 +76,8 @@ Typically, the username and the group name are both `www-data`. To put the Magento file system owner in the web server's group (assuming the typical Apache group name for CentOS and Ubuntu), enter the following command as a user with `root` privileges: -* CentOS: `usermod -a -G apache ` -* Ubuntu: `usermod -a -G www-data ` +* CentOS: `usermod -a -G apache ` +* Ubuntu: `usermod -a -G www-data ` {:.bs-callout .bs-callout-info} The `-a -G` options are important because they add `apache` or `www-data` as a _secondary_ group to the user account, which preserves the user's _primary_ group. Adding a secondary group to a user account helps [restrict file ownership and permissions](#perms-set-two-users) to ensure members of a shared group only have access to certain files. @@ -105,16 +105,16 @@ Typically, the username and primary group name are the same. To complete the task, restart the web server: -* Ubuntu: `service apache2 restart` -* CentOS: `service httpd restart` +* Ubuntu: `service apache2 restart` +* CentOS: `service httpd restart` ### Step 4: Get the Magento software {#perms-get-software} If you haven't done so already, get the Magento software in one of the following ways: -* [Compressed archive]({{ page.baseurl }}/install-gde/prereq/zip_install.html) -* [Composer metapackage]({{ page.baseurl }}/install-gde/composer.html) -* [Clone the repository (contributing developers only)]({{ page.baseurl }}/install-gde/prereq/dev_install.html) +* [Compressed archive]({{ page.baseurl }}/install-gde/prereq/zip_install.html) +* [Composer metapackage]({{ page.baseurl }}/install-gde/composer.html) +* [Clone the repository (contributing developers only)]({{ page.baseurl }}/install-gde/prereq/dev_install.html) ### Step 5: Set ownership and permissions for the shared group {#perms-set-two-users} @@ -149,5 +149,5 @@ chmod u+x bin/magento After you have set file system ownership and permissions, continue with any of the following: -* [Command-line installation]({{ page.baseurl }}/install-gde/install/cli/install-cli.html) -* [Setup Wizard installation]({{ page.baseurl }}/install-gde/install/web/install-web.html) +* [Command-line installation]({{ page.baseurl }}/install-gde/install/cli/install-cli.html) +* [Setup Wizard installation]({{ page.baseurl }}/install-gde/install/web/install-web.html) diff --git a/_includes/install/file-system-perms-twouser_22.md b/_includes/install/file-system-perms-twouser_22.md index 90a9cfe8419..b7d42318828 100644 --- a/_includes/install/file-system-perms-twouser_22.md +++ b/_includes/install/file-system-perms-twouser_22.md @@ -1,11 +1,11 @@ Complete the following tasks in the order shown: -* [About the shared group](#mage-owner-about-group) -* [Step 1: Create the Magento file system owner and give the user a strong password](#mage-owner-create-user) -* [Step 2: Find the web server group](#install-update-depend-user-findgroup) -* [Step 3: Put the Magento file system owner in the web server's group](#install-update-depend-user-add2group) -* [Step 4: Get the Magento software](#perms-get-software) -* [Step 5: Set ownership and permissions for the shared group](#perms-set-two-users) +* [About the shared group](#mage-owner-about-group) +* [Step 1: Create the Magento file system owner and give the user a strong password](#mage-owner-create-user) +* [Step 2: Find the web server group](#install-update-depend-user-findgroup) +* [Step 3: Put the Magento file system owner in the web server's group](#install-update-depend-user-add2group) +* [Step 4: Get the Magento software](#perms-get-software) +* [Step 5: Set ownership and permissions for the shared group](#perms-set-two-users) ### About the shared group {#mage-owner-about-group} @@ -54,7 +54,7 @@ Because the point of creating this user is to provide added security, make sure To find the web server user's group: -* CentOS: +* CentOS: ```bash grep -E -i '^user|^group' /etc/httpd/conf/httpd.conf @@ -68,7 +68,7 @@ grep -Ei '^user|^group' /etc/httpd/conf/httpd.conf Typically, the user and group name are both `apache`. -* Ubuntu: `ps aux | grep apache` to find the apache user, then `groups ` to find the group. +* Ubuntu: `ps aux | grep apache` to find the apache user, then `groups ` to find the group. Typically, the username and the group name are both `www-data`. @@ -76,8 +76,8 @@ Typically, the username and the group name are both `www-data`. To put the Magento file system owner in the web server's primary group (assuming the typical Apache group name for CentOS and Ubuntu), enter the following command as a user with `root` privileges: -* CentOS: `usermod -a -G apache ` -* Ubuntu: `usermod -a -G www-data ` +* CentOS: `usermod -a -G apache ` +* Ubuntu: `usermod -a -G www-data ` {:.bs-callout .bs-callout-info} The `-a -G` options are important because they add `apache` or `www-data` as a _secondary_ group to the user account, which preserves the user's _primary_ group. Adding a secondary group to a user account helps [restrict file ownership and permissions](#perms-set-two-users) to ensure members of a shared group only have access to certain files. @@ -105,16 +105,16 @@ Typically, the username and primary group name are the same. To complete the task, restart the web server: -* Ubuntu: `service apache2 restart` -* CentOS: `service httpd restart` +* Ubuntu: `service apache2 restart` +* CentOS: `service httpd restart` ### Step 4: Get the Magento software {#perms-get-software} If you haven't done so already, get the Magento software in one of the following ways: -* [Compressed archive]({{ page.baseurl }}/install-gde/prereq/zip_install.html) -* [Composer metapackage]({{ page.baseurl }}/install-gde/composer.html) -* [Clone the repository (contributing developers only)]({{ page.baseurl }}/install-gde/prereq/dev_install.html) +* [Compressed archive]({{ page.baseurl }}/install-gde/prereq/zip_install.html) +* [Composer metapackage]({{ page.baseurl }}/install-gde/composer.html) +* [Clone the repository (contributing developers only)]({{ page.baseurl }}/install-gde/prereq/dev_install.html) ### Step 5: Set ownership and permissions for the shared group {#perms-set-two-users} @@ -149,5 +149,5 @@ chmod u+x bin/magento After you have set file system ownership and permissions, continue with any of the following: -* [Command-line installation]({{ page.baseurl }}/install-gde/install/cli/install-cli.html) -* [Setup Wizard installation]({{ page.baseurl }}/install-gde/install/web/install-web.html) +* [Command-line installation]({{ page.baseurl }}/install-gde/install/cli/install-cli.html) +* [Setup Wizard installation]({{ page.baseurl }}/install-gde/install/web/install-web.html) diff --git a/_includes/install/file-system-umask-over.md b/_includes/install/file-system-umask-over.md index a36a9e24b89..3f11d959a08 100644 --- a/_includes/install/file-system-umask-over.md +++ b/_includes/install/file-system-umask-over.md @@ -19,7 +19,7 @@ The Magento file system owner is sometimes referred to as the *command-line user The Magento file system owner is any of the following: -* A single user, which is typical of shared hosting. +* A single user, which is typical of shared hosting. Shared hosting providers enable you to log in to the Magento server as one user. This user can log in, transfer files using FTP, and this user also runs the web server. diff --git a/_includes/install/file-system-umask.md b/_includes/install/file-system-umask.md index 667582fcc70..86871a1097a 100644 --- a/_includes/install/file-system-umask.md +++ b/_includes/install/file-system-umask.md @@ -7,25 +7,25 @@ We recommend changing the umask on a one-user or shared hosting system only. If The default umask (with no `magento_umask` specified) is `002`, which means: -* 775 for directories, which means full control by the user, full control by the group, and enables everyone to traverse the directory. These permissions are typically required by shared hosting providers. +* 775 for directories, which means full control by the user, full control by the group, and enables everyone to traverse the directory. These permissions are typically required by shared hosting providers. -* 664 for files, which means writable by the user, writable by the group, and read-only for everyone else +* 664 for files, which means writable by the user, writable by the group, and read-only for everyone else A common suggestion is to use a value of `022` in the `magento_umask` file, which means: -* 755 for directories: full control for the user, and everyone else can traverse directories. -* 644 for files: read-write permissions for the user, and read-only for everyone else. +* 755 for directories: full control for the user, and everyone else can traverse directories. +* 644 for files: read-write permissions for the user, and read-only for everyone else. To set `magento_umask`: 1. In a command line terminal, log in to your Magento server as a [Magento file system owner][]. -2. Navigate to the Magento install directory: +1. Navigate to the Magento install directory: ```bash cd ``` -3. Use the following command to create a file named `magento_umask` and write the `umask` value to it. +1. Use the following command to create a file named `magento_umask` and write the `umask` value to it. ```bash echo > magento_umask @@ -33,7 +33,7 @@ To set `magento_umask`: You should now have a file named `magento_umask` in the `` with the only content being the `umask` number. -4. Log out and log back in as the [Magento file system owner][] to apply the changes. +1. Log out and log back in as the [Magento file system owner][] to apply the changes. diff --git a/_includes/install/flow-diagram.md b/_includes/install/flow-diagram.md index 5248c048fa3..b3b3ce273ea 100644 --- a/_includes/install/flow-diagram.md +++ b/_includes/install/flow-diagram.md @@ -9,7 +9,7 @@ The diagram shows the following: * [2.2.x system requirements]({{ site.gdeurl22 }}install-gde/system-requirements-tech.html) * [2.3.x system requirements]({{ site.gdeurl23 }}install-gde/system-requirements-tech.html) -2. Get the Magento software. +1. Get the Magento software. * For simplicity, get a compressed {{site.data.var.ce}} or {{site.data.var.ee}} [archive]({{ page.baseurl }}/install-gde/prereq/zip_install.html), extract it on your Magento server, and start your installation. @@ -20,7 +20,7 @@ The diagram shows the following: {:.bs-callout .bs-callout-info} To be able to use the Web Setup Wizard to install or upgrade the Magento software, or to manage extensions you get from Magento Marketplace, you must either get a compressed archive or a Composer metapackage. If you clone the GitHub repository, you *cannot* use the Web Setup Wizard to upgrade the Magento software and extensions. You must upgrade using [Composer and Git commands]({{ page.baseurl }}/install-gde/install/cli/dev_options.html). -3. Install the Magento software using either the Web Setup Wizard or command line. +1. Install the Magento software using either the Web Setup Wizard or command line. For simplicity, only the Web Setup Wizard is shown in the diagram. @@ -28,4 +28,4 @@ The diagram shows the following: If the step fails because prerequisite software isn't set up correctly, review our [Prerequisites]({{ page.baseurl }}/install-gde/prereq/prereq-overview.html). -4. Verify the installation by viewing your storefront and the Magento Admin. +1. Verify the installation by viewing your storefront and the Magento Admin. diff --git a/_includes/install/new-cli-intro.md b/_includes/install/new-cli-intro.md index 77431d63bba..90fc9ebea8c 100644 --- a/_includes/install/new-cli-intro.md +++ b/_includes/install/new-cli-intro.md @@ -1,16 +1,16 @@ Magento has one command-line interface that performs both installation and configuration tasks: `/bin/magento`. The new interface performs multiple tasks, including: -- Installing Magento (and related tasks such as creating or updating the database schema, creating the deployment configuration, and so on). -- Clearing the cache. -- Managing indexes, including reindexing. -- Creating translation dictionaries and translation packages. -- Generating non-existent classes such as factories and interceptors for plug-ins, generating the dependency injection configuration for the object manager. -- Deploying static view files. -- Creating CSS from Less. +- Installing Magento (and related tasks such as creating or updating the database schema, creating the deployment configuration, and so on). +- Clearing the cache. +- Managing indexes, including reindexing. +- Creating translation dictionaries and translation packages. +- Generating non-existent classes such as factories and interceptors for plug-ins, generating the dependency injection configuration for the object manager. +- Deploying static view files. +- Creating CSS from Less. Other benefits: -- A single command (`/bin/magento list`) lists all available installation and configuration commands. -- Consistent user interface based on Symfony. -- The CLI is extensible so third party developers can "plug in" to it. This has the additional benefit of eliminating users' learning curve. -- Commands for disabled modules do not display. +- A single command (`/bin/magento list`) lists all available installation and configuration commands. +- Consistent user interface based on Symfony. +- The CLI is extensible so third party developers can "plug in" to it. This has the additional benefit of eliminating users' learning curve. +- Commands for disabled modules do not display. diff --git a/_includes/install/patch/apply-patch.md b/_includes/install/patch/apply-patch.md index 1a9550a53cc..88550ea2ee9 100644 --- a/_includes/install/patch/apply-patch.md +++ b/_includes/install/patch/apply-patch.md @@ -1,7 +1,7 @@ To apply a patch: -1. Copy the patch file to your Magento installation directory. -1. As the Magento file system owner, use one of the following commands to extract it: +1. Copy the patch file to your Magento installation directory. +1. As the Magento file system owner, use one of the following commands to extract it: | Patch file format | Command to extract | | ----------------- | ------------------------------- | diff --git a/_includes/install/patch/get-patch-ee.md b/_includes/install/patch/get-patch-ee.md index 5ed8e4bc5eb..a4d5ffde919 100644 --- a/_includes/install/patch/get-patch-ee.md +++ b/_includes/install/patch/get-patch-ee.md @@ -4,19 +4,19 @@ You can get a {{site.data.var.ee}} patch in any of the following ways: To get a patch from the {{site.data.var.ee}} merchant portal: -1. Go to [www.magento.com](http://www.magento.com). -1. In the top horizontal navigation bar, click **My Account**. -1. Log in with your Magento username and password. -1. In the left navigation bar, click **Downloads**. -1. Click **Magento Enterprise Edition** > **2.X** > **Magento Enterprise Edition 2.x Release** > **Support Patches**. -1. Transfer the patch to your development system. +1. Go to [www.magento.com](http://www.magento.com). +1. In the top horizontal navigation bar, click **My Account**. +1. Log in with your Magento username and password. +1. In the left navigation bar, click **Downloads**. +1. Click **Magento Enterprise Edition** > **2.X** > **Magento Enterprise Edition 2.x Release** > **Support Patches**. +1. Transfer the patch to your development system. #### From the {{site.data.var.ee}} partner portal To get a patch from the {{site.data.var.ee}} partner portal: -1. Log in to [partners.magento.com](https://partners.magento.com/English/?rdir=/files.aspx). -1. Click **Magento Enterprise Edition** > **Magento Enterprise Edition 2.X** > **Magento Enterprise Edition 2.x Release** > **Support Patches**. -1. In the left navigation bar, click **Downloads**. -1. Follow the instructions on your screen to download the desired patch. -1. Transfer the patch to your development system. +1. Log in to [partners.magento.com](https://partners.magento.com/English/?rdir=/files.aspx). +1. Click **Magento Enterprise Edition** > **Magento Enterprise Edition 2.X** > **Magento Enterprise Edition 2.x Release** > **Support Patches**. +1. In the left navigation bar, click **Downloads**. +1. Follow the instructions on your screen to download the desired patch. +1. Transfer the patch to your development system. diff --git a/_includes/install/paypal-tls1-2.md b/_includes/install/paypal-tls1-2.md index e4387c83bfd..1d181f6f145 100644 --- a/_includes/install/paypal-tls1-2.md +++ b/_includes/install/paypal-tls1-2.md @@ -5,7 +5,7 @@ PayPal recently announced they will require Transport Layer Security (TLS) versi More information: * [Details (PayPal security bulletin)](https://www.paypal.com/uk/webapps/mpp/ssl-security-update) -* [PayPal live payments switching in June 2016 (PayPal technical blog)](https://devblog.paypal.com/upcoming-security-changes-notice/#tls) +* [PayPal live payments switching in June 2016 (PayPal technical blog)](https://medium.com/paypal-engineering/security-related-changes-required-to-avoid-service-disruption-82caf7778328#0422) ### Symptom diff --git a/_includes/install/php-versions-template.md b/_includes/install/php-versions-template.md index 00976ca3c45..40650814a94 100644 --- a/_includes/install/php-versions-template.md +++ b/_includes/install/php-versions-template.md @@ -2,6 +2,6 @@ Supported PHP versions: {% for version in supported_php_versions %} -* {{ version }} +* {{ version }} {% endfor %} diff --git a/_includes/install/prereq.md b/_includes/install/prereq.md index db3dd6046ac..39b7f1ed4f3 100644 --- a/_includes/install/prereq.md +++ b/_includes/install/prereq.md @@ -1,4 +1,4 @@ Before you continue, make sure you've done all of the following: -- Set up a server that meets our [system requirements]({{ page.baseurl }}/install-gde/system-requirements.html) -- Created the [Magento file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html) +- Set up a server that meets our [system requirements]({{ page.baseurl }}/install-gde/system-requirements.html) +- Created the [Magento file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html) diff --git a/_includes/install/releasenotes/ce_install_20.md b/_includes/install/releasenotes/ce_install_20.md index a7fa74a93be..aa2facd82d2 100644 --- a/_includes/install/releasenotes/ce_install_20.md +++ b/_includes/install/releasenotes/ce_install_20.md @@ -35,7 +35,7 @@ composer create-project --repository=https://repo.magento.com/ magento/project-c After you get the Open Source software: 1. [Set file system ownership and permissions]({{ page.baseurl }}/install-gde/prereq/file-system-perms.html). -2. Install the Magento software: +1. Install the Magento software: * [Web Setup Wizard]({{ page.baseurl }}/install-gde/install/web/install-web.html) * [Command line]({{ page.baseurl }}/install-gde/install/cli/install-cli.html) diff --git a/_includes/install/releasenotes/ee_install_20.md b/_includes/install/releasenotes/ee_install_20.md index 8540d92ac00..75000e6a823 100644 --- a/_includes/install/releasenotes/ee_install_20.md +++ b/_includes/install/releasenotes/ee_install_20.md @@ -35,7 +35,7 @@ composer create-project --repository=https://repo.magento.com/ magento/project-e After you get the Commerce software: 1. [Set file system ownership and permissions]({{ page.baseurl }}/install-gde/prereq/file-system-perms.html). -2. Install the Magento software: +1. Install the Magento software: * [Web Setup Wizard]({{ page.baseurl }}/install-gde/install/web/install-web.html) * [Command line]({{ page.baseurl }}/install-gde/install/cli/install-cli.html) diff --git a/_includes/install/releasenotes/get-ce-software_zip.md b/_includes/install/releasenotes/get-ce-software_zip.md index 4c16fe012df..bfaa2c57fa5 100644 --- a/_includes/install/releasenotes/get-ce-software_zip.md +++ b/_includes/install/releasenotes/get-ce-software_zip.md @@ -11,7 +11,7 @@ Archives are available in the following formats: `.zip`, `.tar.bz2`, `.tar.gz` To get the Magento Open Source software archive: 1. Go to [http://magento.com/download](http://magento.com/download){:target="_blank"}. -2. Choose either the software or the software and sample data: +1. Choose either the software or the software and sample data: * `Magento-CE-.*` (without sample data) * `Magento-CE-+Samples.*` (with sample data) diff --git a/_includes/install/sampledata/sample-data-clone.md b/_includes/install/sampledata/sample-data-clone.md index 2822b41adbf..9cee287ee93 100644 --- a/_includes/install/sampledata/sample-data-clone.md +++ b/_includes/install/sampledata/sample-data-clone.md @@ -7,136 +7,140 @@ If you're not a contributing developer, choose one of the other options displaye Contributing developers can use this method of installing sample data *only* if all of the following are true: -* You use {{site.data.var.ce}} -* You [cloned the Magento 2 repository]({{ page.baseurl }}/install-gde/prereq/dev_install.html). +* You use {{site.data.var.ce}} +* You [cloned the Magento 2 repository]({{ page.baseurl }}/install-gde/prereq/dev_install.html). {:.bs-callout .bs-callout-warning} You can use sample data with either the `develop` branch (more current) or a released branch (such as `2.2` or `2.2.5` (more stable)). We recommend you use a released branch because it's more stable. If you're contributing code to the Magento 2 repository and you need the most recent code, use the `develop` branch. Regardless of the branch you choose, you must [clone]({{ page.baseurl }}/install-gde/prereq/dev_install.html) the corresponding branch of the Magento 2 GitHub repository. For example, sample data for the `develop` branch can be used *only* with the Magento 2 `develop` branch. See the following sections: -* [Clone the sample data repository](#clone-sample-repo) -* [Set file system ownership and permissions](#samp-data-perms) +* [Clone the sample data repository](#clone-sample-repo) +* [Set file system ownership and permissions](#samp-data-perms) ## Clone the sample data repository {#clone-sample-repo} This section discusses how to install Magento sample data by cloning the sample data repository. You can clone the sample data repository in any of the following ways: -* Clone with the [SSH protocol](#clone-sample-repo-ssh) -* Clone with the [HTTPS protocol](#instgde-prereq-compose-clone-https) +* Clone with the [SSH protocol](#clone-sample-repo-ssh) +* Clone with the [HTTPS protocol](#instgde-prereq-compose-clone-https) ### Clone with SSH {#clone-sample-repo-ssh} To clone the Magento sample data GitHub repository using the SSH protocol: 1. In a web browser, go to [the Magento sample data repository](https://github.com/magento/magento2-sample-data). -2. Next to the name of the branch, click **SSH** from the list. -3. Click **Copy to clipboard** +1. Next to the name of the branch, click **SSH** from the list. +1. Click **Copy to clipboard** - The following figure shows an example. + The following figure shows an example. - ![Clone the Magento GitHub repository using SSH]({{ site.baseurl }}/common/images/install_mage2_clone-ssh.png){:width="650px"} -4. Change to your web server's docroot directory. + ![Clone the Magento GitHub repository using SSH]({{ site.baseurl }}/common/images/install_mage2_clone-ssh.png){:width="650px"} - Typically, for Ubuntu, it's `/var/www` and for CentOS it's `/var/www/html`. +1. Change to your web server's docroot directory. - Need [help locating the docroot?]({{ page.baseurl }}/install-gde/basics/basics_docroot.html) -5. Enter `git clone` and paste the value you obtained from step 1. + Typically, for Ubuntu, it's `/var/www` and for CentOS it's `/var/www/html`. - An example follows: + Need [help locating the docroot?]({{ page.baseurl }}/install-gde/basics/basics_docroot.html) - ```bash - git clone git@github.com:magento/magento2-sample-data.git - ``` +1. Enter `git clone` and paste the value you obtained from step 1. -6. Wait for the repository to clone on your server. + An example follows: - {:.bs-callout .bs-callout-info} - If the following error displays, make sure you [shared your SSH key](https://help.github.com/articles/generating-ssh-keys/) with GitHub:
+ ```bash + git clone git@github.com:magento/magento2-sample-data.git + ``` - ```terminal - Cloning into 'magento2'... - Permission denied (publickey). - fatal: The remote end hung up unexpectedly - ``` +1. Wait for the repository to clone on your server. -7. Ensure you checkout the branch of the sample data repository that corresponds with the branch you used from the main `magento2` repository. + {:.bs-callout .bs-callout-info} + If the following error displays, make sure you [shared your SSH key](https://help.github.com/articles/generating-ssh-keys/) with GitHub:
- For example: + ```terminal + Cloning into 'magento2'... + Permission denied (publickey). + fatal: The remote end hung up unexpectedly + ``` - If you used the `2.2-develop` branch of the Magento 2 repository, the Sample Data branch should be `2.2-develop`. +1. Ensure you checkout the branch of the sample data repository that corresponds with the branch you used from the main `magento2` repository. - If you used the `2.2.5` branch of the Magento 2 repository, the Sample Data branch should be `2.2.5`. + For example: - To checkout the correct branch, run the following command from the sample data repository's root directory (assuming you need the `2.2.5` branch): + If you used the `2.2-develop` branch of the Magento 2 repository, the Sample Data branch should be `2.2-develop`. - ```bash - git checkout 2.2.5 - ``` + If you used the `2.2.5` branch of the Magento 2 repository, the Sample Data branch should be `2.2.5`. -8. Change to ``. -9. Enter the following command to create symbolic links between the files you just cloned so sample data works properly: + To checkout the correct branch, run the following command from the sample data repository's root directory (assuming you need the `2.2.5` branch): - ```bash - php -f /dev/tools/build-sample-data.php -- --ce-source="" - ``` + ```bash + git checkout 2.2.5 + ``` -10. Wait for the command to complete. +1. Change to ``. +1. Enter the following command to create symbolic links between the files you just cloned so sample data works properly: -11. See [Set file system permissions and ownership](#samp-data-perms). + ```bash + php -f /dev/tools/build-sample-data.php -- --ce-source="" + ``` + +1. Wait for the command to complete. + +1. See [Set file system permissions and ownership](#samp-data-perms). ### Clone with HTTPS {#instgde-prereq-compose-clone-https} To clone the Magento sample data GitHub repository using the HTTPS protocol: 1. In a web browser, go to [the Magento sample data repository](https://github.com/magento/magento2-sample-data). -2. On the right side of the page, under the **clone URL** field, click **HTTPS**. -3. Click **Copy to clipboard**. +1. On the right side of the page, under the **clone URL** field, click **HTTPS**. +1. Click **Copy to clipboard**. + + The following figure shows an example. + + ![Clone the Magento GitHub repository using HTTPS]({{ site.baseurl }}/common/images/install_mage2_clone-https.png){:width="650px"} - The following figure shows an example. +1. Change to your web server's docroot directory. - ![Clone the Magento GitHub repository using HTTPS]({{ site.baseurl }}/common/images/install_mage2_clone-https.png){:width="650px"} -4. Change to your web server's docroot directory. + Typically, for Ubuntu, it's `/var/www` and for CentOS it's `/var/www/html`. - Typically, for Ubuntu, it's `/var/www` and for CentOS it's `/var/www/html`. -5. Enter `git clone` and paste the value you obtained from step 1. +1. Enter `git clone` and paste the value you obtained from step 1. - An example follows: + An example follows: - ```bash - git clone https://github.com/magento/magento2-sample-data.git - ``` + ```bash + git clone https://github.com/magento/magento2-sample-data.git + ``` -6. Wait for the repository to clone on your server. -7. Ensure you checkout the branch of the sample data repository that corresponds with the branch you used from the main `magento2` repository. +1. Wait for the repository to clone on your server. +1. Ensure you checkout the branch of the sample data repository that corresponds with the branch you used from the main `magento2` repository. - For example: + For example: - If you used the `2.2-develop` branch of the Magento 2 repository, the Sample Data branch should be `2.2-develop`. + If you used the `2.2-develop` branch of the Magento 2 repository, the Sample Data branch should be `2.2-develop`. - If you used the `2.2.5` branch of the Magento 2 repository, the Sample Data branch should be `2.2.5`. + If you used the `2.2.5` branch of the Magento 2 repository, the Sample Data branch should be `2.2.5`. - To checkout the correct branch, run the following command from the sample data repository's root directory (assuming you need the `2.2.5` branch): + To checkout the correct branch, run the following command from the sample data repository's root directory (assuming you need the `2.2.5` branch): - ```bash - git checkout 2.2.5 - ``` + ```bash + git checkout 2.2.5 + ``` -8. Change to ``. -9. Enter the following command to create symbolic links between the files you just cloned so sample data works properly: +1. Change to ``. +1. Enter the following command to create symbolic links between the files you just cloned so sample data works properly: - ```bash - php -f /dev/tools/build-sample-data.php -- --ce-source="" - ``` + ```bash + php -f /dev/tools/build-sample-data.php -- --ce-source="" + ``` - For example, + For example, - ```bash - php -f /dev/tools/build-sample-data.php -- --ce-source="/var/www/magento2" - ``` + ```bash + php -f /dev/tools/build-sample-data.php -- --ce-source="/var/www/magento2" + ``` -10. Wait for the command to complete. -11. See the next section. +1. Wait for the command to complete. +1. See the next section. {:.bs-callout .bs-callout-warning} If you're installing sample data _after_ installing Magento, you must also run the following command to update the database and schema: @@ -152,33 +156,33 @@ Because the `php build-sample-data.php` script creates symlinks between the samp To set file system permissions and ownership on the sample data repository: 1. Change to your sample data clone directory. -2. Set ownership: +1. Set ownership: - ```bash - chown -R : . - ``` + ```bash + chown -R : . + ``` - Typical examples: + Typical examples: - CentOS: `chown -R :apache .` + * CentOS: `chown -R :apache .` - Ubuntu: `chown -R :www-data .` + * Ubuntu: `chown -R :www-data .` -3. Set permissions: +1. Set permissions: - ```bash - find . -type d -exec chmod g+ws {} + - ``` + ```bash + find . -type d -exec chmod g+ws {} + + ``` -4. Clear static files: +1. Clear static files: - ```bash - cd /var - ``` + ```bash + cd /var + ``` - ```bash - rm -rf cache/* page_cache/* generation/* - ``` + ```bash + rm -rf cache/* page_cache/* generation/* + ``` diff --git a/_includes/install/sampledata/sample-data-composer.md b/_includes/install/sampledata/sample-data-composer.md index a76cb9a8ca7..69a682e608a 100644 --- a/_includes/install/sampledata/sample-data-composer.md +++ b/_includes/install/sampledata/sample-data-composer.md @@ -1,10 +1,10 @@ This section discusses how to install sample data if you got the Magento software in any of the following ways: -* Downloaded a compressed archive from [Magento](https://magento.com/tech-resources/download). +* Downloaded a compressed archive from [Magento](https://magento.com/tech-resources/download). If you downloaded an archive from GitHub, this method won't work because the `composer.json` file doesn't contain the `repo.magento.com` URL. -* Used `composer create-project` +* Used `composer create-project` You can use this method of getting sample data for both {{site.data.var.ce}} or {{site.data.var.ee}}, but you must use the same [authentication keys]({{ page.baseurl }}/install-gde/prereq/connect-auth.html) you used to install Magento. diff --git a/_includes/install/sampledata/sample-data-rc1-web.md b/_includes/install/sampledata/sample-data-rc1-web.md index 4c41cc7d7a2..3adf793ac6e 100644 --- a/_includes/install/sampledata/sample-data-rc1-web.md +++ b/_includes/install/sampledata/sample-data-rc1-web.md @@ -10,23 +10,23 @@ To upgrade to {{site.data.var.ee}} RC1 or RC2 with sample data using the Setup W {% collapsible Click to expand/collapse content %} 1. Log in to your Magento server as, or switch to, the [Magento file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html). -2. Change to the Magento installation directory. -3. Open `composer.lock` in a text editor. -4. Change the following: +1. Change to the Magento installation directory. +1. Open `composer.lock` in a text editor. +1. Change the following: - From: + From: - ```json - "type": "magento2-module-customer-balance" - ``` + ```json + "type": "magento2-module-customer-balance" + ``` - To: + To: - ```json - "type": "magento2-module" - ``` + ```json + "type": "magento2-module" + ``` -5. Save your changes to `composer.lock` and exit the text editor. +1. Save your changes to `composer.lock` and exit the text editor. {% include install/sampledata/file-sys-perms-digest.md %} diff --git a/_includes/install/trouble/rc_cron.md b/_includes/install/trouble/rc_cron.md index 895c2ba08e4..860977ed4a1 100644 --- a/_includes/install/trouble/rc_cron.md +++ b/_includes/install/trouble/rc_cron.md @@ -6,7 +6,7 @@ This section discusses how to see if cron is currently running and to verify whe To verify whether or not your crontab is set up: 1. Log in to your Magento server as, or switch to, the [Magento file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html). -2. See if the following file exists: +1. See if the following file exists: ```bash ls -al /var/.setup_cronjob_status @@ -14,7 +14,7 @@ To verify whether or not your crontab is set up: If the file exists, cron has run successfully in the past. If the file _does not_ exist, either you haven't yet installed Magento or cron isn't running. In either case, continue with the next step. -3. Get more detail about cron. +1. Get more detail about cron. As a user with `root` privileges, enter the following command: diff --git a/_includes/install/trouble/rc_perms.md b/_includes/install/trouble/rc_perms.md index 0c1a9958e7e..ba96a0a947e 100644 --- a/_includes/install/trouble/rc_perms.md +++ b/_includes/install/trouble/rc_perms.md @@ -7,8 +7,8 @@ Directories in the Magento file system must be writable by the web server user a The way you resolve the issue depends on whether you have a one-user or two-user setup: -* *One user* means you log in to the Magento server as the same user that also runs the web server. This type of setup is common in shared hosting environments. -* *Two users* means you typically *cannot* log in as, or switch to, the web server user. You typically log in as one user and run the web server as a different user. This is typical in private hosting or if you have your own server. +* *One user* means you log in to the Magento server as the same user that also runs the web server. This type of setup is common in shared hosting environments. +* *Two users* means you typically *cannot* log in as, or switch to, the web server user. You typically log in as one user and run the web server as a different user. This is typical in private hosting or if you have your own server. ### One-user resolution diff --git a/_includes/install/ulimit.md b/_includes/install/ulimit.md index 209d05cbaa9..ef383b437fb 100644 --- a/_includes/install/ulimit.md +++ b/_includes/install/ulimit.md @@ -26,14 +26,14 @@ The syntax for `ulimit` depends on the UNIX shell you use. The preceding setting To optionally set the value in the user's Bash shell: 1. If you haven't done so already, switch to the [Magento file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html). -2. Open `/home//.bashrc` in a text editor. -3. Add the following line: +1. Open `/home//.bashrc` in a text editor. +1. Add the following line: ```bash ulimit -s 65536 ``` -4. Save your changes to `.bashrc` and exit the text editor. +1. Save your changes to `.bashrc` and exit the text editor. {:.bs-callout .bs-callout-warning} We recommend you avoid setting a value for [`pcre.recursion_limit`](http://php.net/manual/en/pcre.configuration.php) in `php.ini` because it can result in incomplete rollbacks with no failure notice. diff --git a/_includes/install/web/install-web.md b/_includes/install/web/install-web.md index 0a1c5e298f3..1382fd4c899 100644 --- a/_includes/install/web/install-web.md +++ b/_includes/install/web/install-web.md @@ -5,8 +5,8 @@ This section discusses how to install the Magento software using a web-based wiz Before you begin, make sure that: 1. Your system meets the requirements discussed in [Magento System Requirements]({{ page.baseurl }}/install-gde/system-requirements.html). -2. You completed all prerequisite tasks discussed in [Prerequisites]({{ page.baseurl }}/install-gde/prereq/prereq-overview.html). -4. After you log in to the Magento server, [switch to the Magento file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html). +1. You completed all prerequisite tasks discussed in [Prerequisites]({{ page.baseurl }}/install-gde/prereq/prereq-overview.html). +1. After you log in to the Magento server, [switch to the Magento file system owner]({{ page.baseurl }}/install-gde/prereq/file-sys-perms-over.html). ### Enabling and disabling modules {#instgde-install-web-enable-mod} @@ -26,7 +26,7 @@ To install the Magento software using the Setup Wizard: 1. Start a web browser. -2. Enter the following URL in the browser's address or location bar: +1. Enter the following URL in the browser's address or location bar: ```text http:////setup @@ -38,6 +38,6 @@ To install the Magento software using the Setup Wizard: http://192.0.2.10/magento2/setup ``` -3. On the initial page, click **Agree and Set Up Magento**. +1. On the initial page, click **Agree and Set Up Magento**. -4. Continue with the following topics in the order presented to complete the installation. +1. Continue with the following topics in the order presented to complete the installation. diff --git a/_includes/install/web/install-web_1-readiness.md b/_includes/install/web/install-web_1-readiness.md index 42c8546d774..8b2eac27961 100644 --- a/_includes/install/web/install-web_1-readiness.md +++ b/_includes/install/web/install-web_1-readiness.md @@ -6,4 +6,4 @@ Click **More detail** if available to see more information about each check. -2. Click **Next**. +1. Click **Next**. diff --git a/_includes/install/web/install-web_4-customize-store.md b/_includes/install/web/install-web_4-customize-store.md index d3569f9ea0d..ec4aff1a283 100644 --- a/_includes/install/web/install-web_4-customize-store.md +++ b/_includes/install/web/install-web_4-customize-store.md @@ -15,7 +15,7 @@ * [General module configuration options](#instgde-install-magento-web-step4-depend1) * [Module dependency errors](#instgde-install-magento-web-step4-depend2) -1. Click **Next**. +1. Click **Next**. ### General module configuration options {#instgde-install-magento-web-step4-depend1} diff --git a/_includes/install/web/install-web_5-create-admin.md b/_includes/install/web/install-web_5-create-admin.md index 9a1fa4ff699..1ed0d0ef8f2 100644 --- a/_includes/install/web/install-web_5-create-admin.md +++ b/_includes/install/web/install-web_5-create-admin.md @@ -9,4 +9,4 @@ |New Password|Enter the administrator's password.| |Confirm Password|Enter the password again for verification.| -2. Click **Next**. +1. Click **Next**. diff --git a/_includes/layout/page-header.html b/_includes/layout/page-header.html index 614009035ad..243fc5860e7 100644 --- a/_includes/layout/page-header.html +++ b/_includes/layout/page-header.html @@ -15,5 +15,11 @@

{{ page.subtitle }}

{% endif %} +{% if page.title == "How to Add a New Table to a Database" %} +
+ This tutorial applies to Magento 2.2.x only. For Magento 2.3.x, see Declarative Schema. +
+{% endif %} +

{{ page.title }}

diff --git a/_includes/performance/development-environment.md b/_includes/performance/development-environment.md index 4d39b5a6e92..8b9b714967c 100644 --- a/_includes/performance/development-environment.md +++ b/_includes/performance/development-environment.md @@ -15,18 +15,20 @@ These commands were built for use in production mode only. **Do not run** production commands in development mode: -* ```bash - bin/magento setup:di:compile - ``` - `setup:di:compile` generates auto-generated classes and optimized configuration caches. - In development mode, Magento performs the generation on-demand; you do not need to run it. - If you modified a signature of a class and need to re-generate its auto-generated factories/proxies/interceptors, remove those classes or the _generated_ folder. - -* ```bash - bin/magento setup:static-content:deploy - ``` - `setup:static-content:deploy` deploys static content for a store. - In development mode, Magento performs it on-demand; you do not need to run it. +* ```bash + bin/magento setup:di:compile + ``` + + `setup:di:compile` generates auto-generated classes and optimized configuration caches. + In development mode, Magento performs the generation on-demand; you do not need to run it. + If you modified a signature of a class and need to re-generate its auto-generated factories/proxies/interceptors, remove those classes or the _generated_ folder. + +* ```bash + bin/magento setup:static-content:deploy + ``` + + `setup:static-content:deploy` deploys static content for a store. + In development mode, Magento performs it on-demand; you do not need to run it. ## Normal page load time on a virtual machine diff --git a/_includes/php-dev/component-root-2.3.md b/_includes/php-dev/component-root-2.3.md index e87f6c12620..8efb2072c78 100644 --- a/_includes/php-dev/component-root-2.3.md +++ b/_includes/php-dev/component-root-2.3.md @@ -2,14 +2,14 @@ A component's root directory matches the component's name and contains all its subdirectories and files. Based on how you installed Magento, you can put your component's root directory in one of two places: -* `/app`: This is the *recommended* location for component development. You can set up this environment by [Cloning the Magento 2 GitHub repository]({{page.baseurl}}/install-gde/prereq/dev_install.html). +* `/app`: This is the *recommended* location for component development. You can set up this environment by [Cloning the Magento 2 GitHub repository]({{page.baseurl}}/install-gde/prereq/dev_install.html). - * For modules, use `app/code`. - * For storefront themes, use `app/design/frontend`. - * For Admin themes, use `app/design/adminhtml`. - * For language packages, use `app/i18n`. + * For modules, use `app/code`. + * For storefront themes, use `app/design/frontend`. + * For Admin themes, use `app/design/adminhtml`. + * For language packages, use `app/i18n`. -* `/vendor`: You will find this location for installations that use the [`composer create-project`]({{page.baseurl}}/install-gde/composer.html) to install the Magento 2 metapackage (which downloads the CE or EE code). You will also find this location if you install Magento by extracting the [compressed Magento 2 archive]({{page.baseurl}}/install-gde/prereq/zip_install.html). +* `/vendor`: You will find this location for installations that use the [`composer create-project`]({{page.baseurl}}/install-gde/composer.html) to install the Magento 2 metapackage (which downloads the CE or EE code). You will also find this location if you install Magento by extracting the [compressed Magento 2 archive]({{page.baseurl}}/install-gde/prereq/zip_install.html). Magento installs third-party components in the `vendor` directory. But we recommend adding your components to the `app/code` directory. If you put your component in the `vendor` directory, Git will ignore it because Magento adds the `vendor` directory to the `.gitignore` file. diff --git a/_includes/php-dev/component-root.md b/_includes/php-dev/component-root.md index 4c2239b0ccb..56e202ae282 100644 --- a/_includes/php-dev/component-root.md +++ b/_includes/php-dev/component-root.md @@ -2,14 +2,14 @@ A component's root directory is the top-level directory for that component under which its folders and files are located. Depending on how your Magento development environment was installed, your component's root directory can be located in two places: -* `/app`: This is the *recommended* location for component development. You can easily set up this type of environment by [Cloning the Magento 2 GitHub repository]({{ page.baseurl }}/install-gde/prereq/dev_install.html). +* `/app`: This is the *recommended* location for component development. You can easily set up this type of environment by [Cloning the Magento 2 GitHub repository]({{ page.baseurl }}/install-gde/prereq/dev_install.html). - * For modules, use `app/code`. - * For storefront themes, use `app/design/frontend`. - * For Admin themes, use `app/design/adminhtml`. - * For language packages, use `app/i18n`. + * For modules, use `app/code`. + * For storefront themes, use `app/design/frontend`. + * For Admin themes, use `app/design/adminhtml`. + * For language packages, use `app/i18n`. -* `/vendor`: This location is found in the alternative setups where the {% if page.guide_version == "2.0" %} [`composer create-project`]({{page.baseurl}}/install-gde/prereq/integrator_install.html) {% else %} [`composer create-project`]({{page.baseurl}}/install-gde/composer.html). {% endif %} command was used to get a Magento 2 metapackage (which downloads the CE or EE code), or a [compressed Magento 2 archive]({{ page.baseurl }}/install-gde/prereq/zip_install.html) was extracted in order to install Magento. +* `/vendor`: This location is found in the alternative setups where the {% if page.guide_version == "2.0" %} [`composer create-project`]({{page.baseurl}}/install-gde/prereq/integrator_install.html) {% else %} [`composer create-project`]({{page.baseurl}}/install-gde/composer.html). {% endif %} command was used to get a Magento 2 metapackage (which downloads the CE or EE code), or a [compressed Magento 2 archive]({{ page.baseurl }}/install-gde/prereq/zip_install.html) was extracted in order to install Magento. Any third party components (and the Magento application itself) are downloaded and stored under the `vendor` directory. If you are using Git to manage project, this directory is typically added to the `.gitignore` file. Therefore, we recommend you do your customization work in `app/code`, not `vendor`. diff --git a/_includes/release-notes/engcomm-2-3-3-issues.md b/_includes/release-notes/engcomm-2-3-3-issues.md index 4b3ac423541..91980207765 100644 --- a/_includes/release-notes/engcomm-2-3-3-issues.md +++ b/_includes/release-notes/engcomm-2-3-3-issues.md @@ -1,181 +1,181 @@ | Contributing community member | Related GitHub Issues | Pull Requests | | ------- | ------- | ------- | -| [airbone42](https://github.com/airbone42) | [#533](https://github.com/magento/magento2/issues/533) | [magento/graphql-ce#578](https://github.com/magento/graphql-ce/pull/578) | -| [tzyganu](https://github.com/tzyganu) | [#601](https://github.com/magento/magento2/issues/601) | [magento/graphql-ce#632](https://github.com/magento/graphql-ce/pull/632) | -| [pmclain](https://github.com/pmclain) | [#631](https://github.com/magento/magento2/issues/631) | [magento/graphql-ce#634](https://github.com/magento/graphql-ce/pull/634) | -| [dipti2jcommerce](https://github.com/dipti2jcommerce) | [#20124](https://github.com/magento/magento2/issues/20124) | [magento/magento2#20135](https://github.com/magento/magento2/pull/20135) | -| [WalterSmulders](https://github.com/WalterSmulders) | [#21978](https://github.com/magento/magento2/issues/21978) | [magento/magento2#22020](https://github.com/magento/magento2/pull/22020) | -| [afavata](https://github.com/afavata) | [#22045](https://github.com/magento/magento2/issues/22045) | [magento/magento2#22260](https://github.com/magento/magento2/pull/22260) | -| [Userr017](https://github.com/Userr017) | [#22134](https://github.com/magento/magento2/issues/22134) | [magento/magento2#22260](https://github.com/magento/magento2/pull/22260) | -| [sjb9774](https://github.com/sjb9774) | [#22249](https://github.com/magento/magento2/issues/22249) | [magento/magento2#22287](https://github.com/magento/magento2/pull/22287) | -| [bhavik43](https://github.com/bhavik43) | [#22527](https://github.com/magento/magento2/issues/22527) | [magento/magento2#22532](https://github.com/magento/magento2/pull/22532) | -| [tzyganu](https://github.com/tzyganu) | [#628](https://github.com/magento/magento2/issues/628) | [magento/graphql-ce#636](https://github.com/magento/graphql-ce/pull/636) | -| [fzaninotto](https://github.com/fzaninotto) | [#640](https://github.com/magento/magento2/issues/640) | [magento/graphql-ce#648](https://github.com/magento/graphql-ce/pull/648) | -| [akulkarni9](https://github.com/akulkarni9) | [#603](https://github.com/magento/magento2/issues/603) | [magento/graphql-ce#653](https://github.com/magento/graphql-ce/pull/653) | -| [abrarpathan19](https://github.com/abrarpathan19) | [#22406](https://github.com/magento/magento2/issues/22406) | [magento/magento2#22423](https://github.com/magento/magento2/pull/22423) | -| [justinharris1986](https://github.com/justinharris1986) | [#19515](https://github.com/magento/magento2/issues/19515) | [magento/magento2#19767](https://github.com/magento/magento2/pull/19767) | -| [mam08ixo](https://github.com/mam08ixo) | [#21473](https://github.com/magento/magento2/issues/21473) | [magento/magento2#21992](https://github.com/magento/magento2/pull/21992) | -| [vishal-7037](https://github.com/vishal-7037) | [#22641](https://github.com/magento/magento2/issues/22641) | [magento/magento2#22643](https://github.com/magento/magento2/pull/22643) | -| [cedarvinda](https://github.com/cedarvinda) | [#22647](https://github.com/magento/magento2/issues/22647) | [magento/magento2#22656](https://github.com/magento/magento2/pull/22656) | -| [MichaelThessel](https://github.com/MichaelThessel) | [#22395](https://github.com/magento/magento2/issues/22395) | [magento/magento2#22720](https://github.com/magento/magento2/pull/22720) | -| [gfxguru](https://github.com/gfxguru) | [#198](https://github.com/magento/magento2/issues/198) | [magento/graphql-ce#371](https://github.com/magento/graphql-ce/pull/371) | -| [ed29](https://github.com/ed29) | [#436](https://github.com/magento/magento2/issues/436) | [magento/graphql-ce#445](https://github.com/magento/graphql-ce/pull/445) | -| [vigentocommerce](https://github.com/vigentocommerce) | [#309](https://github.com/magento/magento2/issues/309) | [magento/graphql-ce#504](https://github.com/magento/graphql-ce/pull/504) | -| [beckindesigns](https://github.com/beckindesigns) | [#535](https://github.com/magento/magento2/issues/535) | [magento/graphql-ce#650](https://github.com/magento/graphql-ce/pull/650) | -| [tzyganu](https://github.com/tzyganu) | [#658](https://github.com/magento/magento2/issues/658) | [magento/graphql-ce#665](https://github.com/magento/graphql-ce/pull/665), [magento/graphql-ce#744](https://github.com/magento/graphql-ce/pull/744) | -| [tzyganu](https://github.com/tzyganu) | [#657](https://github.com/magento/magento2/issues/657) | [magento/graphql-ce#666](https://github.com/magento/graphql-ce/pull/666) | -| [fwolfst](https://github.com/fwolfst) | [#12612](https://github.com/magento/magento2/issues/12612) | [magento/magento2#22558](https://github.com/magento/magento2/pull/22558) | -| [Leone](https://github.com/Leone) | [#22556](https://github.com/magento/magento2/issues/22556) | [magento/magento2#22558](https://github.com/magento/magento2/pull/22558) | -| [VincentMarmiesse](https://github.com/VincentMarmiesse) | [#20843](https://github.com/magento/magento2/issues/20843) | [magento/magento2#22560](https://github.com/magento/magento2/pull/22560) | -| [cedarvinda](https://github.com/cedarvinda) | [#22636](https://github.com/magento/magento2/issues/22636) | [magento/magento2#22644](https://github.com/magento/magento2/pull/22644) | -| [Surabhi-Cedcoss](https://github.com/Surabhi-Cedcoss) | [#22640](https://github.com/magento/magento2/issues/22640) | [magento/magento2#22655](https://github.com/magento/magento2/pull/22655) | -| [mage2pratik](https://github.com/mage2pratik) | [#20906](https://github.com/magento/magento2/issues/20906) | [magento/magento2#22739](https://github.com/magento/magento2/pull/22739) | -| [Patelcc](https://github.com/Patelcc) | [#22771](https://github.com/magento/magento2/issues/22771) | [magento/magento2#22779](https://github.com/magento/magento2/pull/22779) | -| [DigitalStartupUK](https://github.com/DigitalStartupUK) | [#22788](https://github.com/magento/magento2/issues/22788) | [magento/magento2#22791](https://github.com/magento/magento2/pull/22791) | -| [Hoszi](https://github.com/Hoszi) | [#18651](https://github.com/magento/magento2/issues/18651) | [magento/magento2#19584](https://github.com/magento/magento2/pull/19584) | -| [gwharton](https://github.com/gwharton) | [#21672](https://github.com/magento/magento2/issues/21672) | [magento/magento2#21675](https://github.com/magento/magento2/pull/21675), [magento/magento2#21674](https://github.com/magento/magento2/pull/21674) | -| [mtwegrzycki](https://github.com/mtwegrzycki) | [#22028](https://github.com/magento/magento2/issues/22028) | [magento/magento2#22575](https://github.com/magento/magento2/pull/22575) | -| [Dharmeshvaja91](https://github.com/Dharmeshvaja91) | [#21558](https://github.com/magento/magento2/issues/21558) | [magento/magento2#22794](https://github.com/magento/magento2/pull/22794) | -| [jhruehl](https://github.com/jhruehl) | [#22127](https://github.com/magento/magento2/issues/22127) | [magento/magento2#22186](https://github.com/magento/magento2/pull/22186) | -| [magesanjay](https://github.com/magesanjay) | [#22639](https://github.com/magento/magento2/issues/22639) | [magento/magento2#22724](https://github.com/magento/magento2/pull/22724) | -| [cedarvinda](https://github.com/cedarvinda) | [#22676](https://github.com/magento/magento2/issues/22676) | [magento/magento2#22742](https://github.com/magento/magento2/pull/22742) | -| [JacobDrummond](https://github.com/JacobDrummond) | [#6659](https://github.com/magento/magento2/issues/6659) | [magento/magento2#22850](https://github.com/magento/magento2/pull/22850) | -| [BenSpace48](https://github.com/BenSpace48) | [#4628](https://github.com/magento/magento2/issues/4628) | [magento/magento2#22854](https://github.com/magento/magento2/pull/22854) | -| [samtay](https://github.com/samtay) | [#3795](https://github.com/magento/magento2/issues/3795) | [magento/magento2#21397](https://github.com/magento/magento2/pull/21397) | -| [serhiyzhovnir](https://github.com/serhiyzhovnir) | [#22786](https://github.com/magento/magento2/issues/22786) | [magento/magento2#22787](https://github.com/magento/magento2/pull/22787) | -| [eduard13](https://github.com/eduard13) | [#22822](https://github.com/magento/magento2/issues/22822) | [magento/magento2#22823](https://github.com/magento/magento2/pull/22823) | -| [talset](https://github.com/talset) | [#21852](https://github.com/magento/magento2/issues/21852) | [magento/magento2#22607](https://github.com/magento/magento2/pull/22607) | -| [hostep](https://github.com/hostep) | [#22563](https://github.com/magento/magento2/issues/22563) | [magento/magento2#22607](https://github.com/magento/magento2/pull/22607) | -| [bhavik43](https://github.com/bhavik43) | [#22736](https://github.com/magento/magento2/issues/22736) | [magento/magento2#22795](https://github.com/magento/magento2/pull/22795) | -| [amitvishvakarma](https://github.com/amitvishvakarma) | [#22875](https://github.com/magento/magento2/issues/22875) | [magento/magento2#22876](https://github.com/magento/magento2/pull/22876) | -| [abrarpathan19](https://github.com/abrarpathan19) | [#21214](https://github.com/magento/magento2/issues/21214) | [magento/magento2#21215](https://github.com/magento/magento2/pull/21215) | -| [mikelevy300](https://github.com/mikelevy300) | [#22143](https://github.com/magento/magento2/issues/22143) | [magento/magento2#22307](https://github.com/magento/magento2/pull/22307) | -| [p-bystritsky](https://github.com/p-bystritsky) | [#22317](https://github.com/magento/magento2/issues/22317) | [magento/magento2#22444](https://github.com/magento/magento2/pull/22444) | -| [MichaelThessel](https://github.com/MichaelThessel) | [#22396](https://github.com/magento/magento2/issues/22396) | [magento/magento2#22513](https://github.com/magento/magento2/pull/22513) | -| [GrishmaNayee](https://github.com/GrishmaNayee) | [#22506](https://github.com/magento/magento2/issues/22506) | [magento/magento2#22520](https://github.com/magento/magento2/pull/22520) | -| [808brinks](https://github.com/808brinks) | [#22869](https://github.com/magento/magento2/issues/22869) | [magento/magento2#22893](https://github.com/magento/magento2/pull/22893) | -| [speedy008](https://github.com/speedy008) | [#22924](https://github.com/magento/magento2/issues/22924) | [magento/magento2#22926](https://github.com/magento/magento2/pull/22926) | -| [ipascual](https://github.com/ipascual) | [#20186](https://github.com/magento/magento2/issues/20186) | [magento/magento2#22947](https://github.com/magento/magento2/pull/22947) | -| [steadweb](https://github.com/steadweb) | [#574](https://github.com/magento/magento2/issues/574) | [magento/graphql-ce#694](https://github.com/magento/graphql-ce/pull/694) | -| [tzyganu](https://github.com/tzyganu) | [#686](https://github.com/magento/magento2/issues/686) | [magento/graphql-ce#695](https://github.com/magento/graphql-ce/pull/695) | -| [daniel-ifrim](https://github.com/daniel-ifrim) | [#22380](https://github.com/magento/magento2/issues/22380) | [magento/magento2#22387](https://github.com/magento/magento2/pull/22387) | -| [Cristiano81](https://github.com/Cristiano81) | [#18183](https://github.com/magento/magento2/issues/18183) | [magento/magento2#22718](https://github.com/magento/magento2/pull/22718) | -| [eduan](https://github.com/eduan) | [#22899](https://github.com/magento/magento2/issues/22899) | [magento/magento2#22914](https://github.com/magento/magento2/pull/22914) | -| [milindsingh](https://github.com/milindsingh) | [#22686](https://github.com/magento/magento2/issues/22686) | [magento/magento2#22687](https://github.com/magento/magento2/pull/22687) | -| [Sharkozp](https://github.com/Sharkozp) | [#22767](https://github.com/magento/magento2/issues/22767) | [magento/magento2#22772](https://github.com/magento/magento2/pull/22772) | -| [speedy008](https://github.com/speedy008) | [#20788](https://github.com/magento/magento2/issues/20788) | [magento/magento2#22931](https://github.com/magento/magento2/pull/22931) | -| [matin73](https://github.com/matin73) | [#23030](https://github.com/magento/magento2/issues/23030) | [magento/magento2#23033](https://github.com/magento/magento2/pull/23033) | -| [Den4ik](https://github.com/Den4ik) | [#23034](https://github.com/magento/magento2/issues/23034) | [magento/magento2#23035](https://github.com/magento/magento2/pull/23035) | -| [Vinai](https://github.com/Vinai) | [#12696](https://github.com/magento/magento2/issues/12696) | [magento/magento2#18459](https://github.com/magento/magento2/pull/18459) | -| [arnoudhgz](https://github.com/arnoudhgz) | [#13266](https://github.com/magento/magento2/issues/13266) | [magento/magento2#22071](https://github.com/magento/magento2/pull/22071) | -| [ihor-sviziev](https://github.com/ihor-sviziev) | [#22882](https://github.com/magento/magento2/issues/22882) | [magento/magento2#22884](https://github.com/magento/magento2/pull/22884) | -| [ashsmith](https://github.com/ashsmith) | [#23045](https://github.com/magento/magento2/issues/23045) | [magento/magento2#23046](https://github.com/magento/magento2/pull/23046) | -| [LouNik1984](https://github.com/LouNik1984) | [#16446](https://github.com/magento/magento2/issues/16446) | [magento/magento2#19184](https://github.com/magento/magento2/pull/19184) | -| [victortodoran](https://github.com/victortodoran) | [#14492](https://github.com/magento/magento2/issues/14492) | [magento/magento2#21394](https://github.com/magento/magento2/pull/21394) | -| [gwharton](https://github.com/gwharton) | [#21671](https://github.com/magento/magento2/issues/21671) | [magento/magento2#21674](https://github.com/magento/magento2/pull/21674) | -| [ketan-krish](https://github.com/ketan-krish) | [#22425](https://github.com/magento/magento2/issues/22425) | [magento/magento2#22426](https://github.com/magento/magento2/pull/22426) | -| [squeegy06](https://github.com/squeegy06) | [#22511](https://github.com/magento/magento2/issues/22511) | [magento/magento2#22521](https://github.com/magento/magento2/pull/22521) | -| [alexeya-ven](https://github.com/alexeya-ven) | [#23080](https://github.com/magento/magento2/issues/23080) | [magento/magento2#23081](https://github.com/magento/magento2/pull/23081) | -| [aasim110](https://github.com/aasim110) | [#19872](https://github.com/magento/magento2/issues/19872) | [magento/magento2#21131](https://github.com/magento/magento2/pull/21131) | -| [jasonkcarter](https://github.com/jasonkcarter) | [#22092](https://github.com/magento/magento2/issues/22092) | [magento/magento2#21131](https://github.com/magento/magento2/pull/21131) | -| [nicholasscottfish](https://github.com/nicholasscottfish) | [#22087](https://github.com/magento/magento2/issues/22087) | [magento/magento2#22646](https://github.com/magento/magento2/pull/22646) | -| [gwharton](https://github.com/gwharton) | [#21546](https://github.com/magento/magento2/issues/21546) | [magento/magento2#21605](https://github.com/magento/magento2/pull/21605) | -| [gwharton](https://github.com/gwharton) | [#21604](https://github.com/magento/magento2/issues/21604) | [magento/magento2#21605](https://github.com/magento/magento2/pull/21605) | -| [fetzi](https://github.com/fetzi) | [#4247](https://github.com/magento/magento2/issues/4247) | [magento/magento2#21876](https://github.com/magento/magento2/pull/21876) | -| [renard123](https://github.com/renard123) | [#22940](https://github.com/magento/magento2/issues/22940) | [magento/magento2#23007](https://github.com/magento/magento2/pull/23007) | -| [TomashKhamlai](https://github.com/TomashKhamlai) | [#23053](https://github.com/magento/magento2/issues/23053) | [magento/magento2#23118](https://github.com/magento/magento2/pull/23118) | -| [tzyganu](https://github.com/tzyganu) | [#675](https://github.com/magento/magento2/issues/675) | [magento/graphql-ce#677](https://github.com/magento/graphql-ce/pull/677) | -| [joshdifabio](https://github.com/joshdifabio) | [#682](https://github.com/magento/magento2/issues/682) | [magento/graphql-ce#700](https://github.com/magento/graphql-ce/pull/700) | -| [tzyganu](https://github.com/tzyganu) | [#681](https://github.com/magento/magento2/issues/681) | [magento/graphql-ce#711](https://github.com/magento/graphql-ce/pull/711) | -| [cdiacon](https://github.com/cdiacon) | [#22484](https://github.com/magento/magento2/issues/22484) | [magento/magento2#22637](https://github.com/magento/magento2/pull/22637) | -| [atwixfirster](https://github.com/atwixfirster) | [#23138](https://github.com/magento/magento2/issues/23138) | [magento/magento2#23140](https://github.com/magento/magento2/pull/23140) | -| [huyenvk2017](https://github.com/huyenvk2017) | [#22004](https://github.com/magento/magento2/issues/22004) | [magento/magento2#22704](https://github.com/magento/magento2/pull/22704) | -| [ioweb-gr](https://github.com/ioweb-gr) | [#22870](https://github.com/magento/magento2/issues/22870) | [magento/magento2#22933](https://github.com/magento/magento2/pull/22933) | -| [ioweb-gr](https://github.com/ioweb-gr) | [#22808](https://github.com/magento/magento2/issues/22808) | [magento/magento2#23005](https://github.com/magento/magento2/pull/23005) | -| [tzyganu](https://github.com/tzyganu) | [#674](https://github.com/magento/magento2/issues/674) | [magento/graphql-ce#709](https://github.com/magento/graphql-ce/pull/709) | -| [thecaligarmo](https://github.com/thecaligarmo) | [#683](https://github.com/magento/magento2/issues/683) | [magento/graphql-ce#717](https://github.com/magento/graphql-ce/pull/717) | -| [MagePsycho](https://github.com/MagePsycho) | [#9113](https://github.com/magento/magento2/issues/9113) | [magento/graphql-ce#721](https://github.com/magento/graphql-ce/pull/721) | -| [BezV8](https://github.com/BezV8) | [#18337](https://github.com/magento/magento2/issues/18337) | [magento/magento2#22942](https://github.com/magento/magento2/pull/22942) | -| [amitvishvakarma](https://github.com/amitvishvakarma) | [#23213](https://github.com/magento/magento2/issues/23213) | [magento/magento2#23216](https://github.com/magento/magento2/pull/23216) | -| [renard123](https://github.com/renard123) | [#23238](https://github.com/magento/magento2/issues/23238) | [magento/magento2#23250](https://github.com/magento/magento2/pull/23250) | -| [teokolo](https://github.com/teokolo) | [#4788](https://github.com/magento/magento2/issues/4788) | [magento/magento2#23129](https://github.com/magento/magento2/pull/23129) | -| [AlexWorking](https://github.com/AlexWorking) | [#22934](https://github.com/magento/magento2/issues/22934) | [magento/magento2#23129](https://github.com/magento/magento2/pull/23129) | -| [JeroenVanLeusden](https://github.com/JeroenVanLeusden) | [#23266](https://github.com/magento/magento2/issues/23266) | [magento/magento2#23267](https://github.com/magento/magento2/pull/23267) | -| [nishantjariwala](https://github.com/nishantjariwala) | [#23285](https://github.com/magento/magento2/issues/23285) | [magento/magento2#23286](https://github.com/magento/magento2/pull/23286) | -| [jamiemck](https://github.com/jamiemck) | [#486](https://github.com/magento/magento2/issues/486) | [magento/graphql-ce#714](https://github.com/magento/graphql-ce/pull/714) | -| [Dorn-](https://github.com/Dorn-) | [#716](https://github.com/magento/magento2/issues/716) | [magento/graphql-ce#723](https://github.com/magento/graphql-ce/pull/723) | -| [gstaniforthsessiondigital](https://github.com/gstaniforthsessiondigital) | [#687](https://github.com/magento/magento2/issues/687) | [magento/graphql-ce#749](https://github.com/magento/graphql-ce/pull/749) | -| [bharanikonda](https://github.com/bharanikonda) | [#20038](https://github.com/magento/magento2/issues/20038) | [magento/magento2#22675](https://github.com/magento/magento2/pull/22675) | -| [Vishrootways](https://github.com/Vishrootways) | [#23074](https://github.com/magento/magento2/issues/23074) | [magento/magento2#23309](https://github.com/magento/magento2/pull/23309) | -| [gfxguru](https://github.com/gfxguru) | [#622](https://github.com/magento/magento2/issues/622) | [magento/graphql-ce#626](https://github.com/magento/graphql-ce/pull/626) | -| [tzyganu](https://github.com/tzyganu) | [#732](https://github.com/magento/magento2/issues/732) | [magento/graphql-ce#734](https://github.com/magento/graphql-ce/pull/734) | -| [novakivskiy](https://github.com/novakivskiy) | [#13227](https://github.com/magento/magento2/issues/13227) | [magento/magento2#22650](https://github.com/magento/magento2/pull/22650) | -| [magesanjay](https://github.com/magesanjay) | [#22638](https://github.com/magento/magento2/issues/22638) | [magento/magento2#22800](https://github.com/magento/magento2/pull/22800) | -| [ilnytskyi](https://github.com/ilnytskyi) | [#22266](https://github.com/magento/magento2/issues/22266) | [magento/magento2#23218](https://github.com/magento/magento2/pull/23218) | -| [OleksiiBulba](https://github.com/OleksiiBulba) | [#23230](https://github.com/magento/magento2/issues/23230) | [magento/magento2#23247](https://github.com/magento/magento2/pull/23247) | -| [alexeya-ven](https://github.com/alexeya-ven) | [#23333](https://github.com/magento/magento2/issues/23333) | [magento/magento2#23338](https://github.com/magento/magento2/pull/23338) | -| [TomashKhamlai](https://github.com/TomashKhamlai) | [#23346](https://github.com/magento/magento2/issues/23346) | [magento/magento2#23367](https://github.com/magento/magento2/pull/23367) | -| [udovicic](https://github.com/udovicic) | [#21380](https://github.com/magento/magento2/issues/21380) | [magento/magento2#23312](https://github.com/magento/magento2/pull/23312) | -| [oleksii-lisovyi](https://github.com/oleksii-lisovyi) | [#21136](https://github.com/magento/magento2/issues/21136) | [magento/magento2#22116](https://github.com/magento/magento2/pull/22116) | -| [eduard13](https://github.com/eduard13) | [#23233](https://github.com/magento/magento2/issues/23233) | [magento/magento2#23234](https://github.com/magento/magento2/pull/23234) | -| [AndreasMueller75](https://github.com/AndreasMueller75) | [#21974](https://github.com/magento/magento2/issues/21974) | [magento/magento2#23393](https://github.com/magento/magento2/pull/23393) | -| [iamckindia](https://github.com/iamckindia) | [#23377](https://github.com/magento/magento2/issues/23377) | [magento/magento2#23394](https://github.com/magento/magento2/pull/23394) | -| [YurySk](https://github.com/YurySk) | [#22998](https://github.com/magento/magento2/issues/22998) | [magento/magento2#23048](https://github.com/magento/magento2/pull/23048) | -| [ankurvr](https://github.com/ankurvr) | [#23522](https://github.com/magento/magento2/issues/23522) | [magento/magento2#23523](https://github.com/magento/magento2/pull/23523) | -| [CNanninga](https://github.com/CNanninga) | [#8298](https://github.com/magento/magento2/issues/8298) | [magento/magento2#23528](https://github.com/magento/magento2/pull/23528) | -| [gwharton](https://github.com/gwharton) | [#22103](https://github.com/magento/magento2/issues/22103) | [magento/magento2#23535](https://github.com/magento/magento2/pull/23535) | -| [msawyers](https://github.com/msawyers) | [#23199](https://github.com/magento/magento2/issues/23199) | [magento/magento2#23535](https://github.com/magento/magento2/pull/23535) | -| [sunilit42](https://github.com/sunilit42) | [#23538](https://github.com/magento/magento2/issues/23538) | [magento/magento2#23541](https://github.com/magento/magento2/pull/23541) | -| [speedy008](https://github.com/speedy008) | [#21126](https://github.com/magento/magento2/issues/21126) | [magento/magento2#21128](https://github.com/magento/magento2/pull/21128) | -| [dipeshrangani](https://github.com/dipeshrangani) | [#23471](https://github.com/magento/magento2/issues/23471) | [magento/magento2#23474](https://github.com/magento/magento2/pull/23474) | -| [nirmalraval18](https://github.com/nirmalraval18) | [#23466](https://github.com/magento/magento2/issues/23466) | [magento/magento2#23477](https://github.com/magento/magento2/pull/23477) | -| [vrajesh-patel1993](https://github.com/vrajesh-patel1993) | [#23467](https://github.com/magento/magento2/issues/23467) | [magento/magento2#23494](https://github.com/magento/magento2/pull/23494) | -| [stkrelax](https://github.com/stkrelax) | [#23222](https://github.com/magento/magento2/issues/23222) | [magento/magento2#23310](https://github.com/magento/magento2/pull/23310) | -| [bhavik43](https://github.com/bhavik43) | [#23354](https://github.com/magento/magento2/issues/23354) | [magento/magento2#23360](https://github.com/magento/magento2/pull/23360) | -| [engcom-Golf](https://github.com/engcom-Golf) | [#23424](https://github.com/magento/magento2/issues/23424) | [magento/magento2#23427](https://github.com/magento/magento2/pull/23427) | -| [molovo](https://github.com/molovo) | [#16234](https://github.com/magento/magento2/issues/16234) | [magento/magento2#23496](https://github.com/magento/magento2/pull/23496) | -| [troublediehard](https://github.com/troublediehard) | [#9798](https://github.com/magento/magento2/issues/9798) | [magento/magento2#23529](https://github.com/magento/magento2/pull/23529) | -| [alexgoodey](https://github.com/alexgoodey) | [#6287](https://github.com/magento/magento2/issues/6287) | [magento/magento2#20918](https://github.com/magento/magento2/pull/20918) | -| [kanduvisla](https://github.com/kanduvisla) | [#8258](https://github.com/magento/magento2/issues/8258) | [magento/magento2#15383](https://github.com/magento/magento2/pull/15383) | -| [craigcarnell](https://github.com/craigcarnell) | [#13561](https://github.com/magento/magento2/issues/13561) | [magento/magento2#18075](https://github.com/magento/magento2/pull/18075) | -| [KooTjoo](https://github.com/KooTjoo) | [#22545](https://github.com/magento/magento2/issues/22545) | [magento/magento2#22658](https://github.com/magento/magento2/pull/22658) | -| [diamondavocado](https://github.com/diamondavocado) | [#23383](https://github.com/magento/magento2/issues/23383) | [magento/magento2#23500](https://github.com/magento/magento2/pull/23500) | -| [bhavik43](https://github.com/bhavik43) | [#22950](https://github.com/magento/magento2/issues/22950) | [magento/magento2#23226](https://github.com/magento/magento2/pull/23226) | -| [rogyar](https://github.com/rogyar) | [#23606](https://github.com/magento/magento2/issues/23606) | [magento/magento2#23607](https://github.com/magento/magento2/pull/23607) | -| [tzyganu](https://github.com/tzyganu) | [#736](https://github.com/magento/magento2/issues/736) | [magento/graphql-ce#747](https://github.com/magento/graphql-ce/pull/747) | -| [Vinai](https://github.com/Vinai) | [#739](https://github.com/magento/magento2/issues/739) | [magento/graphql-ce#753](https://github.com/magento/graphql-ce/pull/753) | -| [bst2002git](https://github.com/bst2002git) | [#23435](https://github.com/magento/magento2/issues/23435) | [magento/magento2#23444](https://github.com/magento/magento2/pull/23444) | -| [AleksLi](https://github.com/AleksLi) | [#12817](https://github.com/magento/magento2/issues/12817) | [magento/magento2#20579](https://github.com/magento/magento2/pull/20579) | -| [swnsma](https://github.com/swnsma) | [#23386](https://github.com/magento/magento2/issues/23386) | [magento/magento2#23387](https://github.com/magento/magento2/pull/23387) | -| [pavdan](https://github.com/pavdan) | [#23345](https://github.com/magento/magento2/issues/23345) | [magento/magento2#23358](https://github.com/magento/magento2/pull/23358) | -| [davidpixie](https://github.com/davidpixie) | [#22814](https://github.com/magento/magento2/issues/22814) | [magento/magento2#23459](https://github.com/magento/magento2/pull/23459) | -| [gwharton](https://github.com/gwharton) | [#23594](https://github.com/magento/magento2/issues/23594) | [magento/magento2#23598](https://github.com/magento/magento2/pull/23598) | -| [gwharton](https://github.com/gwharton) | [#23595](https://github.com/magento/magento2/issues/23595) | [magento/magento2#23598](https://github.com/magento/magento2/pull/23598) | -| [gwharton](https://github.com/gwharton) | [#23596](https://github.com/magento/magento2/issues/23596) | [magento/magento2#23598](https://github.com/magento/magento2/pull/23598) | -| [ffauvel](https://github.com/ffauvel) | [#23643](https://github.com/magento/magento2/issues/23643) | [magento/magento2#23649](https://github.com/magento/magento2/pull/23649) | -| [gwharton](https://github.com/gwharton) | [#23597](https://github.com/magento/magento2/issues/23597) | [magento/magento2#23710](https://github.com/magento/magento2/pull/23710) | -| [shinoamakusa](https://github.com/shinoamakusa) | [#23510](https://github.com/magento/magento2/issues/23510) | [magento/magento2#23524](https://github.com/magento/magento2/pull/23524) | -| [kassner](https://github.com/kassner) | [#22890](https://github.com/magento/magento2/issues/22890) | [magento/magento2#22891](https://github.com/magento/magento2/pull/22891) | -| [QuentinFarizon](https://github.com/QuentinFarizon) | [#23054](https://github.com/magento/magento2/issues/23054) | [magento/magento2#23125](https://github.com/magento/magento2/pull/23125) | -| [roma84](https://github.com/roma84) | [#23135](https://github.com/magento/magento2/issues/23135) | [magento/magento2#23173](https://github.com/magento/magento2/pull/23173) | -| [navarr](https://github.com/navarr) | [#23211](https://github.com/magento/magento2/issues/23211) | [magento/magento2#23688](https://github.com/magento/magento2/pull/23688) | -| [simonlandry0](https://github.com/simonlandry0) | [#23624](https://github.com/magento/magento2/issues/23624) | [magento/magento2#23718](https://github.com/magento/magento2/pull/23718) | -| [ioweb-gr](https://github.com/ioweb-gr) | [#23717](https://github.com/magento/magento2/issues/23717) | [magento/magento2#23753](https://github.com/magento/magento2/pull/23753) | -| [tzyganu](https://github.com/tzyganu) | [#758](https://github.com/magento/magento2/issues/758) | [magento/graphql-ce#759](https://github.com/magento/graphql-ce/pull/759) | -| [patelnimesh1988](https://github.com/patelnimesh1988) | [#14071](https://github.com/magento/magento2/issues/14071) | [magento/magento2#22984](https://github.com/magento/magento2/pull/22984) | -| [delyriand](https://github.com/delyriand) | [#22112](https://github.com/magento/magento2/issues/22112) | [magento/magento2#23656](https://github.com/magento/magento2/pull/23656) | -| [shilpambb](https://github.com/shilpambb) | [#23654](https://github.com/magento/magento2/issues/23654) | [magento/magento2#23681](https://github.com/magento/magento2/pull/23681) | -| [gwharton](https://github.com/gwharton) | [#23751](https://github.com/magento/magento2/issues/23751) | [magento/magento2#23752](https://github.com/magento/magento2/pull/23752) | -| [textarea](https://github.com/textarea) | [#23678](https://github.com/magento/magento2/issues/23678) | [magento/magento2#23679](https://github.com/magento/magento2/pull/23679) | -| [edenduong](https://github.com/edenduong) | [#23777](https://github.com/magento/magento2/issues/23777) | [magento/magento2#23779](https://github.com/magento/magento2/pull/23779) | -| [p-bystritsky](https://github.com/p-bystritsky) | [#23789](https://github.com/magento/magento2/issues/23789) | [magento/magento2#23790](https://github.com/magento/magento2/pull/23790) | -| [nehaguptacedcoss](https://github.com/nehaguptacedcoss) | [#22702](https://github.com/magento/magento2/issues/22702) | [magento/magento2#23803](https://github.com/magento/magento2/pull/23803) | -| [clockworkgeek](https://github.com/clockworkgeek) | [#167](https://github.com/magento/magento2/issues/167) | [magento/graphql-ce#351](https://github.com/magento/graphql-ce/pull/351) | -| [ihor-sviziev](https://github.com/ihor-sviziev) | [#438](https://github.com/magento/magento2/issues/438) | [magento/graphql-ce#699](https://github.com/magento/graphql-ce/pull/699) | -| [fatihky](https://github.com/fatihky) | [#702](https://github.com/magento/magento2/issues/702) | [magento/graphql-ce#779](https://github.com/magento/graphql-ce/pull/779) | -| [Vinai](https://github.com/Vinai) | [#738](https://github.com/magento/magento2/issues/738) | [magento/graphql-ce#789](https://github.com/magento/graphql-ce/pull/789) | -| [pmsteil](https://github.com/pmsteil) | [#23405](https://github.com/magento/magento2/issues/23405) | [magento/magento2#23866](https://github.com/magento/magento2/pull/23866) | -| [edenduong](https://github.com/edenduong) | [#23900](https://github.com/magento/magento2/issues/23900) | [magento/magento2#23901](https://github.com/magento/magento2/pull/23901) | -| [edenduong](https://github.com/edenduong) | [#23904](https://github.com/magento/magento2/issues/23904) | [magento/magento2#23905](https://github.com/magento/magento2/pull/23905) | -| [edenduong](https://github.com/edenduong) | [#23916](https://github.com/magento/magento2/issues/23916) | [magento/magento2#23917](https://github.com/magento/magento2/pull/23917) | -| [mfickers](https://github.com/mfickers) | [#23932](https://github.com/magento/magento2/issues/23932) | [magento/magento2#23933](https://github.com/magento/magento2/pull/23933) | +| Vitaliy Boyko | [#533](https://github.com/magento/magento2/issues/533) | [magento/graphql-ce#578](https://github.com/magento/graphql-ce/pull/578) | +| Marius Strajeru | [#601](https://github.com/magento/magento2/issues/601) | [magento/graphql-ce#632](https://github.com/magento/graphql-ce/pull/632) | +| Patrick McLain | [#631](https://github.com/magento/magento2/issues/631) | [magento/graphql-ce#634](https://github.com/magento/graphql-ce/pull/634) | +| Dipti | [#20124](https://github.com/magento/magento2/issues/20124) | [magento/magento2#20135](https://github.com/magento/magento2/pull/20135) | +| Walter Smulders | [#21978](https://github.com/magento/magento2/issues/21978) | [magento/magento2#22020](https://github.com/magento/magento2/pull/22020) | +| Alessandro | [#22045](https://github.com/magento/magento2/issues/22045) | [magento/magento2#22260](https://github.com/magento/magento2/pull/22260) | +| Userr017 | [#22134](https://github.com/magento/magento2/issues/22134) | [magento/magento2#22260](https://github.com/magento/magento2/pull/22260) | +| Stephen Biston | [#22249](https://github.com/magento/magento2/issues/22249) | [magento/magento2#22287](https://github.com/magento/magento2/pull/22287) | +| bhavik43 | [#22527](https://github.com/magento/magento2/issues/22527) | [magento/magento2#22532](https://github.com/magento/magento2/pull/22532) | +| Marius Strajeru | [#628](https://github.com/magento/magento2/issues/628) | [magento/graphql-ce#636](https://github.com/magento/graphql-ce/pull/636) | +| Francois Zaninotto | [#640](https://github.com/magento/magento2/issues/640) | [magento/graphql-ce#648](https://github.com/magento/graphql-ce/pull/648) | +| Ajay Kulkarni | [#603](https://github.com/magento/magento2/issues/603) | [magento/graphql-ce#653](https://github.com/magento/graphql-ce/pull/653) | +| Abrar Pathan | [#22406](https://github.com/magento/magento2/issues/22406) | [magento/magento2#22423](https://github.com/magento/magento2/pull/22423) | +| justinharris1986 | [#19515](https://github.com/magento/magento2/issues/19515) | [magento/magento2#19767](https://github.com/magento/magento2/pull/19767) | +| Christoph Aßmann | [#21473](https://github.com/magento/magento2/issues/21473) | [magento/magento2#21992](https://github.com/magento/magento2/pull/21992) | +| Vishal Sutariya | [#22641](https://github.com/magento/magento2/issues/22641) | [magento/magento2#22643](https://github.com/magento/magento2/pull/22643) | +| Arvinda Kumar | [#22647](https://github.com/magento/magento2/issues/22647) | [magento/magento2#22656](https://github.com/magento/magento2/pull/22656) | +| Michael Thessel | [#22395](https://github.com/magento/magento2/issues/22395) | [magento/magento2#22720](https://github.com/magento/magento2/pull/22720) | +| gfxguru | [#198](https://github.com/magento/magento2/issues/198) | [magento/graphql-ce#371](https://github.com/magento/graphql-ce/pull/371) | +| ed29 | [#436](https://github.com/magento/magento2/issues/436) | [magento/graphql-ce#445](https://github.com/magento/graphql-ce/pull/445) | +| Calvin Cao | [#309](https://github.com/magento/magento2/issues/309) | [magento/graphql-ce#504](https://github.com/magento/graphql-ce/pull/504) | +| beckindesigns | [#535](https://github.com/magento/magento2/issues/535) | [magento/graphql-ce#650](https://github.com/magento/graphql-ce/pull/650) | +| Marius Strajeru | [#658](https://github.com/magento/magento2/issues/658) | [magento/graphql-ce#665](https://github.com/magento/graphql-ce/pull/665), [magento/graphql-ce#744](https://github.com/magento/graphql-ce/pull/744) | +| Marius Strajeru | [#657](https://github.com/magento/magento2/issues/657) | [magento/graphql-ce#666](https://github.com/magento/graphql-ce/pull/666) | +| Felix Wolfsteller | [#12612](https://github.com/magento/magento2/issues/12612) | [magento/magento2#22558](https://github.com/magento/magento2/pull/22558) | +| Leone | [#22556](https://github.com/magento/magento2/issues/22556) | [magento/magento2#22558](https://github.com/magento/magento2/pull/22558) | +| Vincent Marmiesse | [#20843](https://github.com/magento/magento2/issues/20843) | [magento/magento2#22560](https://github.com/magento/magento2/pull/22560) | +| Arvinda Kumar | [#22636](https://github.com/magento/magento2/issues/22636) | [magento/magento2#22644](https://github.com/magento/magento2/pull/22644) | +| Surabhi Cedcoss | [#22640](https://github.com/magento/magento2/issues/22640) | [magento/magento2#22655](https://github.com/magento/magento2/pull/22655) | +| Pratik Oza | [#20906](https://github.com/magento/magento2/issues/20906) | [magento/magento2#22739](https://github.com/magento/magento2/pull/22739) | +| Chirag Patel | [#22771](https://github.com/magento/magento2/issues/22771) | [magento/magento2#22779](https://github.com/magento/magento2/pull/22779) | +| DigitalStartupUK | [#22788](https://github.com/magento/magento2/issues/22788) | [magento/magento2#22791](https://github.com/magento/magento2/pull/22791) | +| Hoszi | [#18651](https://github.com/magento/magento2/issues/18651) | [magento/magento2#19584](https://github.com/magento/magento2/pull/19584) | +| gwharton | [#21672](https://github.com/magento/magento2/issues/21672) | [magento/magento2#21675](https://github.com/magento/magento2/pull/21675), [magento/magento2#21674](https://github.com/magento/magento2/pull/21674) | +| Mateusz Wegrzycki | [#22028](https://github.com/magento/magento2/issues/22028) | [magento/magento2#22575](https://github.com/magento/magento2/pull/22575) | +| Dharmesh Vaja | [#21558](https://github.com/magento/magento2/issues/21558) | [magento/magento2#22794](https://github.com/magento/magento2/pull/22794) | +| jhruehl | [#22127](https://github.com/magento/magento2/issues/22127) | [magento/magento2#22186](https://github.com/magento/magento2/pull/22186) | +| Sanjay Vadadoriya | [#22639](https://github.com/magento/magento2/issues/22639) | [magento/magento2#22724](https://github.com/magento/magento2/pull/22724) | +| Arvinda Kumar | [#22676](https://github.com/magento/magento2/issues/22676) | [magento/magento2#22742](https://github.com/magento/magento2/pull/22742) | +| Jacob Drummond | [#6659](https://github.com/magento/magento2/issues/6659) | [magento/magento2#22850](https://github.com/magento/magento2/pull/22850) | +| Ben | [#4628](https://github.com/magento/magento2/issues/4628) | [magento/magento2#22854](https://github.com/magento/magento2/pull/22854) | +| Sam Tay | [#3795](https://github.com/magento/magento2/issues/3795) | [magento/magento2#21397](https://github.com/magento/magento2/pull/21397) | +| Serhiy Zhovnir | [#22786](https://github.com/magento/magento2/issues/22786) | [magento/magento2#22787](https://github.com/magento/magento2/pull/22787) | +| Eduard Chitoraga | [#22822](https://github.com/magento/magento2/issues/22822) | [magento/magento2#22823](https://github.com/magento/magento2/pull/22823) | +| Florian Lambert | [#21852](https://github.com/magento/magento2/issues/21852) | [magento/magento2#22607](https://github.com/magento/magento2/pull/22607) | +| Pieter Hoste | [#22563](https://github.com/magento/magento2/issues/22563) | [magento/magento2#22607](https://github.com/magento/magento2/pull/22607) | +| bhavik43 | [#22736](https://github.com/magento/magento2/issues/22736) | [magento/magento2#22795](https://github.com/magento/magento2/pull/22795) | +| Amit Vishvakarma | [#22875](https://github.com/magento/magento2/issues/22875) | [magento/magento2#22876](https://github.com/magento/magento2/pull/22876) | +| Abrar Pathan | [#21214](https://github.com/magento/magento2/issues/21214) | [magento/magento2#21215](https://github.com/magento/magento2/pull/21215) | +| mikelevy300 | [#22143](https://github.com/magento/magento2/issues/22143) | [magento/magento2#22307](https://github.com/magento/magento2/pull/22307) | +| p-bystritsky | [#22317](https://github.com/magento/magento2/issues/22317) | [magento/magento2#22444](https://github.com/magento/magento2/pull/22444) | +| Michael Thessel | [#22396](https://github.com/magento/magento2/issues/22396) | [magento/magento2#22513](https://github.com/magento/magento2/pull/22513) | +| Grishma Nayee | [#22506](https://github.com/magento/magento2/issues/22506) | [magento/magento2#22520](https://github.com/magento/magento2/pull/22520) | +| 808brinks | [#22869](https://github.com/magento/magento2/issues/22869) | [magento/magento2#22893](https://github.com/magento/magento2/pull/22893) | +| Kajal Solanki | [#22924](https://github.com/magento/magento2/issues/22924) | [magento/magento2#22926](https://github.com/magento/magento2/pull/22926) | +| ipascual | [#20186](https://github.com/magento/magento2/issues/20186) | [magento/magento2#22947](https://github.com/magento/magento2/pull/22947) | +| Luke Steadman | [#574](https://github.com/magento/magento2/issues/574) | [magento/graphql-ce#694](https://github.com/magento/graphql-ce/pull/694) | +| Marius Strajeru | [#686](https://github.com/magento/magento2/issues/686) | [magento/graphql-ce#695](https://github.com/magento/graphql-ce/pull/695) | +| Daniel Ifrim | [#22380](https://github.com/magento/magento2/issues/22380) | [magento/magento2#22387](https://github.com/magento/magento2/pull/22387) | +| Cristiano Nerozzi | [#18183](https://github.com/magento/magento2/issues/18183) | [magento/magento2#22718](https://github.com/magento/magento2/pull/22718) | +| Eduan | [#22899](https://github.com/magento/magento2/issues/22899) | [magento/magento2#22914](https://github.com/magento/magento2/pull/22914) | +| Milind Singh | [#22686](https://github.com/magento/magento2/issues/22686) | [magento/magento2#22687](https://github.com/magento/magento2/pull/22687) | +| Oleksandr Dykyi | [#22767](https://github.com/magento/magento2/issues/22767) | [magento/magento2#22772](https://github.com/magento/magento2/pull/22772) | +| Kajal Solanki | [#20788](https://github.com/magento/magento2/issues/20788) | [magento/magento2#22931](https://github.com/magento/magento2/pull/22931) | +| matin73 | [#23030](https://github.com/magento/magento2/issues/23030) | [magento/magento2#23033](https://github.com/magento/magento2/pull/23033) | +| Den4ik | [#23034](https://github.com/magento/magento2/issues/23034) | [magento/magento2#23035](https://github.com/magento/magento2/pull/23035) | +| Vinai Kopp | [#12696](https://github.com/magento/magento2/issues/12696) | [magento/magento2#18459](https://github.com/magento/magento2/pull/18459) | +| Arnoud Beekman | [#13266](https://github.com/magento/magento2/issues/13266) | [magento/magento2#22071](https://github.com/magento/magento2/pull/22071) | +| ihor-sviziev | [#22882](https://github.com/magento/magento2/issues/22882) | [magento/magento2#22884](https://github.com/magento/magento2/pull/22884) | +| Ash Smith | [#23045](https://github.com/magento/magento2/issues/23045) | [magento/magento2#23046](https://github.com/magento/magento2/pull/23046) | +| LouNik1984 | [#16446](https://github.com/magento/magento2/issues/16446) | [magento/magento2#19184](https://github.com/magento/magento2/pull/19184) | +| vitoriodachef | [#14492](https://github.com/magento/magento2/issues/14492) | [magento/magento2#21394](https://github.com/magento/magento2/pull/21394) | +| gwharton | [#21671](https://github.com/magento/magento2/issues/21671) | [magento/magento2#21674](https://github.com/magento/magento2/pull/21674) | +| Ketan Patel | [#22425](https://github.com/magento/magento2/issues/22425) | [magento/magento2#22426](https://github.com/magento/magento2/pull/22426) | +| Jason | [#22511](https://github.com/magento/magento2/issues/22511) | [magento/magento2#22521](https://github.com/magento/magento2/pull/22521) | +| alexeya-ven | [#23080](https://github.com/magento/magento2/issues/23080) | [magento/magento2#23081](https://github.com/magento/magento2/pull/23081) | +| Aasim | [#19872](https://github.com/magento/magento2/issues/19872) | [magento/magento2#21131](https://github.com/magento/magento2/pull/21131) | +| Jason Carter | [#22092](https://github.com/magento/magento2/issues/22092) | [magento/magento2#21131](https://github.com/magento/magento2/pull/21131) | +| Nicholas Scott Fish | [#22087](https://github.com/magento/magento2/issues/22087) | [magento/magento2#22646](https://github.com/magento/magento2/pull/22646) | +| gwharton | [#21546](https://github.com/magento/magento2/issues/21546) | [magento/magento2#21605](https://github.com/magento/magento2/pull/21605) | +| gwharton | [#21604](https://github.com/magento/magento2/issues/21604) | [magento/magento2#21605](https://github.com/magento/magento2/pull/21605) | +| Johannes Pichler | [#4247](https://github.com/magento/magento2/issues/4247) | [magento/magento2#21876](https://github.com/magento/magento2/pull/21876) | +| renard123 | [#22940](https://github.com/magento/magento2/issues/22940) | [magento/magento2#23007](https://github.com/magento/magento2/pull/23007) | +| Tomash Khamlai | [#23053](https://github.com/magento/magento2/issues/23053) | [magento/magento2#23118](https://github.com/magento/magento2/pull/23118) | +| Marius Strajeru | [#675](https://github.com/magento/magento2/issues/675) | [magento/graphql-ce#677](https://github.com/magento/graphql-ce/pull/677) | +| Josh Di Fabio | [#682](https://github.com/magento/magento2/issues/682) | [magento/graphql-ce#700](https://github.com/magento/graphql-ce/pull/700) | +| Marius Strajeru | [#681](https://github.com/magento/magento2/issues/681) | [magento/graphql-ce#711](https://github.com/magento/graphql-ce/pull/711) | +| Calin Diacon | [#22484](https://github.com/magento/magento2/issues/22484) | [magento/magento2#22637](https://github.com/magento/magento2/pull/22637) | +| atwixfirster | [#23138](https://github.com/magento/magento2/issues/23138) | [magento/magento2#23140](https://github.com/magento/magento2/pull/23140) | +| huyenvk2017 | [#22004](https://github.com/magento/magento2/issues/22004) | [magento/magento2#22704](https://github.com/magento/magento2/pull/22704) | +| Ioweb Technologies | [#22870](https://github.com/magento/magento2/issues/22870) | [magento/magento2#22933](https://github.com/magento/magento2/pull/22933) | +| Ioweb Technologies | [#22808](https://github.com/magento/magento2/issues/22808) | [magento/magento2#23005](https://github.com/magento/magento2/pull/23005) | +| Marius Strajeru | [#674](https://github.com/magento/magento2/issues/674) | [magento/graphql-ce#709](https://github.com/magento/graphql-ce/pull/709) | +| Aram Dermenjian | [#683](https://github.com/magento/magento2/issues/683) | [magento/graphql-ce#717](https://github.com/magento/graphql-ce/pull/717) | +| Raj KB | [#9113](https://github.com/magento/magento2/issues/9113) | [magento/graphql-ce#721](https://github.com/magento/graphql-ce/pull/721) | +| BezV8 | [#18337](https://github.com/magento/magento2/issues/18337) | [magento/magento2#22942](https://github.com/magento/magento2/pull/22942) | +| Amit Vishvakarma | [#23213](https://github.com/magento/magento2/issues/23213) | [magento/magento2#23216](https://github.com/magento/magento2/pull/23216) | +| renard123 | [#23238](https://github.com/magento/magento2/issues/23238) | [magento/magento2#23250](https://github.com/magento/magento2/pull/23250) | +| teokolo | [#4788](https://github.com/magento/magento2/issues/4788) | [magento/magento2#23129](https://github.com/magento/magento2/pull/23129) | +| AlexWorking | [#22934](https://github.com/magento/magento2/issues/22934) | [magento/magento2#23129](https://github.com/magento/magento2/pull/23129) | +| Jeroen VanLeusden | [#23266](https://github.com/magento/magento2/issues/23266) | [magento/magento2#23267](https://github.com/magento/magento2/pull/23267) | +| Nishant Jariwala | [#23285](https://github.com/magento/magento2/issues/23285) | [magento/magento2#23286](https://github.com/magento/magento2/pull/23286) | +| jamiemck | [#486](https://github.com/magento/magento2/issues/486) | [magento/graphql-ce#714](https://github.com/magento/graphql-ce/pull/714) | +| Dorn | [#716](https://github.com/magento/magento2/issues/716) | [magento/graphql-ce#723](https://github.com/magento/graphql-ce/pull/723) | +| Gavin Staniforth | [#687](https://github.com/magento/magento2/issues/687) | [magento/graphql-ce#749](https://github.com/magento/graphql-ce/pull/749) | +| bharanikonda | [#20038](https://github.com/magento/magento2/issues/20038) | [magento/magento2#22675](https://github.com/magento/magento2/pull/22675) | +| Vish V | [#23074](https://github.com/magento/magento2/issues/23074) | [magento/magento2#23309](https://github.com/magento/magento2/pull/23309) | +| gfxguru | [#622](https://github.com/magento/magento2/issues/622) | [magento/graphql-ce#626](https://github.com/magento/graphql-ce/pull/626) | +| Marius Strajeru | [#732](https://github.com/magento/magento2/issues/732) | [magento/graphql-ce#734](https://github.com/magento/graphql-ce/pull/734) | +| novakivskiy | [#13227](https://github.com/magento/magento2/issues/13227) | [magento/magento2#22650](https://github.com/magento/magento2/pull/22650) | +| Sanjay Vadadoriya | [#22638](https://github.com/magento/magento2/issues/22638) | [magento/magento2#22800](https://github.com/magento/magento2/pull/22800) | +| ilnytskyi | [#22266](https://github.com/magento/magento2/issues/22266) | [magento/magento2#23218](https://github.com/magento/magento2/pull/23218) | +| Oleksii Bulba | [#23230](https://github.com/magento/magento2/issues/23230) | [magento/magento2#23247](https://github.com/magento/magento2/pull/23247) | +| alexeya-ven | [#23333](https://github.com/magento/magento2/issues/23333) | [magento/magento2#23338](https://github.com/magento/magento2/pull/23338) | +| Tomash Khamlai | [#23346](https://github.com/magento/magento2/issues/23346) | [magento/magento2#23367](https://github.com/magento/magento2/pull/23367) | +| Udovicic | [#21380](https://github.com/magento/magento2/issues/21380) | [magento/magento2#23312](https://github.com/magento/magento2/pull/23312) | +| Oleksii Lisovyi | [#21136](https://github.com/magento/magento2/issues/21136) | [magento/magento2#22116](https://github.com/magento/magento2/pull/22116) | +| Eduard Chitoraga | [#23233](https://github.com/magento/magento2/issues/23233) | [magento/magento2#23234](https://github.com/magento/magento2/pull/23234) | +| AndreasMueller75 | [#21974](https://github.com/magento/magento2/issues/21974) | [magento/magento2#23393](https://github.com/magento/magento2/pull/23393) | +| Chandrakesh Kumar | [#23377](https://github.com/magento/magento2/issues/23377) | [magento/magento2#23394](https://github.com/magento/magento2/pull/23394) | +| Yury Skanavy | [#22998](https://github.com/magento/magento2/issues/22998) | [magento/magento2#23048](https://github.com/magento/magento2/pull/23048) | +| ankurvr | [#23522](https://github.com/magento/magento2/issues/23522) | [magento/magento2#23523](https://github.com/magento/magento2/pull/23523) | +| Chris Nanninga | [#8298](https://github.com/magento/magento2/issues/8298) | [magento/magento2#23528](https://github.com/magento/magento2/pull/23528) | +| gwharton | [#22103](https://github.com/magento/magento2/issues/22103) | [magento/magento2#23535](https://github.com/magento/magento2/pull/23535) | +| Maurice Sawyers | [#23199](https://github.com/magento/magento2/issues/23199) | [magento/magento2#23535](https://github.com/magento/magento2/pull/23535) | +| sunilit42 | [#23538](https://github.com/magento/magento2/issues/23538) | [magento/magento2#23541](https://github.com/magento/magento2/pull/23541) | +| Kajal Solanki | [#21126](https://github.com/magento/magento2/issues/21126) | [magento/magento2#21128](https://github.com/magento/magento2/pull/21128) | +| Dipesh Rangani | [#23471](https://github.com/magento/magento2/issues/23471) | [magento/magento2#23474](https://github.com/magento/magento2/pull/23474) | +| Nirmal Raval | [#23466](https://github.com/magento/magento2/issues/23466) | [magento/magento2#23477](https://github.com/magento/magento2/pull/23477) | +| vrajesh-patel1993 | [#23467](https://github.com/magento/magento2/issues/23467) | [magento/magento2#23494](https://github.com/magento/magento2/pull/23494) | +| stkrelax | [#23222](https://github.com/magento/magento2/issues/23222) | [magento/magento2#23310](https://github.com/magento/magento2/pull/23310) | +| bhavik43 | [#23354](https://github.com/magento/magento2/issues/23354) | [magento/magento2#23360](https://github.com/magento/magento2/pull/23360) | +| Nazar Klovanych | [#23424](https://github.com/magento/magento2/issues/23424) | [magento/magento2#23427](https://github.com/magento/magento2/pull/23427) | +| James Dinsdale | [#16234](https://github.com/magento/magento2/issues/16234) | [magento/magento2#23496](https://github.com/magento/magento2/pull/23496) | +| Dmytro Portenko | [#9798](https://github.com/magento/magento2/issues/9798) | [magento/magento2#23529](https://github.com/magento/magento2/pull/23529) | +| Alex Goodey | [#6287](https://github.com/magento/magento2/issues/6287) | [magento/magento2#20918](https://github.com/magento/magento2/pull/20918) | +| Giel Berkers | [#8258](https://github.com/magento/magento2/issues/8258) | [magento/magento2#15383](https://github.com/magento/magento2/pull/15383) | +| Craig Carnell | [#13561](https://github.com/magento/magento2/issues/13561) | [magento/magento2#18075](https://github.com/magento/magento2/pull/18075) | +| KooTjoo | [#22545](https://github.com/magento/magento2/issues/22545) | [magento/magento2#22658](https://github.com/magento/magento2/pull/22658) | +| diamondavocado | [#23383](https://github.com/magento/magento2/issues/23383) | [magento/magento2#23500](https://github.com/magento/magento2/pull/23500) | +| bhavik43 | [#22950](https://github.com/magento/magento2/issues/22950) | [magento/magento2#23226](https://github.com/magento/magento2/pull/23226) | +| Yaroslav Rogoza | [#23606](https://github.com/magento/magento2/issues/23606) | [magento/magento2#23607](https://github.com/magento/magento2/pull/23607) | +| Marius Strajeru | [#736](https://github.com/magento/magento2/issues/736) | [magento/graphql-ce#747](https://github.com/magento/graphql-ce/pull/747) | +| Vinai Kopp | [#739](https://github.com/magento/magento2/issues/739) | [magento/graphql-ce#753](https://github.com/magento/graphql-ce/pull/753) | +| bst2002git | [#23435](https://github.com/magento/magento2/issues/23435) | [magento/magento2#23444](https://github.com/magento/magento2/pull/23444) | +| AleksLi | [#12817](https://github.com/magento/magento2/issues/12817) | [magento/magento2#20579](https://github.com/magento/magento2/pull/20579) | +| swnsma | [#23386](https://github.com/magento/magento2/issues/23386) | [magento/magento2#23387](https://github.com/magento/magento2/pull/23387) | +| Daniel Pavlov | [#23345](https://github.com/magento/magento2/issues/23345) | [magento/magento2#23358](https://github.com/magento/magento2/pull/23358) | +| David Wilkinson | [#22814](https://github.com/magento/magento2/issues/22814) | [magento/magento2#23459](https://github.com/magento/magento2/pull/23459) | +| gwharton | [#23594](https://github.com/magento/magento2/issues/23594) | [magento/magento2#23598](https://github.com/magento/magento2/pull/23598) | +| gwharton | [#23595](https://github.com/magento/magento2/issues/23595) | [magento/magento2#23598](https://github.com/magento/magento2/pull/23598) | +| gwharton | [#23596](https://github.com/magento/magento2/issues/23596) | [magento/magento2#23598](https://github.com/magento/magento2/pull/23598) | +| ffauvel | [#23643](https://github.com/magento/magento2/issues/23643) | [magento/magento2#23649](https://github.com/magento/magento2/pull/23649) | +| gwharton | [#23597](https://github.com/magento/magento2/issues/23597) | [magento/magento2#23710](https://github.com/magento/magento2/pull/23710) | +| Oleg K. | [#23510](https://github.com/magento/magento2/issues/23510) | [magento/magento2#23524](https://github.com/magento/magento2/pull/23524) | +| Rafael Kassner | [#22890](https://github.com/magento/magento2/issues/22890) | [magento/magento2#22891](https://github.com/magento/magento2/pull/22891) | +| Quentin Farizon | [#23054](https://github.com/magento/magento2/issues/23054) | [magento/magento2#23125](https://github.com/magento/magento2/pull/23125) | +| Chumak Roman | [#23135](https://github.com/magento/magento2/issues/23135) | [magento/magento2#23173](https://github.com/magento/magento2/pull/23173) | +| Navarr Barnier | [#23211](https://github.com/magento/magento2/issues/23211) | [magento/magento2#23688](https://github.com/magento/magento2/pull/23688) | +| Simon Landry | [#23624](https://github.com/magento/magento2/issues/23624) | [magento/magento2#23718](https://github.com/magento/magento2/pull/23718) | +| Ioweb Technologies | [#23717](https://github.com/magento/magento2/issues/23717) | [magento/magento2#23753](https://github.com/magento/magento2/pull/23753) | +| tzyganu | [#758](https://github.com/magento/magento2/issues/758) | [magento/graphql-ce#759](https://github.com/magento/graphql-ce/pull/759) | +| Nimesh Patel | [#14071](https://github.com/magento/magento2/issues/14071) | [magento/magento2#22984](https://github.com/magento/magento2/pull/22984) | +| Maxime | [#22112](https://github.com/magento/magento2/issues/22112) | [magento/magento2#23656](https://github.com/magento/magento2/pull/23656) | +| shilpambb | [#23654](https://github.com/magento/magento2/issues/23654) | [magento/magento2#23681](https://github.com/magento/magento2/pull/23681) | +| gwharton | [#23751](https://github.com/magento/magento2/issues/23751) | [magento/magento2#23752](https://github.com/magento/magento2/pull/23752) | +| textarea | [#23678](https://github.com/magento/magento2/issues/23678) | [magento/magento2#23679](https://github.com/magento/magento2/pull/23679) | +| Eden Duong | [#23777](https://github.com/magento/magento2/issues/23777) | [magento/magento2#23779](https://github.com/magento/magento2/pull/23779) | +| p-bystritsky | [#23789](https://github.com/magento/magento2/issues/23789) | [magento/magento2#23790](https://github.com/magento/magento2/pull/23790) | +| nehaguptacedcoss | [#22702](https://github.com/magento/magento2/issues/22702) | [magento/magento2#23803](https://github.com/magento/magento2/pull/23803) | +| clockworkgeek | [#167](https://github.com/magento/magento2/issues/167) | [magento/graphql-ce#351](https://github.com/magento/graphql-ce/pull/351) | +| Ihor Sviziev | [#438](https://github.com/magento/magento2/issues/438) | [magento/graphql-ce#699](https://github.com/magento/graphql-ce/pull/699) | +| Fatih Kaya | [#702](https://github.com/magento/magento2/issues/702) | [magento/graphql-ce#779](https://github.com/magento/graphql-ce/pull/779) | +| Vinai Kopp | [#738](https://github.com/magento/magento2/issues/738) | [magento/graphql-ce#789](https://github.com/magento/graphql-ce/pull/789) | +| Patrick Steil | [#23405](https://github.com/magento/magento2/issues/23405) | [magento/magento2#23866](https://github.com/magento/magento2/pull/23866) | +| Eden Duong | [#23900](https://github.com/magento/magento2/issues/23900) | [magento/magento2#23901](https://github.com/magento/magento2/pull/23901) | +| Eden Duong | [#23904](https://github.com/magento/magento2/issues/23904) | [magento/magento2#23905](https://github.com/magento/magento2/pull/23905) | +| Eden Duong | [#23916](https://github.com/magento/magento2/issues/23916) | [magento/magento2#23917](https://github.com/magento/magento2/pull/23917) | +| mfickers | [#23932](https://github.com/magento/magento2/issues/23932) | [magento/magento2#23933](https://github.com/magento/magento2/pull/23933) | diff --git a/_includes/release-notes/engcomm-2-3-3-partner.md b/_includes/release-notes/engcomm-2-3-3-partner.md index f1f1f53fdc1..6202943c61f 100644 --- a/_includes/release-notes/engcomm-2-3-3-partner.md +++ b/_includes/release-notes/engcomm-2-3-3-partner.md @@ -2,7 +2,7 @@ | ------- | ------- | ------- | | Atwix | [magento/graphql-ce#531](https://github.com/magento/graphql-ce/pull/531), [magento/graphql-ce#578](https://github.com/magento/graphql-ce/pull/578), [magento/graphql-ce#647](https://github.com/magento/graphql-ce/pull/647), [magento/graphql-ce#648](https://github.com/magento/graphql-ce/pull/648), [magento/graphql-ce#651](https://github.com/magento/graphql-ce/pull/651), [magento/graphql-ce#652](https://github.com/magento/graphql-ce/pull/652), [magento/graphql-ce#653](https://github.com/magento/graphql-ce/pull/653), [magento/graphql-ce#371](https://github.com/magento/graphql-ce/pull/371), [magento/graphql-ce#504](https://github.com/magento/graphql-ce/pull/504), [magento/graphql-ce#585](https://github.com/magento/graphql-ce/pull/585), [magento/graphql-ce#650](https://github.com/magento/graphql-ce/pull/650), [magento/magento-functional-tests-migration#690](https://github.com/magento/magento-functional-tests-migration/pull/690), [magento/magento-functional-tests-migration#703](https://github.com/magento/magento-functional-tests-migration/pull/703), [magento/magento-functional-tests-migration#696](https://github.com/magento/magento-functional-tests-migration/pull/696), [magento/magento-functional-tests-migration#685](https://github.com/magento/magento-functional-tests-migration/pull/685), [magento/magento-functional-tests-migration#683](https://github.com/magento/magento-functional-tests-migration/pull/683), [magento/magento2#22779](https://github.com/magento/magento2/pull/22779), [magento/magento2#22787](https://github.com/magento/magento2/pull/22787), [magento/magento2#22823](https://github.com/magento/magento2/pull/22823), [magento/magento2#22914](https://github.com/magento/magento2/pull/22914), [magento/graphql-ce#677](https://github.com/magento/graphql-ce/pull/677), [magento/magento-functional-tests-migration#700](https://github.com/magento/magento-functional-tests-migration/pull/700), [magento/graphql-ce#711](https://github.com/magento/graphql-ce/pull/711), [magento/magento2#23140](https://github.com/magento/magento2/pull/23140), [magento/graphql-ce#537](https://github.com/magento/graphql-ce/pull/537), [magento/graphql-ce#549](https://github.com/magento/graphql-ce/pull/549), [magento/graphql-ce#709](https://github.com/magento/graphql-ce/pull/709), [magento/graphql-ce#717](https://github.com/magento/graphql-ce/pull/717), [magento/magento2#23129](https://github.com/magento/magento2/pull/23129), [magento/graphql-ce#714](https://github.com/magento/graphql-ce/pull/714), [magento/graphql-ce#626](https://github.com/magento/graphql-ce/pull/626), [magento/magento2#23234](https://github.com/magento/magento2/pull/23234), [magento/magento2#23607](https://github.com/magento/magento2/pull/23607), [magento/graphql-ce#493](https://github.com/magento/graphql-ce/pull/493), [magento/magento-functional-tests-migration#691](https://github.com/magento/magento-functional-tests-migration/pull/691), [magento/magento-functional-tests-migration#699](https://github.com/magento/magento-functional-tests-migration/pull/699), [magento/magento-functional-tests-migration#704](https://github.com/magento/magento-functional-tests-migration/pull/704), [magento/magento2#23666](https://github.com/magento/magento2/pull/23666), [magento/graphql-ce#351](https://github.com/magento/graphql-ce/pull/351), [magento/graphql-ce#779](https://github.com/magento/graphql-ce/pull/779), [magento/graphql-ce#780](https://github.com/magento/graphql-ce/pull/780), [magento/graphql-ce#788](https://github.com/magento/graphql-ce/pull/788), [magento/graphql-ce#789](https://github.com/magento/graphql-ce/pull/789), [magento/graphql-ce#790](https://github.com/magento/graphql-ce/pull/790) | [magento/graphql-ce#533](https://github.com/magento/graphql-ce/issues/533), [magento/graphql-ce#640](https://github.com/magento/graphql-ce/issues/640), [magento/graphql-ce#603](https://github.com/magento/graphql-ce/issues/603), [magento/graphql-ce#198](https://github.com/magento/graphql-ce/issues/198), [magento/graphql-ce#309](https://github.com/magento/graphql-ce/issues/309), [magento/graphql-ce#535](https://github.com/magento/graphql-ce/issues/535), [magento/magento2#22771](https://github.com/magento/magento2/issues/22771), [magento/magento2#22786](https://github.com/magento/magento2/issues/22786), [magento/magento2#22822](https://github.com/magento/magento2/issues/22822), [magento/magento2#22899](https://github.com/magento/magento2/issues/22899), [magento/graphql-ce#675](https://github.com/magento/graphql-ce/issues/675), [magento/graphql-ce#682](https://github.com/magento/graphql-ce/issues/682), [magento/graphql-ce#681](https://github.com/magento/graphql-ce/issues/681), [magento/magento2#23138](https://github.com/magento/magento2/issues/23138), [magento/graphql-ce#674](https://github.com/magento/graphql-ce/issues/674), [magento/graphql-ce#683](https://github.com/magento/graphql-ce/issues/683), [magento/magento2#4788](https://github.com/magento/magento2/issues/4788), [magento/magento2#22934](https://github.com/magento/magento2/issues/22934), [magento/graphql-ce#486](https://github.com/magento/graphql-ce/issues/486), [magento/graphql-ce#622](https://github.com/magento/graphql-ce/issues/622), [magento/magento2#23233](https://github.com/magento/magento2/issues/23233), [magento/magento2#23606](https://github.com/magento/magento2/issues/23606), [magento/graphql-ce#167](https://github.com/magento/graphql-ce/issues/167), [magento/graphql-ce#702](https://github.com/magento/graphql-ce/issues/702), [magento/graphql-ce#738](https://github.com/magento/graphql-ce/issues/738) | | Something Digital | [magento/graphql-ce#632](https://github.com/magento/graphql-ce/pull/632), [magento/magento2#19767](https://github.com/magento/magento2/pull/19767), [magento/graphql-ce#665](https://github.com/magento/graphql-ce/pull/665), [magento/graphql-ce#666](https://github.com/magento/graphql-ce/pull/666), [magento/graphql-ce#731](https://github.com/magento/graphql-ce/pull/731), [magento/graphql-ce#723](https://github.com/magento/graphql-ce/pull/723), [magento/graphql-ce#744](https://github.com/magento/graphql-ce/pull/744), [magento/graphql-ce#734](https://github.com/magento/graphql-ce/pull/734), [magento/magento2#23532](https://github.com/magento/magento2/pull/23532), [magento/graphql-ce#760](https://github.com/magento/graphql-ce/pull/760), [magento/graphql-ce#753](https://github.com/magento/graphql-ce/pull/753), [magento/graphql-ce#755](https://github.com/magento/graphql-ce/pull/755), [magento/graphql-ce#757](https://github.com/magento/graphql-ce/pull/757), [magento/graphql-ce#699](https://github.com/magento/graphql-ce/pull/699) | [magento/graphql-ce#601](https://github.com/magento/graphql-ce/issues/601), [magento/magento2#19515](https://github.com/magento/magento2/issues/19515), [magento/graphql-ce#658](https://github.com/magento/graphql-ce/issues/658), [magento/graphql-ce#657](https://github.com/magento/graphql-ce/issues/657), [magento/graphql-ce#716](https://github.com/magento/graphql-ce/issues/716), [magento/graphql-ce#732](https://github.com/magento/graphql-ce/issues/732), [magento/graphql-ce#739](https://github.com/magento/graphql-ce/issues/739), [magento/graphql-ce#438](https://github.com/magento/graphql-ce/issues/438) | -| ISM eCompany | [magento/magento2#20842](https://github.com/magento/magento2/pull/20842), [magento-engcom/msi#2172](https://github.com/magento-engcom/msi/pull/2172), [magento/graphql-ce#526](https://github.com/magento/graphql-ce/pull/526), [magento/graphql-ce#525](https://github.com/magento/graphql-ce/pull/525), [magento-engcom/msi#2233](https://github.com/magento-engcom/msi/pull/2233), [magento/magento2#19584](https://github.com/magento/magento2/pull/19584), [magento/magento2#20848](https://github.com/magento/magento2/pull/20848), [magento/graphql-ce#718](https://github.com/magento/graphql-ce/pull/718), [magento/graphql-ce#721](https://github.com/magento/graphql-ce/pull/721), [magento/graphql-ce#476](https://github.com/magento/graphql-ce/pull/476), [magento/graphql-ce#719](https://github.com/magento/graphql-ce/pull/719), [magento/magento2#23387](https://github.com/magento/magento2/pull/23387), [magento/magento2#23459](https://github.com/magento/magento2/pull/23459), [magento/magento2#22984](https://github.com/magento/magento2/pull/22984), [magento/graphql-ce#712](https://github.com/magento/graphql-ce/pull/712) | [magento/magento2#20481](https://github.com/magento/magento2/issues/20481), [magento/magento2#18651](https://github.com/magento/magento2/issues/18651), [magento/graphql-ce#9113](https://github.com/magento/graphql-ce/issues/9113), [magento/magento2#23386](https://github.com/magento/magento2/issues/23386), [magento/magento2#22814](https://github.com/magento/magento2/issues/22814), [magento/magento2#14071](https://github.com/magento/magento2/issues/14071) | +| ISM eCompany | [magento/magento2#20842](https://github.com/magento/magento2/pull/20842), [magento-engcom/msi#2172](https://github.com/magento-engcom/msi/pull/2172), [magento/graphql-ce#526](https://github.com/magento/graphql-ce/pull/526), [magento/graphql-ce#525](https://github.com/magento/graphql-ce/pull/525), [magento-engcom/msi#2233](https://github.com/magento-engcom/msi/pull/2233), [magento/magento2#19584](https://github.com/magento/magento2/pull/19584), [magento/magento2#20848](https://github.com/magento/magento2/pull/20848), [magento/graphql-ce#718](https://github.com/magento/graphql-ce/pull/718), [magento/graphql-ce#721](https://github.com/magento/graphql-ce/pull/721), [magento/graphql-ce#476](https://github.com/magento/graphql-ce/pull/476), [magento/graphql-ce#719](https://github.com/magento/graphql-ce/pull/719), [magento/magento2#23387](https://github.com/magento/magento2/pull/23387), [magento/magento2#23459](https://github.com/magento/magento2/pull/23459), [magento/magento2#22984](https://github.com/magento/magento2/pull/22984), [magento/graphql-ce#712](https://github.com/magento/graphql-ce/pull/712) | [magento/magento2#20481](https://github.com/magento/magento2/issues/20481), [magento/magento2#18651](https://github.com/magento/magento2/issues/18651), [magento/magento2#23386](https://github.com/magento/magento2/issues/23386), [magento/magento2#22814](https://github.com/magento/magento2/issues/22814), [magento/magento2#14071](https://github.com/magento/magento2/issues/14071) | | Krish TechnoLabs | [magento/magento2#19653](https://github.com/magento/magento2/pull/19653), [magento/magento2#21633](https://github.com/magento/magento2/pull/21633), [magento/magento2#22405](https://github.com/magento/magento2/pull/22405), [magento/magento2#22526](https://github.com/magento/magento2/pull/22526), [magento/magento2#22599](https://github.com/magento/magento2/pull/22599), [magento/graphql-ce#689](https://github.com/magento/graphql-ce/pull/689), [magento/magento2#22758](https://github.com/magento/magento2/pull/22758), [magento/magento2#21397](https://github.com/magento/magento2/pull/21397), [magento/magento2#21215](https://github.com/magento/magento2/pull/21215), [magento/magento2#22926](https://github.com/magento/magento2/pull/22926), [magento/magento2#22387](https://github.com/magento/magento2/pull/22387), [magento/magento2#19184](https://github.com/magento/magento2/pull/19184), [magento/magento2#22426](https://github.com/magento/magento2/pull/22426), [magento/magento2#22341](https://github.com/magento/magento2/pull/22341), [magento/magento2#23007](https://github.com/magento/magento2/pull/23007), [magento/magento2#23335](https://github.com/magento/magento2/pull/23335), [magento/graphql-ce#528](https://github.com/magento/graphql-ce/pull/528), [magento/magento2#23366](https://github.com/magento/magento2/pull/23366), [magento/magento2#21128](https://github.com/magento/magento2/pull/21128), [magento/magento2#23496](https://github.com/magento/magento2/pull/23496) | [magento/magento2#9155](https://github.com/magento/magento2/issues/9155), [magento/magento2#16939](https://github.com/magento/magento2/issues/16939), [magento/magento2#21596](https://github.com/magento/magento2/issues/21596), [magento/magento2#3795](https://github.com/magento/magento2/issues/3795), [magento/magento2#21214](https://github.com/magento/magento2/issues/21214), [magento/magento2#22924](https://github.com/magento/magento2/issues/22924), [magento/magento2#22380](https://github.com/magento/magento2/issues/22380), [magento/magento2#16446](https://github.com/magento/magento2/issues/16446), [magento/magento2#22425](https://github.com/magento/magento2/issues/22425), [magento/magento2#22940](https://github.com/magento/magento2/issues/22940), [magento/magento2#21126](https://github.com/magento/magento2/issues/21126), [magento/magento2#16234](https://github.com/magento/magento2/issues/16234) | | Strix | [magento-engcom/msi#2262](https://github.com/magento-engcom/msi/pull/2262), [magento/magento2#22839](https://github.com/magento/magento2/pull/22839), [magento/inventory#2312](https://github.com/magento/inventory/pull/2312), [magento/magento2#23201](https://github.com/magento/magento2/pull/23201), [magento/magento2#23240](https://github.com/magento/magento2/pull/23240) | | | Comwrap | [magento/async-import#102](https://github.com/magento/async-import/pull/102) | | @@ -22,6 +22,6 @@ | Vaimo | [magento/magento2#22854](https://github.com/magento/magento2/pull/22854), [magento/magento2#23248](https://github.com/magento/magento2/pull/23248), [magento/magento2#22213](https://github.com/magento/magento2/pull/22213) | [magento/magento2#4628](https://github.com/magento/magento2/issues/4628) | | Limesharp | [magento/graphql-ce#747](https://github.com/magento/graphql-ce/pull/747) | [magento/graphql-ce#736](https://github.com/magento/graphql-ce/issues/736) | | Brandung | [magento/magento2#22186](https://github.com/magento/magento2/pull/22186), [magento/magento2#23099](https://github.com/magento/magento2/pull/23099) | [magento/magento2#22127](https://github.com/magento/magento2/issues/22127) | -| MageSpecialist | [magento/partners-magento2ee#18](https://github.com/magento/partners-magento2ee/pull/18), [magento/magento2#23353](https://github.com/magento/magento2/pull/23353) | | +| MageSpecialist | magento/partners-magento2ee#18, [magento/magento2#23353](https://github.com/magento/magento2/pull/23353) | | | Crimson Agility | [magento/magento2#23656](https://github.com/magento/magento2/pull/23656) | [magento/magento2#22112](https://github.com/magento/magento2/issues/22112) | | Space 48 | [magento/magento2#22844](https://github.com/magento/magento2/pull/22844), [magento/magento2#23244](https://github.com/magento/magento2/pull/23244) | | \ No newline at end of file diff --git a/_includes/vendor/types-def.md b/_includes/vendor/types-def.md index f9faafcf360..bd5e9a1169c 100644 --- a/_includes/vendor/types-def.md +++ b/_includes/vendor/types-def.md @@ -1,12 +1,12 @@ where -* `` is the base directory in which your component is located. Typical values are `app/code` or `vendor` relative to the Magento installation directory. -* `` is the component's vendor name; for example, Magento's vendor name is `magento`. -* `` is one of the following: +* `` is the base directory in which your component is located. Typical values are `app/code` or `vendor` relative to the Magento installation directory. +* `` is the component's vendor name; for example, Magento's vendor name is `magento`. +* `` is one of the following: - * `module-`: An extension or module. - * `theme-`: Theme. - * `language-`: Language package. + * `module-`: An extension or module. + * `theme-`: Theme. + * `language-`: Language package. {:.bs-callout .bs-callout-info} Currently, themes are located under `/app/design/frontend` or `/app/design/adminhtml`. diff --git a/_includes/webapi/tutorials/configure-shipping-methods.md b/_includes/webapi/tutorials/configure-shipping-methods.md index 642cd23ae31..d4db87bc508 100644 --- a/_includes/webapi/tutorials/configure-shipping-methods.md +++ b/_includes/webapi/tutorials/configure-shipping-methods.md @@ -11,5 +11,5 @@ Free shipping | `freeshipping` | No To change which offline shipping methods are available: 1. Select **Stores** > **Settings** > **Configuration** > **Sales** > **Shipping Methods** in Admin. -2. Enable or disable the shipping methods as desired. -3. Click **Save Config**. +1. Enable or disable the shipping methods as desired. +1. Click **Save Config**. diff --git a/_includes/webapi/tutorials/set-payment-methods.md b/_includes/webapi/tutorials/set-payment-methods.md index 837ca8bfafa..1c025cde764 100644 --- a/_includes/webapi/tutorials/set-payment-methods.md +++ b/_includes/webapi/tutorials/set-payment-methods.md @@ -11,5 +11,5 @@ Zero Subtotal Checkout | `free` | Yes In this tutorial, configure Magento to accept bank transfer payments. To allow bank transfer payments (or any other offline payment method) as a payment method: 1. Log in to [Admin](https://glossary.magento.com/admin) and select **Stores** > **Settings** > **Configuration** > **Sales** > **Payment Methods**. -2. Enable the [payment method](https://glossary.magento.com/payment-method. -3. Click **Save Config**. +1. Enable the [payment method](https://glossary.magento.com/payment-method. +1. Click **Save Config**. diff --git a/_plugins/generators/mrg_pages.rb b/_plugins/generators/mrg_pages.rb index 5df084f219e..a332b95df4f 100644 --- a/_plugins/generators/mrg_pages.rb +++ b/_plugins/generators/mrg_pages.rb @@ -19,7 +19,6 @@ def generate(site) # Data from '_data/codebase/mrg' as a Hash where # the filename is a key and its content is a value. mrg_data = @site.data['codebase']['mrg'] - # Loop through the hash where a key is assigned to a 'mod' (module is a # special token in Ruby and should not be used) and value is assigned to # 'metadata'. diff --git a/_plugins/page-params/last-modified-at.rb b/_plugins/page-params/last-modified-at.rb index 8990ed01f51..86b8359da40 100644 --- a/_plugins/page-params/last-modified-at.rb +++ b/_plugins/page-params/last-modified-at.rb @@ -8,23 +8,31 @@ # the original file. # For available date formats, refer to https://git-scm.com/docs/git-log#git-log---dateltformatgt # -Jekyll::Hooks.register :pages, :pre_render do |page| +Jekyll::Hooks.register :pages, :post_init do |page| # Do nothing in serving mode next if page.site.config['serving'] - # Do nothing if the date is already set - next if page.data['last_modified_at'] + # Process only files with 'md' and 'html' extensions next unless File.extname(page.path).match?(/md|html/) - # Do nothing for redirects + + # Skip redirects next if page.name == 'redirect.html' + # Skip pages where the parameter is already set + next if page.data['last_modified_at'] + + # Skip pages created by custom generators like 'mrg_pages' + next if page.kind_of? Jekyll::PageWithoutAFile + + # Read real path of the page. If this is a symlink read it to get path of the real file with content. real_filepath = File.realpath page.path dir = File.dirname real_filepath - filename = File.basename real_filepath - # Read date of the last commit and assign it to last_modified_at parameter - # of the page. - page.data['last_modified_at'] = - `cd #{dir} && git log -1 --format=%cd --date=iso -- #{filename}`.strip + # Change directory to the parent directory of the page to read from the corresponding git history. + Dir.chdir(dir) do + # Read date of the last commit and assign it to last_modified_at parameter + # of the page. + page.data['last_modified_at'] = `git log -1 --format=%cd --date=iso -- #{page.name}`.strip + end end diff --git a/_videos/fundamentals/add-a-javascript-module.md b/_videos/fundamentals/add-a-javascript-module.md index 8466ec2645b..ff666833e83 100644 --- a/_videos/fundamentals/add-a-javascript-module.md +++ b/_videos/fundamentals/add-a-javascript-module.md @@ -16,10 +16,10 @@ It will illustrate how Magento 2 works with JavaScript files, executing the code The steps we’ll need to take are: 1. Create a new module. -2. Create a requirejs-config.js and a JavaScript module file. -3. Create a layout update to add a template that will enable the JavaScript module. -4. Create a template file. -5. Add the module and test it. +1. Create a requirejs-config.js and a JavaScript module file. +1. Create a layout update to add a template that will enable the JavaScript module. +1. Create a template file. +1. Add the module and test it. Let’s go through each step. @@ -29,7 +29,13 @@ We will create a new module called Learning_Js: ```bash cd +``` + +```bash mkdir app/code/Learning +``` + +```bash mkdir app/code/Learning/Js ``` @@ -70,7 +76,13 @@ Next, we’ll create a view folder: ```bash cd +``` + +```bash mkdir app/code/Learning/Js/view +``` + +```bash mkdir app/code/Learning/Js/view/frontend ``` @@ -94,6 +106,9 @@ Then add the JavaScript module: ```bash mkdir app/code/Learning/Js/view/frontend/web +``` + +```bash mkdir app/code/Learning/Js/view/frontend/web/js ``` @@ -121,7 +136,13 @@ First, we need to create the layout folder: ```bash cd +``` + +```bash mkdir app/code/Learning/Js/view/frontend +``` + +```bash mkdir app/code/Learning/Js/view/frontend/layout ``` @@ -148,6 +169,9 @@ Now, we’ll create the template that will enable JavaScript. ```bash cd +``` + +```bash mkdir app/code/Learning/Js/view/frontend/templates ``` @@ -180,7 +204,13 @@ Finally, let’s add our module and test the result. ```bash cd +``` + +```bash bin/magento setup:upgrade +``` + +```bash bin/magento cache:clean ``` diff --git a/_videos/fundamentals/add-a-new-table-to-database.md b/_videos/fundamentals/add-a-new-table-to-database.md index fa1883bf57f..78dcecb8068 100644 --- a/_videos/fundamentals/add-a-new-table-to-database.md +++ b/_videos/fundamentals/add-a-new-table-to-database.md @@ -18,20 +18,20 @@ The install scripts run only once, while the upgrade scripts are executed every To look at all four script types, we’ll complete the following greeting page tasks: -* Create a `greeting_message` table with the columns greeting_id and message. -* Add two records: “Happy New Year” and “Happy Holidays”. -* Modify the table by adding another field, “season”, to which we add the records “Happy Thanksgiving” and “Fall'”. -* Update the types for the first and second records. +* Create a `greeting_message` table with the columns greeting_id and message. +* Add two records: “Happy New Year” and “Happy Holidays”. +* Modify the table by adding another field, “season”, to which we add the records “Happy Thanksgiving” and “Fall'”. +* Update the types for the first and second records. The steps we need to take to accomplish these tasks are: 1. Create a new module. -2. Create an InstallSchema script. -3. Create an InstallData script. -4. Add a new module and verify that a table with the data was created. -5. Create an UpgradeSchema script. -6. Create an UpgradeData script. -7. Run the upgrade scripts and verify that the table has changed. +1. Create an InstallSchema script. +1. Create an InstallData script. +1. Add a new module and verify that a table with the data was created. +1. Create an UpgradeSchema script. +1. Create an UpgradeData script. +1. Run the upgrade scripts and verify that the table has changed. ## Step 1: Create a new module @@ -41,7 +41,13 @@ Navigate to the `app/code` folder and create the folders `Learning` and `Learnin ```bash cd /app/code +``` + +```bash mkdir Learning +``` + +```bash mkdir Learning/GreetingMessage ``` @@ -93,6 +99,9 @@ To create an InstallSchema script, navigate to the `app/code/Learning/GreetingMe ```bash cd /app/code/Learning/GreetingMessage +``` + +```bash mkdir Setup ``` @@ -216,6 +225,9 @@ Run the `setup:upgrade` script to verify that a table with the initial data is t ```bash cd +``` + +```bash php bin/magento setup:upgrade ``` @@ -380,6 +392,9 @@ Run the SetupUpgrade script again: ```bash cd +``` + +```bash php bin/magento setup:upgrade ``` diff --git a/_videos/fundamentals/add-new-product-attribute.md b/_videos/fundamentals/add-new-product-attribute.md index 28e51355e2b..b9addd338d9 100644 --- a/_videos/fundamentals/add-new-product-attribute.md +++ b/_videos/fundamentals/add-new-product-attribute.md @@ -14,18 +14,18 @@ This is quite a broad topic, but in this video we will discuss the simple proces For this exercise, assume that the sample data set is installed. -* We will add an attribute called clothing_material with the possible values: Cotton, Leather, Silk, Denim, Fur, and Wool. -* We will make this attribute visible on the product view page, in bold text. -* We will assign it to the Default attribute set and add a restriction that any “bottom” clothing, like slacks, cannot be the material Fur. +* We will add an attribute called clothing_material with the possible values: Cotton, Leather, Silk, Denim, Fur, and Wool. +* We will make this attribute visible on the product view page, in bold text. +* We will assign it to the Default attribute set and add a restriction that any “bottom” clothing, like slacks, cannot be the material Fur. We will need to take the following steps to add the new attribute: 1. Create a new module. -2. Add an InstallData script. -3. Add a source model. -4. Add a backend model. -5. Add a frontend model. -6. Execute the InstallData script and verify that it works. +1. Add an InstallData script. +1. Add a source model. +1. Add a backend model. +1. Add a frontend model. +1. Execute the InstallData script and verify that it works. Let’s go through each step. @@ -35,7 +35,13 @@ As Magento is modular based, we start the process by creating a new module calle ```bash cd /app/code +``` + +```bash mkdir Learning +``` + +```bash mkdir Learning/ClothingMaterial ``` @@ -179,16 +185,16 @@ To see all the mappings, you should look at the `\Magento\Catalog\Model\Resource For now, we’ll just quickly go through most important ones: -* **group:** Means that we add an attribute to the attribute group “General”, which is present in all attribute sets. -* **type:** varchar means that the values will be stored in the catalog_eav_varchar table. -* **label:** A label of the attribute (that is, how it will be rendered in the backend and on the frontend). -* **source/frontend/backend:** Special classes associated with the attribute: - * **source model:** provides a list of options - * **frontend:** defines how it should be rendered on the frontend - * **backend:** allows you to perform certain actions when an attribute is loaded or saved. In our example, it will be validation. -* **Global:** defines the scope of its values (global, website, or store) -* **visible_on_front:** A flag that defines whether an attribute should be shown on the “More Information” tab on the frontend -* **is_html_allowed_on_front:** Defines whether an attribute value may contain HTML +* **group:** Means that we add an attribute to the attribute group “General”, which is present in all attribute sets. +* **type:** varchar means that the values will be stored in the catalog_eav_varchar table. +* **label:** A label of the attribute (that is, how it will be rendered in the backend and on the frontend). +* **source/frontend/backend:** Special classes associated with the attribute: + * **source model:** provides a list of options + * **frontend:** defines how it should be rendered on the frontend + * **backend:** allows you to perform certain actions when an attribute is loaded or saved. In our example, it will be validation. +* **Global:** defines the scope of its values (global, website, or store) +* **visible_on_front:** A flag that defines whether an attribute should be shown on the “More Information” tab on the frontend +* **is_html_allowed_on_front:** Defines whether an attribute value may contain HTML ## Step 3: Add a source model @@ -313,6 +319,9 @@ Now we can run our code and check the results: ```bash cd +``` + +```bash php bin/magento setup:upgrade ``` diff --git a/_videos/fundamentals/create-a-new-module.md b/_videos/fundamentals/create-a-new-module.md index 8f6f74d2fdb..602400ba559 100644 --- a/_videos/fundamentals/create-a-new-module.md +++ b/_videos/fundamentals/create-a-new-module.md @@ -12,10 +12,10 @@ Module is a structural element of Magento 2 – the whole system is built upon m To create a module, you need to complete the following high-level steps: 1. Create the module folder. -2. Create the `etc/module.xml` file. -3. Create the `registration.php` file. -4. Run the `bin/magento setup:upgrade` script to install the new module. -5. Check that the module is working. +1. Create the `etc/module.xml` file. +1. Create the `registration.php` file. +1. Run the `bin/magento setup:upgrade` script to install the new module. +1. Check that the module is working. Let’s go through each of these steps in detail. @@ -36,8 +36,8 @@ Each module name in Magento 2 consists of two parts – the vendor and the modul Let’s create the folder app/code/Learning and inside this folder place another folder: FirstUnit. If you're using the command line, the code would be: 1. `cd` to the root folder -2. `mkdir app/code/Learning` -3. `mkdir app/code/Learning/FirstUnit` +1. `mkdir app/code/Learning` +1. `mkdir app/code/Learning/FirstUnit` ## Make sure you have permission to create files and folders in your installation @@ -45,9 +45,9 @@ Next, you need to create an `etc/module.xml` file. This file is required for the This file contains the following information: -* Module name -* Module version -* Dependencies +* Module name +* Module version +* Dependencies Module name is defined by the folders we just created, because in Magento 2, class names must follow the folder structure. Because we created the folders `Learning/FirstUnit`, our module name will be `Learning_FirstUnit` and all classes that belong to this module will begin with `Learning\FirstUnit` – for example: `Learning\FirstUnit\Observer\Test`. @@ -74,9 +74,9 @@ Then put the following code into it: Note that in the XML file we specified: -* Module name: `Learning_FirstUnit` (based on the folders we created) -* Version: 0.0.1 (initial version of our module) -* Dependency: Magento_Catalog. We could have multiple dependencies. In this case, we would put `` nodes under the sequence node. +* Module name: `Learning_FirstUnit` (based on the folders we created) +* Version: 0.0.1 (initial version of our module) +* Dependency: Magento_Catalog. We could have multiple dependencies. In this case, we would put `` nodes under the sequence node. ## Create the registration.php file diff --git a/_videos/fundamentals/create-a-new-page.md b/_videos/fundamentals/create-a-new-page.md index a7480acd951..9fb62de8919 100644 --- a/_videos/fundamentals/create-a-new-page.md +++ b/_videos/fundamentals/create-a-new-page.md @@ -6,29 +6,30 @@ title: "Create a New Page" thumbnail: "fundamentals/thumbs/create-new-page.png" menu_order: 1 --- + In this video on how to create a new page, we’ll create a page which returns JSON with one parameter: the message “HELLO WORLD!” To add a new page in Magento 2, you need to create a new controller. In Magento 2, a controller is a file located at a specific place which responds to a specific route. A route in Magento 2 is a standard URL that consists of three parts: -* frontName -* controllerName -* actionName +* frontName +* controllerName +* actionName We’ll look at how those three parts of a route correspond to a certain file. So the steps we need to take to add a new page are: 1. Create a new module. -2. Add a routes.xml file. -3. Add a controller (action) file. +1. Add a routes.xml file. +1. Add a controller (action) file. To create a module, you need to complete the following high-level steps: 1. Create the module folder. -2. Create the etc/module.xml file. -3. Create the registration.php file. -4. Run the “bin/magento setup:upgrade” script to install the new module. -5. Check that the module is working. +1. Create the etc/module.xml file. +1. Create the registration.php file. +1. Run the “bin/magento setup:upgrade” script to install the new module. +1. Check that the module is working. Let’s go through each step. @@ -38,7 +39,13 @@ We will create a new module called `Learning_HelloPage` ```bash cd /app/code +``` + +```bash mkdir Learning +``` + +```bash mkdir Learning/HelloPage ``` @@ -50,6 +57,7 @@ Learning/HelloPage/etc/module.xml ``` ### registration.php + ```php Implemented the **Enable Debug Logging** feature to collect additional synchronization data when troubleshooting is needed. See the [Sales Channels Settings](https://docs.magento.com/m2/ce/user_guide/configuration/sales-channels/global-settings.html) topic in the Configuration Reference. @@ -33,31 +33,31 @@ Amazon Sales Channel 3.0.0 is compatible with versions 2.2.4+ and 2.3.x of {{sit - {:.fix}**Order Creation**: Corrected an issue preventing Magento from creating orders for an Amazon order that does not match with a Magento catalog product. See [Order Settings](https://docs.magento.com/m2/ce/user_guide/sales-channels/amazon/order-settings.html). -- {:.bug}**Duplicate Amazon Listings**: This issue causes the catalog to create a new item for an imported listing, using the same SKU but with a region code added on the end. Amazon then processes the modified SKU as a new item and creates a new listing. This issue will be addressed in an future release. +- {:.bug}**Duplicate Amazon Listings**: This issue causes the catalog to create a new item for an imported listing, using the same SKU but with a region code added on the end. Amazon then processes the modified SKU as a new item and creates a new listing. This issue will be addressed in an future release. ### v2.0.0 Amazon Sales Channel 2.0.0 is compatible with version 2.2.4+ and 2.3.x of {{site.data.var.ce}}, {{site.data.var.ee}}, and {{site.data.var.ece}}. -{:.bs-callout .bs-callout-info} +{: .bs-callout-info } Version 1.0.0 was available in limited release only. -- {:.new} **Simplified Onboarding and Maintenance**: Add and integrate with your Amazon Seller account through a step-by-step process with detailed instructions available through the Magento Admin. Maintain your stores, accounts, and listed products through one dashboard. +- {:.new} **Simplified Onboarding and Maintenance**: Add and integrate with your Amazon Seller account through a step-by-step process with detailed instructions available through the Magento Admin. Maintain your stores, accounts, and listed products through one dashboard. -- {:.new} **Multiple Account Support**: Manage and monitor multiple Amazon brands and marketplace regions through the Magento Admin. +- {:.new} **Multiple Account Support**: Manage and monitor multiple Amazon brands and marketplace regions through the Magento Admin. -- {:.new} **Intelligent Pricing**: Set automated repricing rules to increase your chances for the coveted Buy Box. Set prices to dynamically adjust to the current Buy Box price, or lowest competitor pricing. Set limits to repricing to protect your margin. +- {:.new} **Intelligent Pricing**: Set automated repricing rules to increase your chances for the coveted Buy Box. Set prices to dynamically adjust to the current Buy Box price, or lowest competitor pricing. Set limits to repricing to protect your margin. -- {:.new} **Listing Management**: Automate product listings and sync your Magento catalog to the Amazon Marketplace using listing rules. Add specific overrides to finely control your offerings. Monitor and manage all your listings directly from the Magento Admin. +- {:.new} **Listing Management**: Automate product listings and sync your Magento catalog to the Amazon Marketplace using listing rules. Add specific overrides to finely control your offerings. Monitor and manage all your listings directly from the Magento Admin. -- {:.new} **Consistent Inventory Management**: Keep your Magento and Amazon inventory quantities in constant synchronization. +- {:.new} **Consistent Inventory Management**: Keep your Magento and Amazon inventory quantities in constant synchronization. -- {:.new} **Order and Fulfillment Management**: Track Amazon orders through the dashboard, with seamless communication and inventory updates. Complete and track order shipments as fulfilled by Amazon, merchant fulfilled, or a mix of methods. +- {:.new} **Order and Fulfillment Management**: Track Amazon orders through the dashboard, with seamless communication and inventory updates. Complete and track order shipments as fulfilled by Amazon, merchant fulfilled, or a mix of methods. -- {:.bug} You may encounter longer wait times to update product quantities. Updates for product quantity may take ~2 hours to sync. +- {:.bug} You may encounter longer wait times to update product quantities. Updates for product quantity may take ~2 hours to sync. -- {:.bug} Imported orders may have a type of Prime or Premium orders. You may need to verify these orders in your Amazon Seller Account. +- {:.bug} Imported orders may have a type of Prime or Premium orders. You may need to verify these orders in your Amazon Seller Account. -- {:.bug} Ineligible bundled products may display as Eligible for listing on Amazon. One of the products within the bundled product may not be eligible. If you encounter issues, check the eligibility status for bundled products items. +- {:.bug} Ineligible bundled products may display as Eligible for listing on Amazon. One of the products within the bundled product may not be eligible. If you encounter issues, check the eligibility status for bundled products items. -- {:.bug} When using [Inventory Management](https://docs.magento.com/m2/ce/user_guide/catalog/inventory-management.html) for Magento 2.3.x, a partial stock reindex may not trigger when an order is created. The salable quantity recalculates hourly, which may cause overselling during this update interval. +- {:.bug} When using [Inventory Management](https://docs.magento.com/m2/ce/user_guide/catalog/inventory-management.html) for Magento 2.3.x, a partial stock reindex may not trigger when an order is created. The salable quantity recalculates hourly, which may cause overselling during this update interval. diff --git a/extensions/b2b/index.md b/extensions/b2b/index.md index 8b3cfd3023f..485bc3d750e 100644 --- a/extensions/b2b/index.md +++ b/extensions/b2b/index.md @@ -7,7 +7,7 @@ redirect_from: - guides/v2.3/comp-mgr/install-extensions/b2b-installation.html --- -{: .bs-callout .bs-callout-warning } +{: .bs-callout-warning } The {{site.data.var.b2b}} extension is only available for {{site.data.var.ee}} v2.2.0 or later. You must install it after installing {{site.data.var.ee}}. 1. Change to your Magento installation directory and enter the following command to update your `composer.json` file and install the {{site.data.var.b2b}} extension: @@ -49,10 +49,10 @@ The {{site.data.var.b2b}} extension is only available for {{site.data.var.ee}} v bin/magento cache:clean ``` -{: .bs-callout .bs-callout-info } +{: .bs-callout-info } Note: In Production mode, you may receive a message to 'Please rerun Magento compile command'. Enter the commands above. Magento does not prompt you to run the compile command in Developer mode. -{: .bs-callout .bs-callout-info } +{: .bs-callout-info } After completing the installation, you must follow the [post-installation steps](#configure-b2b). ## Configure {#configure-b2b} @@ -91,7 +91,7 @@ The {{site.data.var.b2b}} extension uses MySQL for message queue management. If bin/magento queue:consumers:start sharedCatalogUpdatePrice ``` -{: .bs-callout .bs-callout-tip } +{: .bs-callout-tip } Append `&` to the command to run it in the background, return to a prompt, and continue running commands. For example: `bin/magento queue:consumers:start sharedCatalogUpdatePrice &`. Refer to [Manage message queues]({{ site.baseurl }}/guides/v2.3/config-guide/mq/manage-message-queues.html) for more information. @@ -109,18 +109,18 @@ You may also add these two message consumers to the cron job (optional). For thi Depending on your system configuration, to prevent possible issues, you may also need to specify the following parameters when starting the services: -- `--max-messages`: manages the consumer's lifetime and allows you to specify the maximum number of messages processed by the consumer. The best practice for a PHP application is to restart long-running processes to prevent possible memory leaks. +- `--max-messages`: manages the consumer's lifetime and allows you to specify the maximum number of messages processed by the consumer. The best practice for a PHP application is to restart long-running processes to prevent possible memory leaks. -- `--batch-size`: allows you to limit the system resources consumed by the consumers (CPU, memory). Using smaller batches reduces resource usage and, thus, leads to slower processing. +- `--batch-size`: allows you to limit the system resources consumed by the consumers (CPU, memory). Using smaller batches reduces resource usage and, thus, leads to slower processing. ### Enable B2B features in Magento Admin After installing the {{site.data.var.b2b}} extension and starting message consumers (if you want to enable the **Shared Catalog** module), you must also enable B2B modules in Magento Admin. -{: .bs-callout .bs-callout-info } +{: .bs-callout-info } If you enable the **Shared Catalog** module, you must also enable the **Company** module. The **Quick Order** and **Requisition Lists** modules can be enabled/disabled independently. -1. Access the Magento Admin and click **Stores** > **Settings** > **Configuration** > **General** > **B2B Features**. +1. Access the Magento Admin and click **Stores** > Settings > **Configuration** > General > **B2B Features**. 1. Select **Yes** from the drop-down menus to enable B2B features: diff --git a/extensions/index.md b/extensions/index.md index 1468ff24204..446eff65565 100644 --- a/extensions/index.md +++ b/extensions/index.md @@ -11,6 +11,6 @@ This section tracks and provides installation guides and release notes for Magen ## Additional information -* [Run the Module Manager]({{ site.baseurl }}/guides/v2.3/comp-mgr/module-man/compman-checklist.html) -* [Run the Extension Manager]({{ site.baseurl }}/guides/v2.3/comp-mgr/extens-man/extensman-checklist.html) -* [Magento Marketplace Support](https://marketplacesupport.magento.com/hc/en-us) +* [Run the Module Manager]({{ site.baseurl }}/guides/v2.3/comp-mgr/module-man/compman-checklist.html) +* [Run the Extension Manager]({{ site.baseurl }}/guides/v2.3/comp-mgr/extens-man/extensman-checklist.html) +* [Magento Marketplace Support](https://marketplacesupport.magento.com/hc/en-us) diff --git a/extensions/install/index.md b/extensions/install/index.md index fdff9c5919d..53b9fe78361 100644 --- a/extensions/install/index.md +++ b/extensions/install/index.md @@ -11,11 +11,11 @@ Code that extends or customizes Magento behavior is called an extension. You can Extensions include: -- Modules (extend Magento capabilities) -- Themes (change the look and feel of your [storefront](https://glossary.magento.com/storefront) and Admin) -- Language packages (localize the storefront and Admin) +- Modules (extend Magento capabilities) +- Themes (change the look and feel of your [storefront](https://glossary.magento.com/storefront) and Admin) +- Language packages (localize the storefront and Admin) -{: .bs-callout .bs-callout-tip } +{: .bs-callout-tip } This topic explains how to use the command line to install extensions you purchase from the Magento Marketplace. You can use the same procedure to install _any_ extension; all you need is the extension's [Composer](https://glossary.magento.com/composer) name and version. To find it, open the extension's `composer.json` file and note the values for `"name"` and `"version"`. Prior to installation, you may want to: @@ -55,7 +55,7 @@ To get the extension's Composer name and version from the Magento Marketplace: ![Technical details shows the extension's Composer name]({{ site.baseurl }}/common/images/marketplace-extension-technical-details.png){:width="200px"} -{: .bs-callout .bs-callout-tip } +{: .bs-callout-tip } Alternatively, you can find the Composer name and version of _any_ extension (whether you purchased it on Magento Marketplace or somewhere else) in the extension's `composer.json` file. ## Update your `composer.json` file {#update-composer-json} @@ -102,7 +102,7 @@ By default, the extension is probably disabled: J2t_Payplug ``` -{: .bs-callout .bs-callout-info } +{: .bs-callout-info } The extension name is in the format `_`; it's not the same format as the Composer name. Use this format to enable the extension. ## Enable the extension @@ -163,7 +163,7 @@ Some extensions won't work properly unless you clear Magento-generated static vi 1. Configure the extension in Admin as needed. -{:.bs-callout .bs-callout-tip} +{: .bs-callout-tip } If you encounter errors when loading the storefront in a browser, use the following command to clear the cache:
`bin/magento cache:flush` diff --git a/extensions/inventory-management/index.md b/extensions/inventory-management/index.md index f538b519a3d..13bbbadb9fc 100644 --- a/extensions/inventory-management/index.md +++ b/extensions/inventory-management/index.md @@ -80,9 +80,9 @@ For more information on configurations, see [Enabling Inventory Management](http You may need to disable {{site.data.var.im}} modules to: -* Speed up the upgrade process for merchants migrating from 2.0.x, 2.1.x, or 2.2.x to 2.3.x. -* Use custom or third party inventory and order management modules. -* Use [Magento Order Management](https://omsdocs.magento.com) for inventory and order management. The current Order Management connector does not support {{site.data.var.im}} interfaces. We plan to support this integration in a later release. +* Speed up the upgrade process for merchants migrating from 2.0.x, 2.1.x, or 2.2.x to 2.3.x. +* Use custom or third party inventory and order management modules. +* Use [Magento Order Management](https://omsdocs.magento.com) for inventory and order management. The current Order Management connector does not support {{site.data.var.im}} interfaces. We plan to support this integration in a later release. To disable {{site.data.var.im}}, see the instructions for [Enable or disable modules]({{site.baseurl}}/guides/v2.3/install-gde/install/cli/install-cli-subcommands-enable.html). When complete, you should see the following modules and values in `/app/etc/config.php` (v1.1.2 Beta): @@ -172,13 +172,13 @@ For the latest, update your metapackage version: See the following guides for more information on upgrades: -* [Software Update Guide]({{site.baseurl}}/guides/v2.3/comp-mgr/bk-compman-upgrade-guide.html) -* [Enable or disable modules]({{site.baseurl}}/guides/v2.3/install-gde/install/cli/install-cli-subcommands-enable.html) +* [Software Update Guide]({{site.baseurl}}/guides/v2.3/comp-mgr/bk-compman-upgrade-guide.html) +* [Enable or disable modules]({{site.baseurl}}/guides/v2.3/install-gde/install/cli/install-cli-subcommands-enable.html) ## Additional information See the following guides for more information on {{site.data.var.im}}: -* [Release Notes]({{site.baseurl}}/guides/v2.3/inventory/release-notes.html) -* [Inventory Management]({{site.baseurl}}/guides/v2.3/inventory/index.html) overview for developer resources -* [Managing Inventory](https://docs.magento.com/m2/ce/user_guide/catalog/inventory-management.html) in the Magento 2 User Guides for merchant information +* [Release Notes]({{site.baseurl}}/guides/v2.3/inventory/release-notes.html) +* [Inventory Management]({{site.baseurl}}/guides/v2.3/inventory/index.html) overview for developer resources +* [Managing Inventory](https://docs.magento.com/m2/ce/user_guide/catalog/inventory-management.html) in the Magento 2 User Guides for merchant information diff --git a/guides/v2.2/advanced-reporting/overview.md b/guides/v2.2/advanced-reporting/overview.md index e14074dfb95..fa6adb0ece4 100644 --- a/guides/v2.2/advanced-reporting/overview.md +++ b/guides/v2.2/advanced-reporting/overview.md @@ -11,11 +11,11 @@ Magento collects data and sends this information to the MBI for analytics. ## Prerequisites 1. The website must run on a public web server. -2. The domain must have a valid security (SSL) certificate. -3. Magento must have been installed or upgraded successfully without error. -4. In the Magento configuration, the [Base URL (Secure) setting][base url]{:target="_blank"} for the store view must point to the secure URL. For example https://yourdomain.com. -5. In the Magento configuration, **Use Secure URLs on Storefront**, **and Use Secure URLs in Admin** must be set to **Yes**. -6. Make sure that [Magento crontab]{:target="_blank"} is created and cron jobs are running on the installed server. +1. The domain must have a valid security (SSL) certificate. +1. Magento must have been installed or upgraded successfully without error. +1. In the Magento configuration, the [Base URL (Secure) setting][base url]{:target="_blank"} for the store view must point to the secure URL. For example https://yourdomain.com. +1. In the Magento configuration, **Use Secure URLs on Storefront**, **and Use Secure URLs in Admin** must be set to **Yes**. +1. Make sure that [Magento crontab]{:target="_blank"} is created and cron jobs are running on the installed server. The merchant can now click on the Go to Advanced Reporting button on the Admin dashboard to launch the advanced reporting features at `https://advancedreporting.rjmetrics.com/report`. diff --git a/guides/v2.2/advanced-reporting/report-xml.md b/guides/v2.2/advanced-reporting/report-xml.md index 6d3ef724788..1e7f5f67ac8 100644 --- a/guides/v2.2/advanced-reporting/report-xml.md +++ b/guides/v2.2/advanced-reporting/report-xml.md @@ -16,8 +16,8 @@ A report name is the same as the `name` attribute in the `` node as desc Report XML does not support the asterisk statement. All columns must be declared: -* for the main table — inside the `` node -* for join tables — inside the `` node +* for the main table — inside the `` node +* for join tables — inside the `` node Columns are added using the `` node. diff --git a/guides/v2.2/architecture/archi_perspectives/ABasics_intro.md b/guides/v2.2/architecture/archi_perspectives/ABasics_intro.md index 1c86098706d..583eb3c5f25 100644 --- a/guides/v2.2/architecture/archi_perspectives/ABasics_intro.md +++ b/guides/v2.2/architecture/archi_perspectives/ABasics_intro.md @@ -8,12 +8,12 @@ Magento incorporates the core architectural principles of object-oriented, PHP-b The following discussion focuses on how these topics apply directly to Magento: -* Magento technology stack -* Magento View Model -* Extensibility -* Modularity -* Event-driven architecture -* Security +* Magento technology stack +* Magento View Model +* Extensibility +* Modularity +* Event-driven architecture +* Security {:.ref-header} Related topics diff --git a/guides/v2.2/architecture/archi_perspectives/ALayers_intro.md b/guides/v2.2/architecture/archi_perspectives/ALayers_intro.md index f10ae52d96c..895b8d769da 100644 --- a/guides/v2.2/architecture/archi_perspectives/ALayers_intro.md +++ b/guides/v2.2/architecture/archi_perspectives/ALayers_intro.md @@ -18,9 +18,9 @@ Layered software is a popular, widely discussed principle in software developmen Layered application design offers many advantages, but users of Magento will appreciate: -* Stringent separation of business logic from presentation logic simplifies the customization process. For example, you can alter your storefront appearance without affecting any of the [backend](https://glossary.magento.com/backend) business logic. +* Stringent separation of business logic from presentation logic simplifies the customization process. For example, you can alter your storefront appearance without affecting any of the [backend](https://glossary.magento.com/backend) business logic. -* Clear organization of code predictably points [extension](https://glossary.magento.com/extension) developers to code location. +* Clear organization of code predictably points [extension](https://glossary.magento.com/extension) developers to code location. {:.ref-header} Related topics diff --git a/guides/v2.2/architecture/archi_perspectives/components/AComponents.md b/guides/v2.2/architecture/archi_perspectives/components/AComponents.md index 2e858da6f39..d371c09a757 100644 --- a/guides/v2.2/architecture/archi_perspectives/components/AComponents.md +++ b/guides/v2.2/architecture/archi_perspectives/components/AComponents.md @@ -8,13 +8,13 @@ menu_title: Components Magento has several core components that are used to build custom websites, applications, and integrated systems. When you change the appearance or behavior of your Magento store, you are inevitably changing one or more of these **core Magento components**, which include **modules**, **themes**, and **language packages**. Together, these core components determine much of server-side and [storefront](https://glossary.magento.com/storefront) (frontend) appearance and behavior. -{:.bs-callout .bs-callout-tip} +{: .bs-callout-tip } Throughout the Magento documentation set, we also use the term *component* in its generic sense to mean element or part. However, the term **Magento component** explicitly refers to either a module, theme, or [language package](https://glossary.magento.com/language-package). For more information about individual Magento components, see: -* [Modules]({{page.baseurl}}/architecture/archi_perspectives/components/modules/mod_intro.html) +* [Modules]({{page.baseurl}}/architecture/archi_perspectives/components/modules/mod_intro.html) -* [Themes]({{page.baseurl}}/frontend-dev-guide/themes/theme-overview.html) +* [Themes]({{page.baseurl}}/frontend-dev-guide/themes/theme-overview.html) -* [Language packages]({{page.baseurl}}/frontend-dev-guide/translations/xlate.html#m2devgde-xlate-languagepack) +* [Language packages]({{page.baseurl}}/frontend-dev-guide/translations/xlate.html#m2devgde-xlate-languagepack) diff --git a/guides/v2.2/architecture/archi_perspectives/components/modules/mod_and_areas.md b/guides/v2.2/architecture/archi_perspectives/components/modules/mod_and_areas.md index d02436eda6c..9516cf13dce 100644 --- a/guides/v2.2/architecture/archi_perspectives/components/modules/mod_and_areas.md +++ b/guides/v2.2/architecture/archi_perspectives/components/modules/mod_and_areas.md @@ -14,19 +14,19 @@ For example, if you are invoking a REST web service call, rather than load all t Magento is organized into these main areas: -* **Magento Admin** (`adminhtml`): entry point for this area is `index.php` or `pub/index.php`. The [Admin](https://glossary.magento.com/admin) panel area includes the code needed for store management. The /app/design/adminhtml directory contains all the code for components you'll see while working in the Admin panel. +* **Magento Admin** (`adminhtml`): entry point for this area is `index.php` or `pub/index.php`. The [Admin](https://glossary.magento.com/admin) panel area includes the code needed for store management. The /app/design/adminhtml directory contains all the code for components you'll see while working in the Admin panel. -* **Storefront** (`frontend`): entry point for this area is `index.php` or `pub/index.php`. The storefront (or `frontend`) contains template and [layout](https://glossary.magento.com/layout) files that define the appearance of your [storefront](https://glossary.magento.com/storefront). +* **Storefront** (`frontend`): entry point for this area is `index.php` or `pub/index.php`. The storefront (or `frontend`) contains template and [layout](https://glossary.magento.com/layout) files that define the appearance of your [storefront](https://glossary.magento.com/storefront). -* **Basic** (`base`): used as a fallback for files absent in `adminhtml` and `frontend` areas. +* **Basic** (`base`): used as a fallback for files absent in `adminhtml` and `frontend` areas. -* **Cron** (`crontab`): In `cron.php`, the [`\Magento\Framework\App\Cron`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/App/Cron.php#L68-L70){:target="_blank"} class always loads the 'crontab' area. +* **Cron** (`crontab`): In `pub/cron.php`, the [`\Magento\Framework\App\Cron`]({{ site.mage2bloburl }}/{{ page.guide_version }}/lib/internal/Magento/Framework/App/Cron.php#L68-L70){:target="_blank"} class always loads the 'crontab' area. You can also send requests to Magento using the SOAP and REST APIs. These two areas -* **Web API REST** (`webapi_rest`): entry point for this area is `index.php` or `pub/index.php`. The REST area has a front controller that understands how to do [URL](https://glossary.magento.com/url) lookups for REST-based URLs. +* **Web API REST** (`webapi_rest`): entry point for this area is `index.php` or `pub/index.php`. The REST area has a front controller that understands how to do [URL](https://glossary.magento.com/url) lookups for REST-based URLs. -* **Web API SOAP** (`webapi_soap`): entry point for this area is `index.php` or `pub/index.php`. +* **Web API SOAP** (`webapi_soap`): entry point for this area is `index.php` or `pub/index.php`. ## How areas work with modules {#m2arch-module-using} @@ -40,11 +40,11 @@ You can enable or disable an area within a module. If this module is enabled, it ### Module/area interaction guidelines -* Modules should not depend on other modules' areas. +* Modules should not depend on other modules' areas. -* Disabling an area does not result in disabling the modules related to it. +* Disabling an area does not result in disabling the modules related to it. -* Areas are registered in the [Dependency Injection](https://glossary.magento.com/dependency-injection) framework `di.xml` file. +* Areas are registered in the [Dependency Injection](https://glossary.magento.com/dependency-injection) framework `di.xml` file. ### Note about Magento request processing @@ -57,4 +57,4 @@ Note that only the **execute()** method of any given controller is executed. {:.ref-header} Related topics -[Module overview]({{page.baseurl}}/architecture/archi_perspectives/components/modules/mod_intro.html) \ No newline at end of file +[Module overview]({{page.baseurl}}/architecture/archi_perspectives/components/modules/mod_intro.html) diff --git a/guides/v2.2/architecture/archi_perspectives/components/modules/mod_depend.md b/guides/v2.2/architecture/archi_perspectives/components/modules/mod_depend.md index bef708f99e4..f9b0e0e7643 100644 --- a/guides/v2.2/architecture/archi_perspectives/components/modules/mod_depend.md +++ b/guides/v2.2/architecture/archi_perspectives/components/modules/mod_depend.md @@ -10,13 +10,13 @@ A *software dependency* identifies one software component's reliance on another Each Magento [module](https://glossary.magento.com/module) is responsible for a unique feature. In practice, this means that: -* Several modules cannot be responsible for one feature. +* Several modules cannot be responsible for one feature. -* One module cannot be responsible for several features. +* One module cannot be responsible for several features. -* Module dependencies on other modules must be declared explicitly. You must also declare any dependency upon other components (for example, a theme, language package, or library). +* Module dependencies on other modules must be declared explicitly. You must also declare any dependency upon other components (for example, a theme, language package, or library). -* Removing or disabling a module does not result in disabling other modules. +* Removing or disabling a module does not result in disabling other modules. ## Two types of dependencies {#m2devgde-moddep-declare-dep} @@ -26,10 +26,10 @@ There are two types of Magento [module](https://glossary.magento.com/module) dep A module with a *hard dependency* on another module cannot function without the module it depends on. These modules: -* Contain code that directly uses logic from another module, such as class constants, static methods, public class properties, interfaces, and traits. -* Contain strings that include class names, method names, class constants, class properties, interfaces, and traits from another module. -* Deserializes an object declared in another module. -* Uses or modifies the database tables used by another module. +* Contain code that directly uses logic from another module, such as class constants, static methods, public class properties, interfaces, and traits. +* Contain strings that include class names, method names, class constants, class properties, interfaces, and traits from another module. +* Deserializes an object declared in another module. +* Uses or modifies the database tables used by another module. The `require` section of `app/code///composer.json` file contains hard dependency definitions for the module. For example: @@ -53,9 +53,9 @@ The `require` section of `app/code///composer.json` file contain A module with a *soft dependency* on another module can function properly without the other module, even if it has a dependency on the other module. These modules: -* Directly check another module's availability. -* Extend another module's configuration. -* Extend another module's [layout](https://glossary.magento.com/layout). +* Directly check another module's availability. +* Extend another module's configuration. +* Extend another module's [layout](https://glossary.magento.com/layout). The `` section of `app/code///etc/module.xml` file contains soft dependency definitions for the module. For example: @@ -77,17 +77,17 @@ If a module uses code from another module, it should declare the dependency expl Magento installs modules in the following order: 1. The module serving as a dependency for another module -2. The module dependent on it +1. The module dependent on it ## Appropriate dependencies Although Magento architecture favors loosely coupled software components, modules can contain dependencies upon these software components: -* other modules +* other modules -* [PHP](https://glossary.magento.com/php) extensions +* [PHP](https://glossary.magento.com/php) extensions -* libraries (either Magento Framework [library](https://glossary.magento.com/library) or third party libraries) +* libraries (either Magento Framework [library](https://glossary.magento.com/library) or third party libraries) {:.bs-callout .bs-callout-tip} Note: You can lose the historical information contained in a module if the module is removed or disabled. We recommend alternative storage of module information before you remove or disable a module. @@ -96,9 +96,9 @@ Note: You can lose the historical information contained in a module if the modul Avoid creating these dependencies: -* Circular (both direct and indirect) -* Undeclared -* Incorrect +* Circular (both direct and indirect) +* Undeclared +* Incorrect ## Dependencies between modules in different presentation layers {#m2devgde-moddep-diff-layer} @@ -123,9 +123,9 @@ At a high level, there are three main steps for managing module dependencies: 1. Name and declare the module in the `module.xml` file. -2. Declare any dependencies that the module has (whether on other modules or on a different component) in the module's `composer.json` file. +1. Declare any dependencies that the module has (whether on other modules or on a different component) in the module's `composer.json` file. -3. (*Optional*) Define the desired load order of config files and `.css` files in the `module.xml` file. +1. (*Optional*) Define the desired load order of config files and `.css` files in the `module.xml` file. Example: Module A declares a dependency upon Module B. Thus, in Module A's `module.xml` file, Module B is listed in the `` list, so that B's files are loaded before A's. Additionally, you must declare a dependency upon Module B in A's `composer.json` file. Furthermore, in the [deployment configuration]({{page.baseurl}}/config-guide/config/config-php.html), Modules A and B must both be defined as enabled. diff --git a/guides/v2.2/architecture/archi_perspectives/components/modules/mod_intro.md b/guides/v2.2/architecture/archi_perspectives/components/modules/mod_intro.md index c25b04a9875..b5d07f2607b 100644 --- a/guides/v2.2/architecture/archi_perspectives/components/modules/mod_intro.md +++ b/guides/v2.2/architecture/archi_perspectives/components/modules/mod_intro.md @@ -24,9 +24,9 @@ A module is a directory that contains the PHP and [XML](https://glossary.magento Modules typically live in the `vendor` directory of a Magento installation, in a directory with the following PSR-0 compliant format: `vendor//-`, where `` can be one of the following values: -- **`module`** - for modules (`module-customer-import-export`) -- **`theme`** - for frontend and admin themes (`theme-frontend-luma` or `theme-adminhtml-backend`) -- **`language`** - for language packs (`language-de_de`) +- **`module`** - for modules (`module-customer-import-export`) +- **`theme`** - for frontend and admin themes (`theme-frontend-luma` or `theme-adminhtml-backend`) +- **`language`** - for language packs (`language-de_de`) For example, the Customer Import/Export module of Magento can be found at `vendor/magento/module-customer-import-export`. diff --git a/guides/v2.2/architecture/archi_perspectives/components/modules/mod_relationships.md b/guides/v2.2/architecture/archi_perspectives/components/modules/mod_relationships.md index e48ce38c1e9..42d3d12491d 100644 --- a/guides/v2.2/architecture/archi_perspectives/components/modules/mod_relationships.md +++ b/guides/v2.2/architecture/archi_perspectives/components/modules/mod_relationships.md @@ -10,15 +10,15 @@ Understanding how one [module](https://glossary.magento.com/module) relates to a A single module can have the following types of relationships with another module: -* **uses**: module A uses module B if it invokes behavior of module B +* **uses**: module A uses module B if it invokes behavior of module B -* **reacts to**: module A reacts to module B if its behavior is triggered by an [event](https://glossary.magento.com/event) in module B without module B knowing about module A +* **reacts to**: module A reacts to module B if its behavior is triggered by an [event](https://glossary.magento.com/event) in module B without module B knowing about module A -* **customizes**: module A customizes module B if it modifies the behavior of module B +* **customizes**: module A customizes module B if it modifies the behavior of module B -* **implements**: module A implements module B if it implements some, not necessarily all, behavior that is defined in module B +* **implements**: module A implements module B if it implements some, not necessarily all, behavior that is defined in module B -* **replaces**: module A replaces module B if it provides its own version of the [API](https://glossary.magento.com/api) exposed and implemented by module B +* **replaces**: module A replaces module B if it provides its own version of the [API](https://glossary.magento.com/api) exposed and implemented by module B ## Relationship types and scenarios diff --git a/guides/v2.2/architecture/archi_perspectives/domain_layer.md b/guides/v2.2/architecture/archi_perspectives/domain_layer.md index 0b08ac7cc57..c7852492f44 100644 --- a/guides/v2.2/architecture/archi_perspectives/domain_layer.md +++ b/guides/v2.2/architecture/archi_perspectives/domain_layer.md @@ -8,9 +8,9 @@ menu_title: Domain layer The [domain](https://glossary.magento.com/domain) layer holds the business logic layer of a Magento [module](https://glossary.magento.com/module). It typically does not contain resource-specific or database-specific information. Its primary functions include: -* Defining the generic Magento data objects, or models, that contain business logic. This logic defines which operations can be performed on particular types of data, such as a Customer object. These models contain generic information only. Applications can also use SOAP or RESTful endpoints to request data from models. +* Defining the generic Magento data objects, or models, that contain business logic. This logic defines which operations can be performed on particular types of data, such as a Customer object. These models contain generic information only. Applications can also use SOAP or RESTful endpoints to request data from models. -* (Optionally) Including the implementation of service contracts, although not their definition. +* (Optionally) Including the implementation of service contracts, although not their definition. {:.bs-callout .bs-callout-tip} **Best practice:** Use service contracts to communicate with the domain layer by passing data types through strongly typed objects. This helps you avoid the need to replace presentation layer code when replacing business layer logic. @@ -23,17 +23,17 @@ Each domain-layer model contains a reference to a resource model, which it uses There are three primary ways of accessing a module's domain-layer code: -* Service contracts are the recommended way for one module to access another module's domain-level code. This loosely coupled solution is the optimal way for most modules to access another module. +* Service contracts are the recommended way for one module to access another module's domain-level code. This loosely coupled solution is the optimal way for most modules to access another module. -* A module can directly call into another module. This tightly coupled solution is not recommended for most situations, but is sometimes unavoidable. +* A module can directly call into another module. This tightly coupled solution is not recommended for most situations, but is sometimes unavoidable. -* Domain layer code in one module can also plug itself into another module by: +* Domain layer code in one module can also plug itself into another module by: - * event hooks + * event hooks - * plugins + * plugins - * `di.xml` files (with an SPI contract) + * `di.xml` files (with an SPI contract) Your strategy for calling another module's domain-layer code is highly dependent upon the unique configuration and needs of your system. diff --git a/guides/v2.2/architecture/archi_perspectives/framework.md b/guides/v2.2/architecture/archi_perspectives/framework.md index 9c9f630f2ef..c32d6cfe496 100644 --- a/guides/v2.2/architecture/archi_perspectives/framework.md +++ b/guides/v2.2/architecture/archi_perspectives/framework.md @@ -11,7 +11,7 @@ The Magento Framework controls how application components interact, including re This primarily [PHP](https://glossary.magento.com/php) software component is organized into logical groups called *libraries*, which all modules can call. Most of the framework code sits under the domain layer or encloses the presentation, service, and domain layers. The framework contains no business logic. (Although the Magento Framework does not contain resource models, it does contain a [library](https://glossary.magento.com/library) of code to help implement a resource model.) -{:.bs-callout .bs-callout-tip} +{: .bs-callout-tip } Don't confuse the Magento Framework with the Zend web application framework that ships with Magento. You should never modify Framework files, although if you are extending Magento, you must know how to call Framework libraries. Modules you create will typically inherit from classes and interfaces defined in the Framework directories. @@ -22,11 +22,11 @@ The Magento Framework provides libraries that help reduce the effort of creating The Framework is responsible for operations that are useful for potentially all modules, including: -* handling HTTP protocols +* handling HTTP protocols -* interacting with the database and filesystem +* interacting with the database and filesystem -* rendering content +* rendering content ## Organization @@ -42,13 +42,13 @@ lib/ ../web ``` -* `/vendor/magento/framework` contains only PHP code. These are libraries of code plus the application entry point that routes requests to modules (that in turn call the Framework libraries). For example, libraries in the Framework help implement a resource model (base classes and interfaces to inherit from) but not the resource models themselves. Certain libraries also support [CSS](https://glossary.magento.com/css) rendering. +* `/vendor/magento/framework` contains only PHP code. These are libraries of code plus the application entry point that routes requests to modules (that in turn call the Framework libraries). For example, libraries in the Framework help implement a resource model (base classes and interfaces to inherit from) but not the resource models themselves. Certain libraries also support [CSS](https://glossary.magento.com/css) rendering. -* `/lib/internal` contains some non-PHP as well as PHP components. Non-PHP framework libraries includes [JavaScript](https://glossary.magento.com/javascript) and LESS/CSS. +* `/lib/internal` contains some non-PHP as well as PHP components. Non-PHP framework libraries includes [JavaScript](https://glossary.magento.com/javascript) and LESS/CSS. -* `/lib/web` contains JavaScript and CSS/LESS files. These files reside under `web` and not `internal` because they are accessible from a web browser, while the PHP code under `internal` is not. (Any code that a web browser must access should be under `web`, while everything else under `internal`.) +* `/lib/web` contains JavaScript and CSS/LESS files. These files reside under `web` and not `internal` because they are accessible from a web browser, while the PHP code under `internal` is not. (Any code that a web browser must access should be under `web`, while everything else under `internal`.) -{:.bs-callout .bs-callout-tip} +{: .bs-callout-tip } The `vendor/magento/framework` directory maps to the `Magento\Framework` [namespace](https://glossary.magento.com/namespace). ## Highlights of Magento Framework diff --git a/guides/v2.2/architecture/archi_perspectives/persist_layer.md b/guides/v2.2/architecture/archi_perspectives/persist_layer.md index 0b3772d4552..758d4066463 100644 --- a/guides/v2.2/architecture/archi_perspectives/persist_layer.md +++ b/guides/v2.2/architecture/archi_perspectives/persist_layer.md @@ -5,9 +5,9 @@ title: Persistence layer Magento uses an active record pattern strategy for persistence. In this system, the model object contains a *resource model* that maps an object to one or more database rows. A resource model is responsible for performing functions such as: -* Executing all CRUD (create, read, update, delete) requests. The resource model contains the SQL code for completing these requests. +* Executing all CRUD (create, read, update, delete) requests. The resource model contains the SQL code for completing these requests. -* Performing additional business logic. For example, a resource model could perform data validation, start processes before or after data is saved, or perform other database operations. +* Performing additional business logic. For example, a resource model could perform data validation, start processes before or after data is saved, or perform other database operations. If you expect to return multiple items from a database query, then you would implement a special type of resource model known as a *collection*. A collection is a class that loads multiple models into an array-like structure based on a set of rules. This is similar to a SQL `WHERE` clause. diff --git a/guides/v2.2/architecture/archi_perspectives/present_layer.md b/guides/v2.2/architecture/archi_perspectives/present_layer.md index 4124e90591d..49f53e43bad 100644 --- a/guides/v2.2/architecture/archi_perspectives/present_layer.md +++ b/guides/v2.2/architecture/archi_perspectives/present_layer.md @@ -13,11 +13,11 @@ The presentation layer contains both view elements **(layouts, blocks, templates Magento uses *areas* to efficiently make web service calls, loading only the dependent code that is required for the particular type of user. Three types of Magento users interact with presentation layer code: -* **Web users** interact with the storefront, where they can see the View model of data displayed by Magento and interact with product UI elements to request data for view and manipulation. These users work within the `frontend` area. +* **Web users** interact with the storefront, where they can see the View model of data displayed by Magento and interact with product UI elements to request data for view and manipulation. These users work within the `frontend` area. -* **System administrators** customizing a [storefront](https://glossary.magento.com/storefront) can indirectly manipulate the presentation layer by, for example, adding themes or widgets to the frontend. +* **System administrators** customizing a [storefront](https://glossary.magento.com/storefront) can indirectly manipulate the presentation layer by, for example, adding themes or widgets to the frontend. -* **Web [API](https://glossary.magento.com/api) calls** can be made through HTTP just like browser requests, and can be made via AJAX calls from the user interface. +* **Web [API](https://glossary.magento.com/api) calls** can be made through HTTP just like browser requests, and can be made via AJAX calls from the user interface. ## Presentation layer components @@ -34,9 +34,9 @@ Magento generates the [HTML](https://glossary.magento.com/html) for a page to di View elements fall into two main categories: blocks and containers. -* **Blocks** can generate [dynamic content](https://glossary.magento.com/dynamic-content) and can contain named child view elements that are similar to arguments being passed in. (The `as` attribute holds the child view element names for the parent block to reference them) +* **Blocks** can generate [dynamic content](https://glossary.magento.com/dynamic-content) and can contain named child view elements that are similar to arguments being passed in. (The `as` attribute holds the child view element names for the parent block to reference them) -* **Containers** collect an ordered group of children view elements. +* **Containers** collect an ordered group of children view elements. The browser forms a product web page by asking the view element tree to render itself into HTML. Containers and blocks emit HTML that encloses their children appropriately. diff --git a/guides/v2.2/architecture/archi_perspectives/service_layer.md b/guides/v2.2/architecture/archi_perspectives/service_layer.md index d2c893860b8..a28a46247b7 100644 --- a/guides/v2.2/architecture/archi_perspectives/service_layer.md +++ b/guides/v2.2/architecture/archi_perspectives/service_layer.md @@ -11,13 +11,13 @@ This is implemented using *service contracts*, which are defined using [PHP](htt In general, the service layer: -* Resides below the presentation layer and above the domain layer. +* Resides below the presentation layer and above the domain layer. -* Contains service contracts, which define how the implementation will behave. +* Contains service contracts, which define how the implementation will behave. -* Provides an easy way to access the REST/SOAP [API](https://glossary.magento.com/api) framework code (which also resides above the service contracts). You can bind service contracts to web service APIs in configuration files --- no coding required. +* Provides an easy way to access the REST/SOAP [API](https://glossary.magento.com/api) framework code (which also resides above the service contracts). You can bind service contracts to web service APIs in configuration files --- no coding required. -* Provides a stable API for other modules to call into. +* Provides a stable API for other modules to call into. ## Who accesses the service layer? @@ -30,11 +30,11 @@ Once implemented, a web service can make a single API call and return an informa [Service contract](https://glossary.magento.com/service-contract) clients include: -* Controllers (initiated by actions of users of the storefront) +* Controllers (initiated by actions of users of the storefront) -* Web services (SOAP and REST API calls) +* Web services (SOAP and REST API calls) -* Other Magento modules through service contracts +* Other Magento modules through service contracts ## Service contract anatomy @@ -42,20 +42,20 @@ The service contract of a [module](https://glossary.magento.com/module) is defin This directory contains: -* Service interfaces in the `/Api` [namespace](https://glossary.magento.com/namespace) of the module ([Catalog API][catalog-api]). +* Service interfaces in the `/Api` [namespace](https://glossary.magento.com/namespace) of the module ([Catalog API][catalog-api]). -* Data (or *entity*) interfaces in the `Api/Data` directory ([Catalog API/Data][catalog-api-data][]). - Data entities* are data structures passed to and returned from service interfaces. +* Data (or *entity*) interfaces in the `Api/Data` directory ([Catalog API/Data][catalog-api-data][]). + Data entities* are data structures passed to and returned from service interfaces. - Files in the data directory contain `get()` and `set()` methods for entries in the entity table and extension attributes. + Files in the data directory contain `get()` and `set()` methods for entries in the entity table and extension attributes. Typically, service contracts provide three distinct types of interfaces: -* Repository interfaces +* Repository interfaces -* Management interfaces +* Management interfaces -* [Metadata](https://glossary.magento.com/metadata) interfaces +* [Metadata](https://glossary.magento.com/metadata) interfaces However, there is no requirement that service contracts conform to all three patterns. diff --git a/guides/v2.2/architecture/extensibility.md b/guides/v2.2/architecture/extensibility.md index 84d817f7ca2..c50ec812396 100644 --- a/guides/v2.2/architecture/extensibility.md +++ b/guides/v2.2/architecture/extensibility.md @@ -69,11 +69,11 @@ You can enhance your storefront by adding unique attributes to the default produ Attribute types fall into three general categories: -* **EAV (Entity-Attribute-Value) attributes** are site-specific attributes that you can define for a local site using the [Magento Admin](https://glossary.magento.com/magento-admin). +* **EAV (Entity-Attribute-Value) attributes** are site-specific attributes that you can define for a local site using the [Magento Admin](https://glossary.magento.com/magento-admin). -* **Custom attributes** are a subset of EAV attributes. Objects that use EAV attributes typically store values in several MySQL tables. The Customer and [Catalog](https://glossary.magento.com/catalog) modules use EAV attributes. +* **Custom attributes** are a subset of EAV attributes. Objects that use EAV attributes typically store values in several MySQL tables. The Customer and [Catalog](https://glossary.magento.com/catalog) modules use EAV attributes. -* **Extension attributes** often use more [complex data](https://glossary.magento.com/complex-data) types than custom attributes. These attributes do not appear in the storefront. Extension attributes are introduced by modules. +* **Extension attributes** often use more [complex data](https://glossary.magento.com/complex-data) types than custom attributes. These attributes do not appear in the storefront. Extension attributes are introduced by modules. See [PHP Developer Guide][] for information about using attributes. diff --git a/guides/v2.2/architecture/frontend_custom_strategies.md b/guides/v2.2/architecture/frontend_custom_strategies.md index 8ae3f0d2a84..57ba5a79321 100644 --- a/guides/v2.2/architecture/frontend_custom_strategies.md +++ b/guides/v2.2/architecture/frontend_custom_strategies.md @@ -16,11 +16,11 @@ Merchants are encouraged to use Magento components and themes to extend and tran Magento provides several tools to help you significantly jumpstart the storefront customization process: -* Magento Blank [Theme](https://glossary.magento.com/theme) +* Magento Blank [Theme](https://glossary.magento.com/theme) -* [Overview of UI components][] +* [Overview of UI components][] -* [Magento Admin Pattern Library][] +* [Magento Admin Pattern Library][] See the [Frontend Developer Guide][] for information on creating your themes. @@ -32,8 +32,8 @@ The Magento blank theme template provides a launchpad for storefront customizati Using Magento standard coding and styling tools can help: -* enforce for consistency in design across your storefronts -* simplify (and speed up) the design process +* enforce for consistency in design across your storefronts +* simplify (and speed up) the design process This component [library](https://glossary.magento.com/library) contains standard reusable components for form features, such as fields and buttons, and navigation elements. The Magento UI library is a set of generic web components and Magento-specific patterns, which simplifies the process of Magento theme creation and customization. @@ -45,11 +45,11 @@ A *pattern library* is a collection of user interface (UI) design patterns that Form elements included in the [Magento Admin](https://glossary.magento.com/magento-admin) pattern library include: -* address form -* button bar -* container -* tabs -* sign-in form +* address form +* button bar +* container +* tabs +* sign-in form Users of the default Magento storefront encounter examples of these form elements throughout the product. These patterns provide a valuable language of software components (and indirectly, user experiences) for [extension](https://glossary.magento.com/extension) developers and administrators. diff --git a/guides/v2.2/architecture/gdpr/magento-1x.md b/guides/v2.2/architecture/gdpr/magento-1x.md index 4a5c585f4ee..2a37b467e89 100644 --- a/guides/v2.2/architecture/gdpr/magento-1x.md +++ b/guides/v2.2/architecture/gdpr/magento-1x.md @@ -8,8 +8,8 @@ The European Union (EU) enacted [General Data Protection Regulation](https://www We are publishing this compliance information to help our merchants and their system integrators with GDPR compliance. A system integrator can use the data flow diagrams and database information to build scripts to resolve use cases similar to the following: -* A shopper asks for a copy of the data the merchant has stored about her -* A shopper requests that all information about him be deleted +* A shopper asks for a copy of the data the merchant has stored about her +* A shopper requests that all information about him be deleted See the corporate [Magento website](https://magento.com/gdpr) for more information about how Magento helps merchants comply with GDPR. @@ -274,26 +274,26 @@ Table | Column | Data type Other tables that reference Customer: -* `catalog_compare_item` -* `downloadable_link_purchased` -* `enterprise_customerbalance` -* `enterprise_customersegment_customer` -* `enterprise_giftregistry_entity` -* `enterprise_reminder_rule_log` -* `enterprise_reward` -* `log_customer` -* `log_visitor_online` -* `oauth_token` -* `product_alert_price` -* `product_alert_stock` -* `report_compared_product_index` -* `report_viewed_product_index` -* `review_detail` -* `sales_billing_agreement` -* `sales_flat_shipment` -* `sales_recurring_profile` -* `salesrule_coupon_usage` -* `salesrule_customer` -* `tag` -* `tag_relation` -* `wishlist` \ No newline at end of file +* `catalog_compare_item` +* `downloadable_link_purchased` +* `enterprise_customerbalance` +* `enterprise_customersegment_customer` +* `enterprise_giftregistry_entity` +* `enterprise_reminder_rule_log` +* `enterprise_reward` +* `log_customer` +* `log_visitor_online` +* `oauth_token` +* `product_alert_price` +* `product_alert_stock` +* `report_compared_product_index` +* `report_viewed_product_index` +* `review_detail` +* `sales_billing_agreement` +* `sales_flat_shipment` +* `sales_recurring_profile` +* `salesrule_coupon_usage` +* `salesrule_customer` +* `tag` +* `tag_relation` +* `wishlist` \ No newline at end of file diff --git a/guides/v2.2/architecture/gdpr/magento-2x.md b/guides/v2.2/architecture/gdpr/magento-2x.md index 8d319fd4d95..2a9b98cfad3 100644 --- a/guides/v2.2/architecture/gdpr/magento-2x.md +++ b/guides/v2.2/architecture/gdpr/magento-2x.md @@ -8,8 +8,8 @@ The European Union (EU) enacted [General Data Protection Regulation](https://www We are publishing this GDPR compliance information to help our merchants and their system integrators with GDPR compliance. A system integrator can use the data flow diagrams and database information to build scripts to resolve use cases similar to the following: -* A shopper asks for a copy of the data the merchant has stored about her -* A shopper requests that all information about him be deleted +* A shopper asks for a copy of the data the merchant has stored about her +* A shopper requests that all information about him be deleted See the corporate [Magento website](https://magento.com/gdpr) for more information about how Magento helps merchants comply with GDPR. @@ -49,14 +49,14 @@ Magento 2 primarily stores customer-specific information in customer, address, o Magento 2 stores these customer attributes: -* Date of Birth -* Email -* First Name -* Gender -* Last Name -* Middle Name/Initial -* Name Prefix -* Name Suffix +* Date of Birth +* Email +* First Name +* Gender +* Last Name +* Middle Name/Initial +* Name Prefix +* Name Suffix #### `customer_entity` and reference tables @@ -110,21 +110,21 @@ Column | Data type Magento 2 stores these customer attributes: -* City -* Company -* Country -* Fax -* First Name -* Last Name -* Middle Name/Initial -* Name Prefix -* Name Suffix -* Phone Number -* State/Province -* State/Province ID -* Street Address -* VAT Number -* Zip/Postal Code +* City +* Company +* Country +* Fax +* First Name +* Last Name +* Middle Name/Initial +* Name Prefix +* Name Suffix +* Phone Number +* State/Province +* State/Province ID +* Street Address +* VAT Number +* Zip/Postal Code #### `customer_address_entity` and reference tables @@ -309,21 +309,21 @@ Column | Data type The following tables contain a `customer_id` column: -* `catalog_compare_item` -* `catalog_product_frontend_action` -* `downloadable_link_purchased` -* `magento_customerbalance` -* `magento_customersegment_customer` -* `magento_reward` -* `magento_rma` -* `oauth_token` -* `paypal_billing_agreement` -* `persistent_session` -* `product_alert_price` -* `product_stock_alert` -* `report_compared_product_index` -* `report_viewed_product_index` -* `review_detail` -* `salesrule_coupon_usage` -* `salesrule_customer` -* `wishlist` \ No newline at end of file +* `catalog_compare_item` +* `catalog_product_frontend_action` +* `downloadable_link_purchased` +* `magento_customerbalance` +* `magento_customersegment_customer` +* `magento_reward` +* `magento_rma` +* `oauth_token` +* `paypal_billing_agreement` +* `persistent_session` +* `product_alert_price` +* `product_stock_alert` +* `report_compared_product_index` +* `report_viewed_product_index` +* `review_detail` +* `salesrule_coupon_usage` +* `salesrule_customer` +* `wishlist` \ No newline at end of file diff --git a/guides/v2.2/architecture/global_extensibility_features.md b/guides/v2.2/architecture/global_extensibility_features.md index 75a534f2aa2..73a1d58bf4b 100644 --- a/guides/v2.2/architecture/global_extensibility_features.md +++ b/guides/v2.2/architecture/global_extensibility_features.md @@ -4,13 +4,13 @@ title: Global features that support extensibility menu_title: Global features that support extensibility --- -* Modularity -* Reliance on popular design patterns -* Coding standards -* Flexible attribute types -* Web APIs -* Service contracts and [dependency injection](https://glossary.magento.com/dependency-injection) -* Plug-ins +* Modularity +* Reliance on popular design patterns +* Coding standards +* Flexible attribute types +* Web APIs +* Service contracts and [dependency injection](https://glossary.magento.com/dependency-injection) +* Plug-ins The concept of the *module* is the heart of Magento [extension](https://glossary.magento.com/extension) development, and modular design of software components (in particular, modules, themes, and language packages) is a core architectural principle of the product. Self-contained modules of discrete code are organized by feature, thereby reducing each module's external dependencies. @@ -63,11 +63,11 @@ You can enhance your storefront by adding unique attributes to the default produ Attribute types fall into three general categories: -* EAV (Entity-Attribute-Value) attributes are site-specific attributes that you can define for a local site using the [Magento Admin](https://glossary.magento.com/magento-admin). +* EAV (Entity-Attribute-Value) attributes are site-specific attributes that you can define for a local site using the [Magento Admin](https://glossary.magento.com/magento-admin). -* **Custom attributes** are a subset of EAV attributes. Objects that use EAV attributes typically store values in several MySQL tables. The Customer and [Catalog](https://glossary.magento.com/catalog) modules use EAV attributes. +* **Custom attributes** are a subset of EAV attributes. Objects that use EAV attributes typically store values in several MySQL tables. The Customer and [Catalog](https://glossary.magento.com/catalog) modules use EAV attributes. -* **Extension attributes** often use more [complex data](https://glossary.magento.com/complex-data) types than custom attributes. These attributes do not appear in the storefront. Extension attributes are introduced by modules. +* **Extension attributes** often use more [complex data](https://glossary.magento.com/complex-data) types than custom attributes. These attributes do not appear in the storefront. Extension attributes are introduced by modules. See [PHP Developer Guide]({{page.baseurl}}/extension-dev-guide/bk-extension-dev-guide.html) for information about using attributes. diff --git a/guides/v2.2/architecture/security_intro.md b/guides/v2.2/architecture/security_intro.md index c19b27a5a6b..2e3b34bba77 100644 --- a/guides/v2.2/architecture/security_intro.md +++ b/guides/v2.2/architecture/security_intro.md @@ -34,9 +34,9 @@ A simple [Magento Admin](https://glossary.magento.com/magento-admin) [URL](https You can change this Admin URI in three ways: -- The `bin/magento setup:config:set --backend-frontname=` command -- The `env.php` file -- The Admin panel +- The `bin/magento setup:config:set --backend-frontname=` command +- The `env.php` file +- The Admin panel Although the use of a non-default admin URL will not secure the site, its use will help prevent large-scale automated attacks. See [Display or change the Admin URI]({{page.baseurl}}/install-gde/install/cli/install-cli-adminurl.html) in Configuration Guide for more information. diff --git a/guides/v2.2/architecture/tech-stack.md b/guides/v2.2/architecture/tech-stack.md index 4522c028387..44918d7cf24 100644 --- a/guides/v2.2/architecture/tech-stack.md +++ b/guides/v2.2/architecture/tech-stack.md @@ -14,48 +14,48 @@ Magento's highly modular structure includes the following open-source technologi ### Web servers -* Apache -* [nginx](https://glossary.magento.com/nginx) +* Apache +* [nginx](https://glossary.magento.com/nginx) ### PHP -* [Composer](https://glossary.magento.com/composer) (dependency management package for PHP) +* [Composer](https://glossary.magento.com/composer) (dependency management package for PHP) ### Database -* MySQL -* MySQL Percona +* MySQL +* MySQL Percona ### HTTP accelerator -* Varnish +* Varnish ### Cache storage -* Redis -* Memcache +* Redis +* Memcache ### Search -* Solr ({{site.data.var.ee}}) -* Elasticsearch ({{site.data.var.ee}} - 2.1.x only) +* Solr ({{site.data.var.ee}}) +* Elasticsearch ({{site.data.var.ee}} - 2.1.x only) ### Additional technologies -* HTML5 -* CSS3 (Less [CSS](https://glossary.magento.com/css) pre-processor) -* [jQuery](https://glossary.magento.com/jquery) (primary [JavaScript](https://glossary.magento.com/javascript) library) -* RequireJS (library that helps load JavaScript resources on demand) -* Knockout.js (simplifies JavaScript UIs with the Model-View-View Model pattern) -* Third-party libraries (Zend Framework 1, Zend Framework 2, Symfony) -* Coding standards PSR-0 (autoloading standard), PSR-1 (basic coding standards), and PSR-2 (coding style guide), PSR-3, PSR-4 +* HTML5 +* CSS3 (Less [CSS](https://glossary.magento.com/css) pre-processor) +* [jQuery](https://glossary.magento.com/jquery) (primary [JavaScript](https://glossary.magento.com/javascript) library) +* RequireJS (library that helps load JavaScript resources on demand) +* Knockout.js (simplifies JavaScript UIs with the Model-View-View Model pattern) +* Third-party libraries (Zend Framework 1, Zend Framework 2, Symfony) +* Coding standards PSR-0 (autoloading standard), PSR-1 (basic coding standards), and PSR-2 (coding style guide), PSR-3, PSR-4 ### Optional stack components -* Varnish (caching) -* Redis (used for page caching) -* Solr (search engine) -* Elasticsearch (search engine) +* Varnish (caching) +* Redis (used for page caching) +* Solr (search engine) +* Elasticsearch (search engine) Magento 2.2 and above only supports PHP7+ and is no longer compatible with HipHop Virtual Machine(HHVM). diff --git a/guides/v2.2/b2b/bk-b2b.md b/guides/v2.2/b2b/bk-b2b.md index 15a47859edb..c6c75ab701b 100644 --- a/guides/v2.2/b2b/bk-b2b.md +++ b/guides/v2.2/b2b/bk-b2b.md @@ -16,8 +16,8 @@ Unlike the standard business-to-consumer model, {{site.data.var.b2b}} (Business There are two basic actors in B2B model: -* A **seller** is an admin user that accesses the system from the Magento Admin panel. -* A **buyer** is any customer associated with a company account who accesses the system from the storefront. +* A **seller** is an admin user that accesses the system from the Magento Admin panel. +* A **buyer** is any customer associated with a company account who accesses the system from the storefront. The Company component is the key entity within B2B on which all other features are in some way dependent. It allows joining multiple buyers that belong to the same company into a single company account (or corporate account). The company admin is able to build the company structure (divisions, subdivisions and users) in the appropriate hierarchy and provide different user roles and permissions to the company members. Such a hierarchy allows the company admin to control user activity within an account: ordering, quoting, purchasing, access to company credit info or profile, etc. In addition, a seller can configure how the buying company operates at the website: including the payment methods, pricing levels, the ability to negotiate over prices, and the ability to create requisition lists. @@ -55,5 +55,5 @@ SharedCatalog | Defines the visibility of products and prices in the catalog and ## Related information -* [Install the B2B extension]({{ site.baseurl }}/extensions/b2b/) -* [Getting started with {{site.data.var.b2b}}](http://docs.magento.com/m2/b2b/user_guide/getting-started.html) +* [Install the B2B extension]({{ site.baseurl }}/extensions/b2b/) +* [Getting started with {{site.data.var.b2b}}](http://docs.magento.com/m2/b2b/user_guide/getting-started.html) diff --git a/guides/v2.2/b2b/company-object.md b/guides/v2.2/b2b/company-object.md index 0cde693f355..80d5cc1eef5 100644 --- a/guides/v2.2/b2b/company-object.md +++ b/guides/v2.2/b2b/company-object.md @@ -338,7 +338,7 @@ None ## Related information -* [Integrate with the Company module]({{ page.baseurl }}/b2b/company.html) -* [Manage company users]({{ page.baseurl }}/b2b/company-users.html) -* [Manage company roles]({{ page.baseurl }}/b2b/roles.html) -* [Manage company structures]({{ page.baseurl }}/b2b/company-structures.html) +* [Integrate with the Company module]({{ page.baseurl }}/b2b/company.html) +* [Manage company users]({{ page.baseurl }}/b2b/company-users.html) +* [Manage company roles]({{ page.baseurl }}/b2b/roles.html) +* [Manage company structures]({{ page.baseurl }}/b2b/company-structures.html) diff --git a/guides/v2.2/b2b/company-structures.md b/guides/v2.2/b2b/company-structures.md index 359beb551bf..d8467854c66 100644 --- a/guides/v2.2/b2b/company-structures.md +++ b/guides/v2.2/b2b/company-structures.md @@ -283,7 +283,7 @@ The following example moves Bryce Martin (`structure_id = 4`) to the West team ( ## Related information -* [Integrate with the Company module]({{ page.baseurl }}/b2b/company.html) -* [Manage company objects]({{ page.baseurl }}/b2b/company-object.html) -* [Manage company users]({{ page.baseurl }}/b2b/company-users.html) -* [Manage company roles]({{ page.baseurl }}/b2b/roles.html) +* [Integrate with the Company module]({{ page.baseurl }}/b2b/company.html) +* [Manage company objects]({{ page.baseurl }}/b2b/company-object.html) +* [Manage company users]({{ page.baseurl }}/b2b/company-users.html) +* [Manage company roles]({{ page.baseurl }}/b2b/roles.html) diff --git a/guides/v2.2/b2b/company-users.md b/guides/v2.2/b2b/company-users.md index 52c3bbcbd40..0a65c530eca 100644 --- a/guides/v2.2/b2b/company-users.md +++ b/guides/v2.2/b2b/company-users.md @@ -186,7 +186,7 @@ Not applicable ## Related information -* [Integrate with the Company module]({{ page.baseurl }}/b2b/company.html) -* [Manage company objects]({{ page.baseurl }}/b2b/company-object.html) -* [Manage company roles]({{ page.baseurl }}/b2b/roles.html) -* [Manage company structures]({{ page.baseurl }}/b2b/company-structures.html) +* [Integrate with the Company module]({{ page.baseurl }}/b2b/company.html) +* [Manage company objects]({{ page.baseurl }}/b2b/company-object.html) +* [Manage company roles]({{ page.baseurl }}/b2b/roles.html) +* [Manage company structures]({{ page.baseurl }}/b2b/company-structures.html) diff --git a/guides/v2.2/b2b/company.md b/guides/v2.2/b2b/company.md index d1e36706657..dc8b9e9fdbd 100644 --- a/guides/v2.2/b2b/company.md +++ b/guides/v2.2/b2b/company.md @@ -16,7 +16,7 @@ The `Company` module allows multiple buyers that belong to the same company to v ## Related information -* [Manage company objects]({{ page.baseurl }}/b2b/company-object.html) -* [Manage company users]({{ page.baseurl }}/b2b/company-users.html) -* [Manage company roles]({{ page.baseurl }}/b2b/roles.html) -* [Manage company structures]({{ page.baseurl }}/b2b/company-structures.html) +* [Manage company objects]({{ page.baseurl }}/b2b/company-object.html) +* [Manage company users]({{ page.baseurl }}/b2b/company-users.html) +* [Manage company roles]({{ page.baseurl }}/b2b/roles.html) +* [Manage company structures]({{ page.baseurl }}/b2b/company-structures.html) diff --git a/guides/v2.2/b2b/credit-manage.md b/guides/v2.2/b2b/credit-manage.md index 09c4bb17ea3..a32fa284782 100644 --- a/guides/v2.2/b2b/credit-manage.md +++ b/guides/v2.2/b2b/credit-manage.md @@ -9,9 +9,9 @@ functional_areas: The company credit entity operates with the following attributes: -* Credit limit -* Available credit -* Outstanding balance +* Credit limit +* Available credit +* Outstanding balance The credit limit is allocated by seller, while available credit and outstanding balance are automatically calculated by the system based on the buyer transactions (place an order, return) and seller's transactions (refund, reimburse, update credit limit, cancel order). diff --git a/guides/v2.2/b2b/negotiable-checkout.md b/guides/v2.2/b2b/negotiable-checkout.md index 1da450e9459..c4e5a736120 100644 --- a/guides/v2.2/b2b/negotiable-checkout.md +++ b/guides/v2.2/b2b/negotiable-checkout.md @@ -963,7 +963,7 @@ Not applicable ## Related information -* [Integrate with the NegotiableQuote module]({{ page.baseurl }}/b2b/negotiable-quote.html) -* [Manage negotiable quotes]({{ page.baseurl }}/b2b/negotiable-manage.html) -* [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) -* [Place a negotiable quote order]({{ page.baseurl }}/b2b/negotiable-order-workflow.html) +* [Integrate with the NegotiableQuote module]({{ page.baseurl }}/b2b/negotiable-quote.html) +* [Manage negotiable quotes]({{ page.baseurl }}/b2b/negotiable-manage.html) +* [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) +* [Place a negotiable quote order]({{ page.baseurl }}/b2b/negotiable-order-workflow.html) diff --git a/guides/v2.2/b2b/negotiable-manage.md b/guides/v2.2/b2b/negotiable-manage.md index bbf22293c66..5b89e247e5a 100644 --- a/guides/v2.2/b2b/negotiable-manage.md +++ b/guides/v2.2/b2b/negotiable-manage.md @@ -54,8 +54,8 @@ Name | Description | Format | Requirements Before negotiable quote can begin, the following conditions must be met: -* A regular Magento quote has been created (`POST /V1/customers/:customerId/carts` or `POST /V1/customers/carts/mine`) -* The quote contains items (`POST /V1/carts/:quoteId/items`) +* A regular Magento quote has been created (`POST /V1/customers/:customerId/carts` or `POST /V1/customers/carts/mine`) +* The quote contains items (`POST /V1/carts/:quoteId/items`) If the negotiable quote requires a shipping address (for negotiation or tax calculations), you can add it to the standard quote before initiating the negotiable quote (`POST /V1/carts/:cartId/shipping-information`) @@ -98,15 +98,15 @@ When you submit a negotiable quote to the buyer, the status for the buyer change The seller can send a request to submit the quote to the buyer. The request can be submitted only for quotes in the following system states: -* Created -* Processing by admin -* Submitted by customer +* Created +* Processing by admin +* Submitted by customer When the quote is submitted to the buyer: -* Magento checks catalog prices (price per item), cart rules, and discounts then recalculates the prices and taxes. The shipping price and the negotiated price are not affected (if they are entered into the quote). -* Items that are no longer active or available for this buyer are removed from quote and prices are recalculated. -* The quote state is changed to Submitted by admin. +* Magento checks catalog prices (price per item), cart rules, and discounts then recalculates the prices and taxes. The shipping price and the negotiated price are not affected (if they are entered into the quote). +* Items that are no longer active or available for this buyer are removed from quote and prices are recalculated. +* The quote state is changed to Submitted by admin. **Service Name** @@ -177,9 +177,9 @@ To set the shipping method, the quote must be in the `created`, `processing_by_a The seller can send a request to decline the quote. The request can be submitted only for quotes in the following system states: -* Created -* Processing by admin -* Submitted by customer +* Created +* Processing by admin +* Submitted by customer When you decline a quote, all custom pricing will be removed from the quote. The buyer will be able to place an order using their standard catalog prices and discounts. @@ -332,7 +332,7 @@ Not applicable ## Related information -* [Integrate with the NegotiableQuote module]({{ page.baseurl }}/b2b/negotiable-quote.html) -* [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) -* [Negotiable quote checkout]({{ page.baseurl }}/b2b/negotiable-checkout.html) -* [Place a negotiable quote order]({{ page.baseurl }}/b2b/negotiable-order-workflow.html) +* [Integrate with the NegotiableQuote module]({{ page.baseurl }}/b2b/negotiable-quote.html) +* [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) +* [Negotiable quote checkout]({{ page.baseurl }}/b2b/negotiable-checkout.html) +* [Place a negotiable quote order]({{ page.baseurl }}/b2b/negotiable-order-workflow.html) diff --git a/guides/v2.2/b2b/negotiable-order-workflow.md b/guides/v2.2/b2b/negotiable-order-workflow.md index 4bd2223a84e..cd825110520 100644 --- a/guides/v2.2/b2b/negotiable-order-workflow.md +++ b/guides/v2.2/b2b/negotiable-order-workflow.md @@ -8,9 +8,9 @@ This topic describes how REST calls can be used to place items in a shopping car ## Prerequisites -* You have [installed and enabled]({{ site.baseurl }}/extensions/b2b/) {{site.data.var.b2b}}. -* You have [created a company]({{ page.baseurl }}/b2b/company-object.html) and a [company user]({{ page.baseurl }}/b2b/company-object.html). -* You have an integration or [admin authorization token]({{ page.baseurl }}/rest/tutorials/orders/order-admin-token.html) to make calls on behalf of seller, and a [customer token]({{ page.baseurl }}/rest/tutorials/orders/order-create-customer.html#get-token) to make calls on behalf of the company user. +* You have [installed and enabled]({{ site.baseurl }}/extensions/b2b/) {{site.data.var.b2b}}. +* You have [created a company]({{ page.baseurl }}/b2b/company-object.html) and a [company user]({{ page.baseurl }}/b2b/company-object.html). +* You have an integration or [admin authorization token]({{ page.baseurl }}/rest/tutorials/orders/order-admin-token.html) to make calls on behalf of seller, and a [customer token]({{ page.baseurl }}/rest/tutorials/orders/order-create-customer.html#get-token) to make calls on behalf of the company user. ## Prepare the order @@ -997,8 +997,8 @@ Authorization Bearer ## Related information -* [Order processing tutorial]({{ page.baseurl }}/rest/tutorials/orders/order-intro.html) -* [Integrate with the NegotiableQuote module]({{ page.baseurl }}/b2b/negotiable-quote.html) -* [Manage negotiable quotes]({{ page.baseurl }}/b2b/negotiable-manage.html) -* [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) -* [Negotiable quote checkout]({{ page.baseurl }}/b2b/negotiable-checkout.html) +* [Order processing tutorial]({{ page.baseurl }}/rest/tutorials/orders/order-intro.html) +* [Integrate with the NegotiableQuote module]({{ page.baseurl }}/b2b/negotiable-quote.html) +* [Manage negotiable quotes]({{ page.baseurl }}/b2b/negotiable-manage.html) +* [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) +* [Negotiable quote checkout]({{ page.baseurl }}/b2b/negotiable-checkout.html) diff --git a/guides/v2.2/b2b/negotiable-quote.md b/guides/v2.2/b2b/negotiable-quote.md index d826af28d0f..f64a9860370 100644 --- a/guides/v2.2/b2b/negotiable-quote.md +++ b/guides/v2.2/b2b/negotiable-quote.md @@ -20,10 +20,10 @@ The negotiable quote lifecycle includes a number of stages, as shown on the diag The quoting process itself can be a continuous process, with a number of repeating cycles until the agreement is reached. -* The buyer creates and submits a negotiable quote -* The seller reviews and modifies or declines the quote -* The buyer reviews the seller's counteroffer -* Upon agreement, the buyer begins the checkout process and the system converts the negotiable quote into an order +* The buyer creates and submits a negotiable quote +* The seller reviews and modifies or declines the quote +* The buyer reviews the seller's counteroffer +* Upon agreement, the buyer begins the checkout process and the system converts the negotiable quote into an order {:.bs-callout .bs-callout-info} You cannot negotiate prices on individual items. @@ -66,7 +66,7 @@ The following diagram shows the negotiable quote lifecycle from the perspective ## Related information -* [Manage negotiable quotes]({{ page.baseurl }}/b2b/negotiable-manage.html) -* [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) -* [Negotiable quote checkout]({{ page.baseurl }}/b2b/negotiable-checkout.html) -* [Place a negotiable quote order]({{ page.baseurl }}/b2b/negotiable-order-workflow.html) +* [Manage negotiable quotes]({{ page.baseurl }}/b2b/negotiable-manage.html) +* [Update a negotiable quote]({{ page.baseurl }}/b2b/negotiable-update.html) +* [Negotiable quote checkout]({{ page.baseurl }}/b2b/negotiable-checkout.html) +* [Place a negotiable quote order]({{ page.baseurl }}/b2b/negotiable-order-workflow.html) diff --git a/guides/v2.2/b2b/negotiable-update.md b/guides/v2.2/b2b/negotiable-update.md index 85b21c09e8c..9f3d5cc7d68 100644 --- a/guides/v2.2/b2b/negotiable-update.md +++ b/guides/v2.2/b2b/negotiable-update.md @@ -78,8 +78,8 @@ The `negotiated_price_type` can have one of the following values: The buyer can add, update, or delete items from the quote under the following conditions: -* The quote is in one of the following system states: `created`, `processing_by_admin`, or `submitted_by_customer`. -* The quote doesn't have a negotiated price. +* The quote is in one of the following system states: `created`, `processing_by_admin`, or `submitted_by_customer`. +* The quote doesn't have a negotiated price. **Sample Usage** @@ -153,7 +153,7 @@ Authorization Bearer ## Related information -* [Integrate with the NegotiableQuote module]({{ page.baseurl }}/b2b/negotiable-quote.html) -* [Manage negotiable quotes]({{ page.baseurl }}/b2b/negotiable-manage.html) -* [Negotiable quote checkout]({{ page.baseurl }}/b2b/negotiable-checkout.html) -* [Place a negotiable quote order]({{ page.baseurl }}/b2b/negotiable-order-workflow.html) +* [Integrate with the NegotiableQuote module]({{ page.baseurl }}/b2b/negotiable-quote.html) +* [Manage negotiable quotes]({{ page.baseurl }}/b2b/negotiable-manage.html) +* [Negotiable quote checkout]({{ page.baseurl }}/b2b/negotiable-checkout.html) +* [Place a negotiable quote order]({{ page.baseurl }}/b2b/negotiable-order-workflow.html) diff --git a/guides/v2.2/b2b/roles.md b/guides/v2.2/b2b/roles.md index c51ac5d5447..29c313c3b2c 100644 --- a/guides/v2.2/b2b/roles.md +++ b/guides/v2.2/b2b/roles.md @@ -15,11 +15,11 @@ Within a company, customers may have different job roles, levels of responsibili {{site.data.var.b2b}} defines the following types of resources: -* Sales -* Negotiable quotes -* Company profile -* Company user management -* Company credit +* Sales +* Negotiable quotes +* Company profile +* Company user management +* Company credit Each of these resources contains a hierarchy of other resources. When a Company Admin grants or blocks access to a resource from the store UI, the action applies to all sub-resources, unless explicitly overridden. However, if you grant or block access using web APIs, you must specify each resource individually. @@ -1190,7 +1190,7 @@ None ## Related information -* [Integrate with the Company module]({{ page.baseurl }}/b2b/company.html) -* [Manage company objects]({{ page.baseurl }}/b2b/company-object.html) -* [Manage company users]({{ page.baseurl }}/b2b/company-users.html) -* [Manage company structures]({{ page.baseurl }}/b2b/company-structures.html) +* [Integrate with the Company module]({{ page.baseurl }}/b2b/company.html) +* [Manage company objects]({{ page.baseurl }}/b2b/company-object.html) +* [Manage company users]({{ page.baseurl }}/b2b/company-users.html) +* [Manage company structures]({{ page.baseurl }}/b2b/company-structures.html) diff --git a/guides/v2.2/b2b/shared-cat-company.md b/guides/v2.2/b2b/shared-cat-company.md index 0f688f8b3f1..ff96533d4dc 100644 --- a/guides/v2.2/b2b/shared-cat-company.md +++ b/guides/v2.2/b2b/shared-cat-company.md @@ -102,6 +102,6 @@ Not applicable ## Related information -* [Integrate with the SharedCatalog module]({{ page.baseurl }}/b2b/shared-catalog.html) -* [Manage shared catalogs]({{ page.baseurl }}/b2b/shared-cat-manage.html) -* [Assign categories and products]({{ page.baseurl }}/b2b/shared-cat-product-assign.html) +* [Integrate with the SharedCatalog module]({{ page.baseurl }}/b2b/shared-catalog.html) +* [Manage shared catalogs]({{ page.baseurl }}/b2b/shared-cat-manage.html) +* [Assign categories and products]({{ page.baseurl }}/b2b/shared-cat-product-assign.html) diff --git a/guides/v2.2/b2b/shared-cat-manage.md b/guides/v2.2/b2b/shared-cat-manage.md index b0c646794a8..129a6570d14 100644 --- a/guides/v2.2/b2b/shared-cat-manage.md +++ b/guides/v2.2/b2b/shared-cat-manage.md @@ -183,6 +183,6 @@ Not applicable ## Related information -* [Integrate with the SharedCatalog module]({{ page.baseurl }}/b2b/shared-catalog.html) -* [Assign categories and products]({{ page.baseurl }}/b2b/shared-cat-product-assign.html) -* [Assign companies]({{ page.baseurl }}/b2b/shared-cat-company.html) +* [Integrate with the SharedCatalog module]({{ page.baseurl }}/b2b/shared-catalog.html) +* [Assign categories and products]({{ page.baseurl }}/b2b/shared-cat-product-assign.html) +* [Assign companies]({{ page.baseurl }}/b2b/shared-cat-company.html) diff --git a/guides/v2.2/b2b/shared-cat-product-assign.md b/guides/v2.2/b2b/shared-cat-product-assign.md index 794c5982586..52c5955ca46 100644 --- a/guides/v2.2/b2b/shared-cat-product-assign.md +++ b/guides/v2.2/b2b/shared-cat-product-assign.md @@ -10,9 +10,9 @@ functional_areas: The shared catalog configuration process includes assigning categories and products to the shared catalog. To assign these items to a shared catalog, the following conditions must be met: -* The category structure must already be defined. You cannot create a new category to be included in a shared catalog. Use endpoints like `POST /V1/categories` to create a new category. +* The category structure must already be defined. You cannot create a new category to be included in a shared catalog. Use endpoints like `POST /V1/categories` to create a new category. -* Each category must already be populated with products. You cannot add a new product to a category to be included in a shared catalog. Use endpoints like `POST /V1/products` to create a new product. +* Each category must already be populated with products. You cannot add a new product to a category to be included in a shared catalog. Use endpoints like `POST /V1/products` to create a new product. ## Assign categories @@ -216,7 +216,7 @@ Unassigning a product does not remove it from its category or categories. `true`, indicating the operation was successful -### List the shared catalog categories +### List the shared catalog products The `GET` call returns an array of SKUs. @@ -242,6 +242,6 @@ Not applicable ## Related information -* [Integrate with the SharedCatalog module]({{ page.baseurl }}/b2b/shared-catalog.html) -* [Manage shared catalogs]({{ page.baseurl }}/b2b/shared-cat-manage.html) -* [Assign companies]({{ page.baseurl }}/b2b/shared-cat-company.html) +* [Integrate with the SharedCatalog module]({{ page.baseurl }}/b2b/shared-catalog.html) +* [Manage shared catalogs]({{ page.baseurl }}/b2b/shared-cat-manage.html) +* [Assign companies]({{ page.baseurl }}/b2b/shared-cat-company.html) diff --git a/guides/v2.2/b2b/shared-catalog.md b/guides/v2.2/b2b/shared-catalog.md index 3b0aa9531a9..c18d542fa7a 100644 --- a/guides/v2.2/b2b/shared-catalog.md +++ b/guides/v2.2/b2b/shared-catalog.md @@ -23,7 +23,7 @@ Custom shared catalogs can be assigned to companies only. They cannot be set for ## Related information -* [Manage shared catalogs]({{ page.baseurl }}/b2b/shared-cat-manage.html) -* [Assign categories and products]({{ page.baseurl }}/b2b/shared-cat-product-assign.html) -* [Assign companies]({{ page.baseurl }}/b2b/shared-cat-company.html) -* [Manage prices for multiple products]({{ page.baseurl }}/rest/modules/catalog-pricing.html) +* [Manage shared catalogs]({{ page.baseurl }}/b2b/shared-cat-manage.html) +* [Assign categories and products]({{ page.baseurl }}/b2b/shared-cat-product-assign.html) +* [Assign companies]({{ page.baseurl }}/b2b/shared-cat-company.html) +* [Manage prices for multiple products]({{ page.baseurl }}/rest/modules/catalog-pricing.html) diff --git a/guides/v2.2/bk-get-started-magento.md b/guides/v2.2/bk-get-started-magento.md index 0765644db19..d6c34e80fdf 100644 --- a/guides/v2.2/bk-get-started-magento.md +++ b/guides/v2.2/bk-get-started-magento.md @@ -37,5 +37,5 @@ Feel free to contact the documentation team directly at {:.ref-header} Related topics -* [Release Notes]({{ page.baseurl }}/release-notes/bk-release-notes.html) -* [Architecture Guide]({{ page.baseurl }}/architecture/bk-architecture.html) +* [Release Notes]({{ page.baseurl }}/release-notes/bk-release-notes.html) +* [Architecture Guide]({{ page.baseurl }}/architecture/bk-architecture.html) diff --git a/guides/v2.2/cloud/architecture/cloud-architecture.md b/guides/v2.2/cloud/architecture/cloud-architecture.md index a4775522242..a61b95661ea 100644 --- a/guides/v2.2/cloud/architecture/cloud-architecture.md +++ b/guides/v2.2/cloud/architecture/cloud-architecture.md @@ -112,7 +112,7 @@ The [Starter plan architecture]({{ page.baseurl }}/cloud/basic-information/start The [Pro plan architecture]({{ page.baseurl }}/cloud/architecture/pro-architecture.html) has a global master with three environments: -- **Integration**—The Integration environment provides a testable environment that includes a database, web server, caching, some services, environment variables, and configurations. You can develop, deploy, and test your code before merging to the Staging environment. - - _Inactive_—You can have an unlimited number of inactive branches based on the Integration environment. -- **Staging**—The Staging environment is for pre-Production testing and includes a database, web server, caching, services, environment variables, configurations, and services, such as Fastly. -- **Production**—The Production environment includes a three-node, high-availability architecture for your data, services, caching, and store. This is your live, public store environment with environment variables, configurations, and third-party services. +- **Integration**—The Integration environment provides a testable environment that includes a database, web server, caching, some services, environment variables, and configurations. You can develop, deploy, and test your code before merging to the Staging environment. + - _Inactive_—You can have an unlimited number of inactive branches based on the Integration environment. +- **Staging**—The Staging environment is for pre-Production testing and includes a database, web server, caching, services, environment variables, configurations, and services, such as Fastly. +- **Production**—The Production environment includes a three-node, high-availability architecture for your data, services, caching, and store. This is your live, public store environment with environment variables, configurations, and third-party services. diff --git a/guides/v2.2/cloud/architecture/pro-architecture.md b/guides/v2.2/cloud/architecture/pro-architecture.md index e05fca5d61b..e46b5489ddd 100644 --- a/guides/v2.2/cloud/architecture/pro-architecture.md +++ b/guides/v2.2/cloud/architecture/pro-architecture.md @@ -7,17 +7,16 @@ redirect_from: - /guides/v2.3/cloud/reference/discover-arch.html - /guides/v2.2/cloud/architecture/pro-architecture-legacy.html - /guides/v2.3/cloud/architecture/pro-architecture-legacy.html - functional_areas: - Cloud --- Your {{site.data.var.ece}} Pro architecture supports a maximum of **eight** environments that you can use to develop, test, and launch your store. Each environment contains a database and a web server: -- **Integration**—Provides a single environment branch, and you can create up to four additional, environment branches. This allows for a maximum of five _active_ branches deployed to Platform-as-a-Service (PaaS) containers. -- **Staging**—Provides a single environment branch deployed to dedicated Infrastructure-as-a-Service (IaaS) containers. -- **Production**—Provides a single environment branch deployed to dedicated Infrastructure-as-a-Service (IaaS) containers. -- **Global Master**—Provides a `master` branch deployed to Platform-as-a-Service (PaaS) containers. +- **Integration**—Provides a single environment branch, and you can create up to four additional, environment branches. This allows for a maximum of five _active_ branches deployed to Platform-as-a-Service (PaaS) containers. +- **Staging**—Provides a single environment branch deployed to dedicated Infrastructure-as-a-Service (IaaS) containers. +- **Production**—Provides a single environment branch deployed to dedicated Infrastructure-as-a-Service (IaaS) containers. +- **Global Master**—Provides a `master` branch deployed to Platform-as-a-Service (PaaS) containers. The following table summarizes the differences between environments: @@ -82,10 +81,10 @@ Your project is a single Git repository with three, main environment branches fo Developers use the Integration environment to develop, deploy, and test: -- Magento application code -- Custom code -- Extensions -- Services +- Magento application code +- Custom code +- Extensions +- Services The Integration environment runs in a Linux container (LXC) on a grid of servers known as Platform-as-a-Service (PaaS). Each environment includes a web server and database to test your site. @@ -121,10 +120,10 @@ Because of our unique, redundant hardware, we can provide you with three gateway The three gateways map to the three servers in your Production environment cluster and retain static IP addresses. It is fully redundant and highly available at every level: -- DNS -- Content Delivery Network (CDN) -- Elastic load balancer (ELB) -- Three-server cluster comprising all Magento services, including the database and web server +- DNS +- Content Delivery Network (CDN) +- Elastic load balancer (ELB) +- Three-server cluster comprising all Magento services, including the database and web server ### Backup and disaster recovery @@ -144,23 +143,23 @@ Weeks 12 to 22 | One backup per month {{site.data.var.ece}} creates the backup using snapshots to encrypted elastic block storage (EBS) volumes. An EBS snapshot is immediate, but the time it takes to write to the simple storage service (S3) depends on the volume of changes. -- **Recovery Point Objective (RPO)**—is 1 hour for the first 24 hours; after which, the RPO is 6 hours (maximum time to last backup). -- **Recovery Time Objective (RTO)**—depends on the size of the storage. Large EBS volumes take more time to restore. +- **Recovery Point Objective (RPO)**—is 1 hour for the first 24 hours; after which, the RPO is 6 hours (maximum time to last backup). +- **Recovery Time Objective (RTO)**—depends on the size of the storage. Large EBS volumes take more time to restore. ### Production technology stack The Production environment has three virtual machines (VMs) behind an Elastic Load Balancer managed by an HAProxy per VM. Each VM includes the following technologies: -- **Fastly CDN**—HTTP caching and CDN -- **NGINX**—web server using PHP-FPM, one instance with multiple workers -- **GlusterFS**—file server for managing all static file deployments and synchronization with four directory mounts: - - `var` - - `pub/media` - - `pub/static` - - `app/etc` -- **Redis**—one server per VM with only one active and the other two as replicas -- **Elasticsearch**—search for {{site.data.var.ece}} 2.1 and later -- **Galera**—database cluster with one MariaDB MySQL database per node with an auto-increment setting of three for unique IDs across every database +- **Fastly CDN**—HTTP caching and CDN +- **NGINX**—web server using PHP-FPM, one instance with multiple workers +- **GlusterFS**—file server for managing all static file deployments and synchronization with four directory mounts: + - `var` + - `pub/media` + - `pub/static` + - `app/etc` +- **Redis**—one server per VM with only one active and the other two as replicas +- **Elasticsearch**—search for {{site.data.var.ece}} 2.1 and later +- **Galera**—database cluster with one MariaDB MySQL database per node with an auto-increment setting of three for unique IDs across every database The following figure shows the technologies used in the Production environment: @@ -168,27 +167,28 @@ The following figure shows the technologies used in the Production environment: {{site.data.var.ee}} can scale from the smallest Pro12 cluster to the largest Pro120 cluster. -- Pro12 offers a 12-CPU (4 x 3 nodes) and 48GB RAM (16 x 3 nodes) -- Pro120 offers 120 CPU (40 x 3 nodes) up to 480GB RAM (160 x 3 nodes) +- Pro12 offers a 12-CPU (4 x 3 nodes) and 48GB RAM (16 x 3 nodes) +- Pro120 offers 120 CPU (40 x 3 nodes) up to 480GB RAM (160 x 3 nodes) Our redundant architecture means we can offer upscaling without downtime. When upscaling, we rotate each of the three instances to upgrade capacity without impacting site operation. ## Software versions {#cloud-arch-software} + {{site.data.var.ece}} uses the Debian GNU/Linux 8 (jessie) operating system and the [NGINX](https://glossary.magento.com/nginx) 1.8 web server. You cannot upgrade this software, but you can configure versions for the following: -- [PHP]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html) -- [MySQL]({{ page.baseurl }}/cloud/project/project-conf-files_services-mysql.html) -- [Redis]({{ page.baseurl }}/cloud/project/project-conf-files_services-redis.html) -- [RabbitMQ]({{ page.baseurl }}/cloud/project/project-conf-files_services-rabbit.html) -- [Elasticsearch]({{ page.baseurl }}/cloud/project/project-conf-files_services-elastic.html) +- [PHP]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html) +- [MySQL]({{ page.baseurl }}/cloud/project/project-conf-files_services-mysql.html) +- [Redis]({{ page.baseurl }}/cloud/project/project-conf-files_services-redis.html) +- [RabbitMQ]({{ page.baseurl }}/cloud/project/project-conf-files_services-rabbit.html) +- [Elasticsearch]({{ page.baseurl }}/cloud/project/project-conf-files_services-elastic.html) For the Staging and Production environments, we recommend installing the Fastly CDN module 1.2.33 or later. See [Fastly in Cloud]({{ page.baseurl }}/cloud/basic-information/cloud-fastly.html). Edit the following YAML files to configure specific software versions to use in your implementation. -- [`.magento.app.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html)—application build and deployment -- [`routes.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_routes.html)—url processing -- [`services.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_services.html)—supported services -- [`.magento.env.yaml`]({{ page.baseurl }}/cloud/project/magento-env-yaml.html)—unified configs for {{site.data.var.ece}} 2.2 and later +- [`.magento.app.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html)—application build and deployment +- [`routes.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_routes.html)—url processing +- [`services.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_services.html)—supported services +- [`.magento.env.yaml`]({{ page.baseurl }}/cloud/project/magento-env-yaml.html)—unified configs for {{site.data.var.ece}} 2.2 and later diff --git a/guides/v2.2/cloud/basic-information/starter-develop-deploy-workflow.md b/guides/v2.2/cloud/basic-information/starter-develop-deploy-workflow.md index ba9cc476088..d2636e74389 100644 --- a/guides/v2.2/cloud/basic-information/starter-develop-deploy-workflow.md +++ b/guides/v2.2/cloud/basic-information/starter-develop-deploy-workflow.md @@ -7,9 +7,9 @@ The {{site.data.var.ece}} includes a single Git repository with a master branch For your environments, we recommend following a Development > Staging > Production workflow to develop and deploy your site. -* **Production environment (live site)**—Provides a full Production environment with all services built and deployed from the code on the `master` branch. -* **Staging environment**—Provides a full Staging environment that matches the Production environment with all services built and deployed from a `staging` branch that you create by cloning from `master`. -* **Integration environments**—Provides up to two active development environments that you create from the `staging` branch. The Integration environment does not support third-party services like Fastly and New Relic. +* **Production environment (live site)**—Provides a full Production environment with all services built and deployed from the code on the `master` branch. +* **Staging environment**—Provides a full Staging environment that matches the Production environment with all services built and deployed from a `staging` branch that you create by cloning from `master`. +* **Integration environments**—Provides up to two active development environments that you create from the `staging` branch. The Integration environment does not support third-party services like Fastly and New Relic. For your branches, you can follow any development methodology. For example, you can follow an Agile methodology such as scrum to create branches for every sprint. @@ -21,18 +21,18 @@ Development and deployment on Starter plans begin with your initial project. You The development workflow uses the following process: -* [Clone and branch](#clone-branch) from the `master` to create `staging` and development branches -* [Develop code](#dev-code) and install extensions locally in a development branch -* [Configure](#configure-store) your store and extension settings -* [Generate configuration](#config-management) management files -* [Push code](#push-code) and configuration to build and deploy to the Staging and Production environments +* [Clone and branch](#clone-branch) from the `master` to create `staging` and development branches +* [Develop code](#dev-code) and install extensions locally in a development branch +* [Configure](#configure-store) your store and extension settings +* [Generate configuration](#config-management) management files +* [Push code](#push-code) and configuration to build and deploy to the Staging and Production environments ![Develop and deploy workflow]({{ site.baseurl }}/common/images/cloud_workflow-starter.png) You also have a few optional steps to help develop and test your code and your store data: -* [Install sample data](#sample-data) to your store -* [Pull production store data](#prod-data) down to environments +* [Install sample data](#sample-data) to your store +* [Pull production store data](#prod-data) down to environments This process assumes that you have set up your [local developer workspace]({{ page.baseurl }}/cloud/setup/first-time-setup.html). @@ -71,12 +71,12 @@ It's the time you have been waiting for...writing code. Using this base branch o We recommend using a branching strategy with your development work. Using one branch to do all of your work all at once might make testing difficult. For example, you could follow continuous integration and sprint methodologies to work: -* Add a few extensions and configure them with your first branch -* Push this code, test, and merge to Staging then Production -* Fully configure your services in `services.yaml` and add a theme -* Push this code, test, and merge to Staging then Production -* Integrate with a 3rd party service -* Push this code, test, and merge to Staging then Production +* Add a few extensions and configure them with your first branch +* Push this code, test, and merge to Staging then Production +* Fully configure your services in `services.yaml` and add a theme +* Push this code, test, and merge to Staging then Production +* Integrate with a 3rd party service +* Push this code, test, and merge to Staging then Production And so on until you have your store fully built, configured, and ready to go live. But keep reading, we have even better options for your store and code configuration! @@ -92,11 +92,11 @@ Configure your store settings from the Magento Admin panel for the Integration e For the best information on configurations, review the documentation for {{site.data.var.ee}} and the installed extensions. Here are some links and ideas to help you get kickstarted: -* [Best practices for store configuration]({{ page.baseurl }}/cloud/configure/configure-best-practices.html) for specific best practices in the cloud -* [Basic configuration](http://docs.magento.com/m2/ee/user_guide/configuration/configuration-basic.html) for store admin access, name, languages, currencies, branding, sites, store views and more -* [Theme](http://docs.magento.com/m2/ee/user_guide/design/design-theme.html) for your look and feel of the site and stores including CSS and layouts -* [System configuration](http://docs.magento.com/m2/ee/user_guide/system/system.html) for roles, tools, notifications, and your encryption key for your database -* Extension settings using their documentation +* [Best practices for store configuration]({{ page.baseurl }}/cloud/configure/configure-best-practices.html) for specific best practices in the cloud +* [Basic configuration](http://docs.magento.com/m2/ee/user_guide/configuration/configuration-basic.html) for store admin access, name, languages, currencies, branding, sites, store views and more +* [Theme](http://docs.magento.com/m2/ee/user_guide/design/design-theme.html) for your look and feel of the site and stores including CSS and layouts +* [System configuration](http://docs.magento.com/m2/ee/user_guide/system/system.html) for roles, tools, notifications, and your encryption key for your database +* Extension settings using their documentation Beyond just store settings, you can further configure multiple sites and stores, configured services, and more. See [Configure Magento Commerce]({{ page.baseurl }}/cloud/configure/configuration-overview.html). @@ -108,8 +108,8 @@ If you are familiar with Magento, you may be concerned about how to get your con {{site.data.var.ece}} provides a set of two [Configuration Management]({{ page.baseurl }}/cloud/live/sens-data-over.html) commands that export configuration settings from your environment into a file. These commands are only available for **{{site.data.var.ece}} 2.2 and later**. -* `php .vendor/bin/m2-ece-scd-dump`: Recommended. Exports only the configuration settings you have entered or modified from defaults into a configuration file. -* `php bin/magento app:config:dump`: Exports every configuration setting, including modified and default, into a configuration file. +* `php .vendor/bin/m2-ece-scd-dump`: Recommended. Exports only the configuration settings you have entered or modified from defaults into a configuration file. +* `php bin/magento app:config:dump`: Exports every configuration setting, including modified and default, into a configuration file. The generated file is `app/etc/config.php`. @@ -117,11 +117,11 @@ You generate the file in the Integration environment where you configured Magent **Important notes** on Configuration Management: -* Any configuration setting included in the file generated from the `app:config:dump` command is locked from editing, or read-only, in the deployed environment. This is one reason we recommend using the `.vendor/bin/m2-ece-scd-dump` command. +* Any configuration setting included in the file generated from the `app:config:dump` command is locked from editing, or read-only, in the deployed environment. This is one reason we recommend using the `.vendor/bin/m2-ece-scd-dump` command. - For example, we will have you install a module for Fastly in your development environment. You can only configure this module in the Staging and Production environment. Using the `.vendor/bin/m2-ece-scd-dump` command keeps those default fields editable when you deploy your development changes to the Staging and Production environment. + For example, we will have you install a module for Fastly in your development environment. You can only configure this module in the Staging and Production environment. Using the `.vendor/bin/m2-ece-scd-dump` command keeps those default fields editable when you deploy your development changes to the Staging and Production environment. -* The generated file can be long depending on the size of your deployment. The `.vendor/bin/m2-ece-scd-dump` command generates a much smaller file than the file generated by the `app:config:dump` command. +* The generated file can be long depending on the size of your deployment. The `.vendor/bin/m2-ece-scd-dump` command generates a much smaller file than the file generated by the `app:config:dump` command. ![Generate configuration management file]({{ site.baseurl }}/common/images/cloud_workflow-config-mgmt.png) @@ -175,19 +175,19 @@ When you push branched code from your local environment to the remote branch, a Build scripts: -* Your site on the target environment continue running during a build -* Check and run {{site.data.var.ece}} patches and hotfixes -* Compile your code with a build and deploy log -* Check for Configuration Management, if there static content deploy occurs during this phase -* Create or use a slug of unchanged code to speed up the process -* Provision all backend services and applications +* Your site on the target environment continue running during a build +* Check and run {{site.data.var.ece}} patches and hotfixes +* Compile your code with a build and deploy log +* Check for Configuration Management, if there static content deploy occurs during this phase +* Create or use a slug of unchanged code to speed up the process +* Provision all backend services and applications Deploy scripts: -* Puts your site on the target environment in Maintenance mode -* Deploys static content if not completed during Build -* Installs or updates {{site.data.var.ece}} -* Configure routing for traffic +* Puts your site on the target environment in Maintenance mode +* Deploys static content if not completed during Build +* Installs or updates {{site.data.var.ece}} +* Configure routing for traffic When fully completed, your store comes back online, live, with all of your updated code and configurations. @@ -218,9 +218,9 @@ Following your branching and development methodologies, you can easily develop n {{site.data.var.ece}} environments support continuous integration for constant updates. This workflow supports releases multiple times a day or on a set schedule according to your business needs. -* Create development branches with future features and changes -* Test the code in your development environments -* Deploy and test in Staging -* Deploy to Production +* Create development branches with future features and changes +* Test the code in your development environments +* Deploy and test in Staging +* Deploy to Production For more information, see [Continuous integration]({{ page.baseurl }}/cloud/deploy/continuous-deployment.html). diff --git a/guides/v2.2/cloud/before/before-setup-env-2_clone.md b/guides/v2.2/cloud/before/before-setup-env-2_clone.md index fca91eb1862..e8fa3f23e37 100644 --- a/guides/v2.2/cloud/before/before-setup-env-2_clone.md +++ b/guides/v2.2/cloud/before/before-setup-env-2_clone.md @@ -148,8 +148,8 @@ To add variables using the Project Web Interface: After cloning your project and updating the Magento administrator account configuration, you can branch for development. As stated earlier, you must create an environment using the `magento-cloud environment:branch ` command or the Project Web Interface for the environment to become _active_. -- For [Starter]({{ page.baseurl }}/cloud/basic-information/starter-develop-deploy-workflow.html#clone-branch), consider creating a branch for `staging`, then create a development branch based on the `staging` branch. -- For [Pro]({{ page.baseurl }}/cloud/architecture/pro-develop-deploy-workflow.html), create development branches based on the Integration environment. +- For [Starter]({{ page.baseurl }}/cloud/basic-information/starter-develop-deploy-workflow.html#clone-branch), consider creating a branch for `staging`, then create a development branch based on the `staging` branch. +- For [Pro]({{ page.baseurl }}/cloud/architecture/pro-develop-deploy-workflow.html), create development branches based on the Integration environment. {:.procedure} To branch from master: diff --git a/guides/v2.2/cloud/before/before-setup-env-install.md b/guides/v2.2/cloud/before/before-setup-env-install.md index b7ad94bb870..53f9ad623a2 100644 --- a/guides/v2.2/cloud/before/before-setup-env-install.md +++ b/guides/v2.2/cloud/before/before-setup-env-install.md @@ -21,9 +21,9 @@ With your workspace prepared, install Magento on your local to verify custom cod To customize the Magento software on your local workstation, prepare the following: -* Hostname or IP address of your machine -* Admin username, password, and URL created earlier -* Magento authentication keys for installing Magento +* Hostname or IP address of your machine +* Admin username, password, and URL created earlier +* Magento authentication keys for installing Magento ### List the Magento Admin environment variables @@ -105,8 +105,8 @@ Prior to installing, you should [Update installation dependencies]({{ page.baseu Be ready to install Magento using one of the following options: -* [Install the Magento software using the command line]({{ page.baseurl }}/install-gde/install/cli/install-cli.html) -* [Install the Magento software using the Web Setup Wizard]({{ page.baseurl }}/install-gde/install/web/install-web.html) +* [Install the Magento software using the command line]({{ page.baseurl }}/install-gde/install/cli/install-cli.html) +* [Install the Magento software using the Web Setup Wizard]({{ page.baseurl }}/install-gde/install/web/install-web.html) {:.procedure} To install Magento using the command line: @@ -181,17 +181,17 @@ Optionally, if you used Vagrant with the _hostmanager_ plugin, update the hosts For development and testing in an environment as close to Integration as possible, you may also want to install additional tools, software, and services. These services are configured using [`services.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_services.html). -* [Redis]({{ page.baseurl }}/cloud/project/project-conf-files_services-redis.html) -* [ElasticSearch]({{ page.baseurl }}/cloud/project/project-conf-files_services-elastic.html) -* [RabbitMQ]({{ page.baseurl }}/cloud/project/project-conf-files_services-rabbit.html) -* [Additional software]({{ page.baseurl }}/install-gde/prereq/optional.html) for Magento +* [Redis]({{ page.baseurl }}/cloud/project/project-conf-files_services-redis.html) +* [ElasticSearch]({{ page.baseurl }}/cloud/project/project-conf-files_services-elastic.html) +* [RabbitMQ]({{ page.baseurl }}/cloud/project/project-conf-files_services-rabbit.html) +* [Additional software]({{ page.baseurl }}/install-gde/prereq/optional.html) for Magento ## Verify your local workspace To verify the local, access the store using the URL you passed in the install command. For this example, you can access the local Magento store using the following URL formats: -* `http://magento.local/` -* `http://magento.local/admin` +* `http://magento.local/` +* `http://magento.local/admin` To change the URI for the Admin panel, use this command to locate it: @@ -205,12 +205,12 @@ To verify the Integration master branch environment, log into the Project Web In With these steps completed, you should have: -* A {{site.data.var.ee}} account and initial project setup and master branch -* A local workspace configured with installations of required software, Magento Cloud CLI, and Magento -* SSH keys set up -* The Magento file system owner configured -* Your initial code branch -* Magento authentication keys set up and configured in the project and local +* A {{site.data.var.ee}} account and initial project setup and master branch +* A local workspace configured with installations of required software, Magento Cloud CLI, and Magento +* SSH keys set up +* The Magento file system owner configured +* Your initial code branch +* Magento authentication keys set up and configured in the project and local {:.ref-header} Next step diff --git a/guides/v2.2/cloud/before/before-workspace-file-sys-owner.md b/guides/v2.2/cloud/before/before-workspace-file-sys-owner.md index 2b321867111..072c0e59d1b 100644 --- a/guides/v2.2/cloud/before/before-workspace-file-sys-owner.md +++ b/guides/v2.2/cloud/before/before-workspace-file-sys-owner.md @@ -55,7 +55,7 @@ Because the point of creating this user is to provide added security, it is esse To find the web server user's group: -* CentOS: +* CentOS: ```bash grep -E -i '^user|^group' /etc/httpd/conf/httpd.conf @@ -69,7 +69,7 @@ To find the web server user's group: Typically, the user and group name are both `apache` -* Ubuntu: `ps aux | grep apache` to find the apache user, then `groups ` to find the group +* Ubuntu: `ps aux | grep apache` to find the apache user, then `groups ` to find the group Typically, the username and the group name are both `www-data` @@ -77,8 +77,8 @@ To find the web server user's group: Assuming the typical Apache group name for CentOS and Ubuntu, enter the following command as a user with `root` privileges: -* CentOS: `usermod -g apache ` -* Ubuntu: `usermod -g www-data ` +* CentOS: `usermod -g apache ` +* Ubuntu: `usermod -g www-data ` For example, to add the user `magento_user` to the `apache` primary group on CentOS: @@ -100,8 +100,8 @@ magento_user : apache To complete the task, restart the web server: -* Ubuntu: `service apache2 restart` -* CentOS: `service httpd restart` +* Ubuntu: `service apache2 restart` +* CentOS: `service httpd restart` {:.ref-header} Next step diff --git a/guides/v2.2/cloud/before/before-workspace-magento-prereqs.md b/guides/v2.2/cloud/before/before-workspace-magento-prereqs.md index 331bb746b93..dc7fcfe5ef7 100644 --- a/guides/v2.2/cloud/before/before-workspace-magento-prereqs.md +++ b/guides/v2.2/cloud/before/before-workspace-magento-prereqs.md @@ -30,15 +30,15 @@ To best develop and manage your host, we recommend using a virtual machine. The For your VM, we recommend installing one of the following: -* [Vagrant](https://www.vagrantup.com/docs/) for a virtual machine -* [Docker](https://docs.docker.com/) for a container +* [Vagrant](https://www.vagrantup.com/docs/) for a virtual machine +* [Docker](https://docs.docker.com/) for a container When using Vagrant, we also recommend the package [hostmanager](https://github.com/devopsgroup-io/vagrant-hostmanager) and using [VirtualBox](https://www.virtualbox.org/wiki/Documentation) to manage the environment. VirtualBox extends support and features across all OS and platforms to create and manage multiple VMs and operating systems on your local. ## Development tools {#devtools} -* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) - Provides code branching and management for accessing {{site.data.var.ee}} and your code repositories. Use Git command-line commands or applications of your choice to work with Git. You can install this on your local VM or on your host. For more information, see [How Cloud uses Git]({{ page.baseurl }}/cloud/reference/git-integration.html). -* [Composer](https://getcomposer.org/download/) - Used for dependency management. Composer enables us to manage the Magento components and their dependencies. Install on your local VM. For more information, see [How Cloud uses Composer]({{ page.baseurl }}/cloud/reference/cloud-composer.html). +* [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) - Provides code branching and management for accessing {{site.data.var.ee}} and your code repositories. Use Git command-line commands or applications of your choice to work with Git. You can install this on your local VM or on your host. For more information, see [How Cloud uses Git]({{ page.baseurl }}/cloud/reference/git-integration.html). +* [Composer](https://getcomposer.org/download/) - Used for dependency management. Composer enables us to manage the Magento components and their dependencies. Install on your local VM. For more information, see [How Cloud uses Composer]({{ page.baseurl }}/cloud/reference/cloud-composer.html). ## Web server (local) {#webserver} @@ -50,18 +50,18 @@ Install [PHP](https://glossary.magento.com/php) on your local workstation. For i The following packages may also be helpful for your PHP installation: -* [bcmath](http://php.net/manual/en/book.bc.php) -* [curl](http://php.net/manual/en/book.curl.php) -* ext-dom -* [fpm](https://php-fpm.org/) -* [gd](http://php.net/manual/en/book.image.php) -* [intl](http://php.net/manual/en/book.intl.php) -* [json](http://php.net/manual/en/ref.json.php) -* [mbstring](http://php.net/manual/en/book.mbstring.php) -* [mcrypt](http://php.net/manual/en/book.mcrypt.php) (for PHP 7.1 and earlier only) -* [mysql](http://php.net/manual/en/set.mysqlinfo.php) -* [xml](http://php.net/manual/en/book.xml.php) -* [zip](http://php.net/manual/en/book.zip.php) +* [bcmath](http://php.net/manual/en/book.bc.php) +* [curl](http://php.net/manual/en/book.curl.php) +* ext-dom +* [fpm](https://php-fpm.org/) +* [gd](http://php.net/manual/en/book.image.php) +* [intl](http://php.net/manual/en/book.intl.php) +* [json](http://php.net/manual/en/ref.json.php) +* [mbstring](http://php.net/manual/en/book.mbstring.php) +* [mcrypt](http://php.net/manual/en/book.mcrypt.php) (for PHP 7.1 and earlier only) +* [mysql](http://php.net/manual/en/set.mysqlinfo.php) +* [xml](http://php.net/manual/en/book.xml.php) +* [zip](http://php.net/manual/en/book.zip.php) ### Set up PHP memory limit {#cloud-first-php} @@ -85,10 +85,10 @@ To set a memory limit: 1. Save your changes to `php.ini` and exit the text editor. 1. Restart your web server: - * Apache: - * CentOS: `service httpd restart` - * Ubuntu: `service apache2 restart` - * Nginx: `service nginx restart` + * Apache: + * CentOS: `service httpd restart` + * Ubuntu: `service apache2 restart` + * Nginx: `service nginx restart` ## Database (local) {#database} @@ -219,8 +219,8 @@ To install the Magento Cloud CLI: The requirements listed in this topic are specific to {{site.data.var.ece}} environments. You will also install {{site.data.var.ee}} on your VM or Docker container. For that installation, you should also review the following: -* [{{site.data.var.ee}} requirements]({{ page.baseurl }}/install-gde/system-requirements.html) -* [(Integrator) Integrator installation]({{ page.baseurl }}/install-gde/composer.html) +* [{{site.data.var.ee}} requirements]({{ page.baseurl }}/install-gde/system-requirements.html) +* [(Integrator) Integrator installation]({{ page.baseurl }}/install-gde/composer.html) ## Additional options diff --git a/guides/v2.2/cloud/before/before-workspace-ssh.md b/guides/v2.2/cloud/before/before-workspace-ssh.md index 9b31fa720d7..38ddfaffe03 100644 --- a/guides/v2.2/cloud/before/before-workspace-ssh.md +++ b/guides/v2.2/cloud/before/before-workspace-ssh.md @@ -17,8 +17,8 @@ The [SSH protocol](https://en.wikipedia.org/wiki/Secure_Shell) is designed to ma When initially setting up your local environment, you need to add the SSH keys to the following specific environments: -* Starter: Add to Master (Production) and any environments you create by branching from Master -* Pro: Add to Master Integration environment. After your Staging and Production environments are provisioned, you can add the SSH keys to those environments through the Project Web Interface or via SSH and CLI commands. +* Starter: Add to Master (Production) and any environments you create by branching from Master +* Pro: Add to Master Integration environment. After your Staging and Production environments are provisioned, you can add the SSH keys to those environments through the Project Web Interface or via SSH and CLI commands. {% include cloud/enable-ssh.md %} diff --git a/guides/v2.2/cloud/cdn/cloud-fastly-custom-response.md b/guides/v2.2/cloud/cdn/cloud-fastly-custom-response.md index 41e72449e0c..dcd8f2cc4d0 100644 --- a/guides/v2.2/cloud/cdn/cloud-fastly-custom-response.md +++ b/guides/v2.2/cloud/cdn/cloud-fastly-custom-response.md @@ -20,23 +20,23 @@ You can update your {{ site.var.data.ee }} store configuration to replace some d Currently, you can customize the following Fastly response pages for your {{ site.data.var.ece }} project through the Magento Admin UI. -- [Timeout or site maintenance outages (503 Service Unavailable)](#customize-the-503-error-page) -- [WAF blocking events that occur when the WAF detects suspicious request traffic (403 Forbidden)](#customize-the-waf-error-page) +- [Timeout or site maintenance outages (503 Service Unavailable)](#customize-the-503-error-page) +- [WAF blocking events that occur when the WAF detects suspicious request traffic (403 Forbidden)](#customize-the-waf-error-page) **HTML coding requirements:** The HTML code for the custom page must meet the following requirements: -- Content can contain up to 65,535 characters. -- Specify all CSS inline in the HTML source. -- Bundle images in the HTML page using base64 so that they display even if Fastly is offline. See [Data URIs on the css-tricks site](https://css-tricks.com/data-uris/). +- Content can contain up to 65,535 characters. +- Specify all CSS inline in the HTML source. +- Bundle images in the HTML page using base64 so that they display even if Fastly is offline. See [Data URIs on the css-tricks site](https://css-tricks.com/data-uris/). ## Customize the 503 error page Customers see the default 503 error page in the following cases: -- When a request to the Fastly origin returns a response status great than 500. -- When the Fastly origin is down, for example due to a timeout, maintenance activity, or health issues. +- When a request to the Fastly origin returns a response status great than 500. +- When the Fastly origin is down, for example due to a timeout, maintenance activity, or health issues. You can customize the default page by adapting the following HTML code to include styling to match your {{ site.data.var.ee }} store theme and modifying the title and messaging as needed. @@ -77,9 +77,9 @@ To add the custom response page to the Fastly configuration: 1. Refresh the cache. - - In the notification at the top of the page, click the *Cache Management* link. + - In the notification at the top of the page, click the *Cache Management* link. - - On the Cache Management page, click **Flush Magento Cache**. + - On the Cache Management page, click **Flush Magento Cache**. ## Customize the WAF error page @@ -139,9 +139,9 @@ To edit the WAF error page: 1. Refresh the cache. - - In the notification at the top of the page, click the **Cache Management** link. + - In the notification at the top of the page, click the **Cache Management** link. - - On the Cache Management page, click **Flush Magento Cache**. + - On the Cache Management page, click **Flush Magento Cache**. diff --git a/guides/v2.2/cloud/cdn/configure-fastly.md b/guides/v2.2/cloud/cdn/configure-fastly.md index e59431a284a..0cc0c3f1527 100644 --- a/guides/v2.2/cloud/cdn/configure-fastly.md +++ b/guides/v2.2/cloud/cdn/configure-fastly.md @@ -20,10 +20,10 @@ For VCL snippets, experience developing that code is required for advanced confi The process for configuring Fastly includes: -- Get Fastly credentials for Staging and Production environments -- Enable Fastly CDN caching in your environment -- Upload Fastly VCL snippets -- Advanced configurations including VCL snippets, as needed for your {{ site.data.var.ee }} sites +- Get Fastly credentials for Staging and Production environments +- Enable Fastly CDN caching in your environment +- Upload Fastly VCL snippets +- Advanced configurations including VCL snippets, as needed for your {{ site.data.var.ee }} sites ## Get Fastly credentials {#cloud-fastly-creds} @@ -36,19 +36,19 @@ Use the following methods to find and save the Fastly service ID and API token f {:.procedure} To view your Fastly credentials: -- IaaS-mounted shared directory—On Pro projects, use SSH to connect to your server and get the Fastly credentials from the `/mnt/shared/fastly_tokens.txt` file. +- IaaS-mounted shared directory—On Pro projects, use SSH to connect to your server and get the Fastly credentials from the `/mnt/shared/fastly_tokens.txt` file. -- Local workspace—From the command line, use the Magento Cloud CLI to [list and review]({{ page.baseurl }}/cloud/before/before-setup-env-2_clone.html) Fastly environment variables. +- Local workspace—From the command line, use the Magento Cloud CLI to [list and review]({{ page.baseurl }}/cloud/before/before-setup-env-2_clone.html) Fastly environment variables. ```bash magento-cloud variable:get -e ``` -- Project Web UI—Check the following environment variables in the *[Environment configuration variables]({{ page.baseurl }}/cloud/project/projects.html#environment-configuration-variables)* section. +- Project Web UI—Check the following environment variables in the *[Environment configuration variables]({{ page.baseurl }}/cloud/project/projects.html#environment-configuration-variables)* section. - - `CONFIG__DEFAULT__SYSTEM__FULL_PAGE_CACHE__FASTLY__FASTLY_API_TOKEN` + - `CONFIG__DEFAULT__SYSTEM__FULL_PAGE_CACHE__FASTLY__FASTLY_API_TOKEN` - - `CONFIG__DEFAULT__SYSTEM__FULL_PAGE_CACHE__FASTLY__FASTLY_SERVICE_ID` + - `CONFIG__DEFAULT__SYSTEM__FULL_PAGE_CACHE__FASTLY__FASTLY_SERVICE_ID` {: .bs-callout-info } If you cannot find the Fastly credentials for the Staging or Production environments, contact your Magento Technical Account Manager. @@ -57,9 +57,9 @@ If you cannot find the Fastly credentials for the Staging or Production environm **Prerequisites:** -- Latest version of the [Fastly CDN for Magento 2 module]({{ page.baseurl }}/cloud/cdn/cloud-fastly.html#fastly-cdn-module-for-magento-2) installed in the Staging and Production environments. See [Upgrade Fastly](#upgrade). +- Latest version of the [Fastly CDN for Magento 2 module]({{ page.baseurl }}/cloud/cdn/cloud-fastly.html#fastly-cdn-module-for-magento-2) installed in the Staging and Production environments. See [Upgrade Fastly](#upgrade). -- [Fastly credentials](#cloud-fastly-creds) for {{ site.data.var.ece }} Staging and Production environments +- [Fastly credentials](#cloud-fastly-creds) for {{ site.data.var.ece }} Staging and Production environments {:.procedure} To enable Fastly CDN caching in Staging and Production: @@ -127,9 +127,9 @@ Before adding [custom](#custom-configuration) or advanced configuration settings Configure the following features as needed: -- [Configure backends and Origin shielding](#backend) -- [Customize response pages]({{ page.baseurl }}/cloud/cdn/cloud-fastly-custom-response.html) -- [Enable additional Fastly configuration options](https://github.com/fastly/fastly-magento2/blob/master/Documentation/CONFIGURATION.md#further-configuration-options) +- [Configure backends and Origin shielding](#backend) +- [Customize response pages]({{ page.baseurl }}/cloud/cdn/cloud-fastly-custom-response.html) +- [Enable additional Fastly configuration options](https://github.com/fastly/fastly-magento2/blob/master/Documentation/CONFIGURATION.md#further-configuration-options) ### Configure backends and Origin shielding {#backend} @@ -156,23 +156,23 @@ To review the backend settings configuration: The following list shows which Fastly shield locations to use based an AWS region: - - ap-east-1 => hongkong-hk - - ap-northeast-1 => tyo-tokyo-jp, hnd-tokyo-jp - - ap-northeast-2 => tyo-tokyo-jp, hnd-tokyo-jp - - ap-southeast-1 => singapore-sg - - ap-southeast-2 => sydney-au - - ap-south-1 => singapore-sg - - ca-central-1 => yul-montreal-ca, iad-va-us, dca-dc-us, bwi-va-us - - eu-central-1 => frankfurt-de, hhn-frankfurt-de - - eu-north-1 => stockholm-bma - - eu-west-1 => london-uk, london_city-uk - - eu-west-2 => london-uk, london_city-uk - - eu-west-3 => cdg-par-fr - - sa-east-1 => gru-br-sa - - us-east-1 => iad-va-us, dca-dc-us, bwi-va-us - - us-east-2 => iad-va-us, dca-dc-us, bwi-va-us - - us-west-1 => sjc-ca-us, pao-ca-us - - us-west-2 => sea-wa-us + - ap-east-1 => hongkong-hk + - ap-northeast-1 => tyo-tokyo-jp, hnd-tokyo-jp + - ap-northeast-2 => tyo-tokyo-jp, hnd-tokyo-jp + - ap-southeast-1 => singapore-sg + - ap-southeast-2 => sydney-au + - ap-south-1 => singapore-sg + - ca-central-1 => yul-montreal-ca, iad-va-us, dca-dc-us, bwi-va-us + - eu-central-1 => frankfurt-de, hhn-frankfurt-de + - eu-north-1 => stockholm-bma + - eu-west-1 => london-uk, london_city-uk + - eu-west-2 => london-uk, london_city-uk + - eu-west-3 => cdg-par-fr + - sa-east-1 => gru-br-sa + - us-east-1 => iad-va-us, dca-dc-us, bwi-va-us + - us-east-2 => iad-va-us, dca-dc-us, bwi-va-us + - us-west-1 => sjc-ca-us, pao-ca-us + - us-west-2 => sea-wa-us 1. Modify the timeout values (in microseconds) for the connection to the shield, time between bytes, and time for the first byte. We recommend keeping the default timeout settings. @@ -190,10 +190,10 @@ Fastly provides multiple types of purge options on your Magento Cache Management The options include: -- **Purge category**: Purges product category content (not product content) when you add and update a single product. You may want to keep this disabled and enable purge product, which purges products and product categories. -- **Purge product**: Purges all product and product category content when saving a single modification to a product. Enabling purge product can be helpful to immediately get updates to customers when changing a price, adding a product option, and when product inventory is out-of-stock. -- **Purge CMS page**: Purges page content when updating and adding pages to the Magento CMS. For example, you may want to purge when updating your Terms and Conditions or Return policy. If you rarely make these changes, you could disable automatic purging. -- **Soft purge**: Sets changed content to stale and purges according to the stale timing. In combination with the stale timings your customers will be served stale content very fast while Fastly is updating the content in the background. +- **Purge category**: Purges product category content (not product content) when you add and update a single product. You may want to keep this disabled and enable purge product, which purges products and product categories. +- **Purge product**: Purges all product and product category content when saving a single modification to a product. Enabling purge product can be helpful to immediately get updates to customers when changing a price, adding a product option, and when product inventory is out-of-stock. +- **Purge CMS page**: Purges page content when updating and adding pages to the Magento CMS. For example, you may want to purge when updating your Terms and Conditions or Return policy. If you rarely make these changes, you could disable automatic purging. +- **Soft purge**: Sets changed content to stale and purges according to the stale timing. In combination with the stale timings your customers will be served stale content very fast while Fastly is updating the content in the background. ![Configure purge options]({{ site.baseurl }}/common/images/cloud_fastly-purgeoptions.png){:width="650px"} @@ -220,7 +220,7 @@ Fastly sets a 180 second-timeout for HTTPS requests to the Magento Admin, so you 1. In the *Fastly Configuration* section, expand **Advanced**. -1. Set the **Admin path timeout** value in seconds. This value cannot be more than one hour (3600 seconds). +1. Set the **Admin path timeout** value in seconds. This value cannot be more than 10 minutes (600 seconds). 1. Click **Save Config** at the top of the page. @@ -252,9 +252,9 @@ Fastly also provides a series of [geolocation-related VCL features](https://docs To enable Fastly caching on your Staging and Production sites, you need make the following changes to the DNS configuration for your site: -- Set all necessary redirects, especially if you are migrating from an existing site -- Set the zone’s root resource record to address the hostname -- Lower the value for the Time-to-Live (TTL) to refresh DNS information to point customers to the correct Production store +- Set all necessary redirects, especially if you are migrating from an existing site +- Set the zone’s root resource record to address the hostname +- Lower the value for the Time-to-Live (TTL) to refresh DNS information to point customers to the correct Production store We recommend a significantly lower TTL value when switching the DNS record. This value tells the DNS how long to cache the DNS record. When shortened, it refreshes the DNS faster. For example, you can change the TTL value from 3 days to 10 minutes when you are testing your site. Be advised that shortening the TTL value adds load to the web server. @@ -263,10 +263,10 @@ After checking with your registrar about where to change your DNS settings, add CNAME records cannot be set for apex domains, also referred to as a naked or base domains. You must use `A` records for this. `A` records map a domain name to the following Fastly IP addresses: -- `151.101.1.124` -- `151.101.65.124` -- `151.101.129.124` -- `151.101.193.124` +- `151.101.1.124` +- `151.101.65.124` +- `151.101.129.124` +- `151.101.193.124` Refer to [Go live checklist]({{ page.baseurl }}/cloud/live/go-live-checklist.html) for more information. diff --git a/guides/v2.2/cloud/cdn/fastly-image-optimization.md b/guides/v2.2/cloud/cdn/fastly-image-optimization.md index ef3eb141028..2e308cb3e9a 100644 --- a/guides/v2.2/cloud/cdn/fastly-image-optimization.md +++ b/guides/v2.2/cloud/cdn/fastly-image-optimization.md @@ -9,10 +9,10 @@ functional_areas: Fastly image optimization (Fastly IO) provides real-time image manipulation and optimization to speed up image delivery and simplify maintenance of image source sets for responsive web applications. Once configured Fastly IO provides the following image optimization features: -- Force lossy conversion -- Deep image optimization -- Adaptive pixel ratios -- Support for common image formats: PNG, JPEG, and GIF +- Force lossy conversion +- Deep image optimization +- Adaptive pixel ratios +- Support for common image formats: PNG, JPEG, and GIF You must set up your Fastly service and configure Origin shielding before you can enable and configure the Fastly IO option. @@ -24,8 +24,8 @@ You can enable Fastly image optimization (Fastly IO) from the Admin panel by upl **Prerequisites** -- Install or upgrade to Fastly module version 1.2.62 or later -- [Configure Fastly Origin shield and backend]({{ page.baseurl }}/cloud/cdn/configure-fastly.html#backend) +- Install or upgrade to Fastly module version 1.2.62 or later +- [Configure Fastly Origin shield and backend]({{ page.baseurl }}/cloud/cdn/configure-fastly.html#backend) {:.procedure} To enable Fastly IO: @@ -49,9 +49,9 @@ To enable Fastly IO: You can review and update the default IO configuration settings for image optimization as needed. For example, you might want to change WebP and JPEG quality levels for lossy formats or change the format for serving JPEG images to *Progressive* or *Baseline*. Also, you can use Fastly IO for more granular image optimization features, such as: -- Force lossy conversion -- Deep image optimization -- Adaptive pixel ratios +- Force lossy conversion +- Deep image optimization +- Adaptive pixel ratios {:.procedure} To update Fastly IO: @@ -94,8 +94,8 @@ To update Fastly IO: ![Enable Fastly IO adaptive pixel ratios]({{ site.baseurl }}/common/images/cloud_fastly-io-config-adaptive-pixel.png){:width="650px"} - - In the _Enable adaptive device pixel ratios_ field, select **Yes**. - - In the _Device pixel ratios_ field, accept the default setting, or click the **System Input** check box to remove the setting. Then, select the desired ratio. A higher Device Pixel Ratio setting delivers larger images. + - In the _Enable adaptive device pixel ratios_ field, select **Yes**. + - In the _Device pixel ratios_ field, accept the default setting, or click the **System Input** check box to remove the setting. Then, select the desired ratio. A higher Device Pixel Ratio setting delivers larger images. 1. Click **Save Configuration**. diff --git a/guides/v2.2/cloud/cdn/fastly-vcl-badreferer.md b/guides/v2.2/cloud/cdn/fastly-vcl-badreferer.md index 52aa5d19950..15d882663d0 100644 --- a/guides/v2.2/cloud/cdn/fastly-vcl-badreferer.md +++ b/guides/v2.2/cloud/cdn/fastly-vcl-badreferer.md @@ -16,11 +16,11 @@ We recommend adding custom VCL configurations to a Staging environment where you **Prerequisites** -- Configure the {{ site.var.data.ece }} environment for Fastly services. See [Set up Fastly]({{ page.baseurl }}/cloud/cdn/configure-fastly.html). +- Configure the {{ site.var.data.ece }} environment for Fastly services. See [Set up Fastly]({{ page.baseurl }}/cloud/cdn/configure-fastly.html). -- Get Admin credentials for your {{ site.data.var.ece }} environment. +- Get Admin credentials for your {{ site.data.var.ece }} environment. -- Review your site logs for fake referral URLs and make a list of domains to block. +- Review your site logs for fake referral URLs and make a list of domains to block. ## Create a referrer block list @@ -34,7 +34,7 @@ Edge Dictionaries create key-value pairs accessible to VCL functions during VCL 1. Create the Dictionary container: - - Click **Add container**. + - Click **Add container**. - On the *Container* page, enter a **Dictionary name**—`referrer_blocklist`. @@ -74,15 +74,15 @@ The following custom VCL snippet code (JSON format) checks incoming requests and Review the example code and change values as needed: -- `name` — Name for the VCL snippet. For this example, we used `block_bad_referrer`. +- `name` — Name for the VCL snippet. For this example, we used `block_bad_referrer`. -- `dynamic` — Value 0 indicates a [regular snippet](https://docs.fastly.com/guides/vcl-snippets/using-regular-vcl-snippets) to upload to the versioned VCL for the Fastly configuration. +- `dynamic` — Value 0 indicates a [regular snippet](https://docs.fastly.com/guides/vcl-snippets/using-regular-vcl-snippets) to upload to the versioned VCL for the Fastly configuration. -- `priority` — Determines when the VCL snippet runs. The priority is `5` to run this snippet code before any of the default Magento VCL snippets (`magentomodule_*`) assigned a priority of 50. +- `priority` — Determines when the VCL snippet runs. The priority is `5` to run this snippet code before any of the default Magento VCL snippets (`magentomodule_*`) assigned a priority of 50. -- `type` — Specifies a location to insert the snippet in the VCL version. In this example, the VCL snippet is a `recv` snippet. When the snippet is inserted into the VCL version, it is added to the `vcl_recv` subroutine, below the default Fastly VCL code and above any objects. +- `type` — Specifies a location to insert the snippet in the VCL version. In this example, the VCL snippet is a `recv` snippet. When the snippet is inserted into the VCL version, it is added to the `vcl_recv` subroutine, below the default Fastly VCL code and above any objects. -- `content` — The snippet of VCL code to run in one line, without line breaks. +- `content` — The snippet of VCL code to run in one line, without line breaks. In this example, the VCL code logic captures the host of a referrer website into a header, and then compares the host name to the list of URLs in the `referrer_blocklist` dictionary. @@ -104,13 +104,13 @@ Add the custom VCL snippet to your Fastly service configuration from the Magento 1. Add the VCL snippet values: - - **Name** — `block_bad_referrer` + - **Name** — `block_bad_referrer` - - **Type** — `recv` + - **Type** — `recv` - - **Priority** — `5` + - **Priority** — `5` - - **VCL** snippet content — + - **VCL** snippet content — ``` set req.http.Referer-Host = regsub(req.http.Referer, diff --git a/guides/v2.2/cloud/cdn/fastly-vcl-blacklist.md b/guides/v2.2/cloud/cdn/fastly-vcl-blacklist.md index 7c3d46d848e..82e10f2f6ee 100644 --- a/guides/v2.2/cloud/cdn/fastly-vcl-blacklist.md +++ b/guides/v2.2/cloud/cdn/fastly-vcl-blacklist.md @@ -13,8 +13,8 @@ You may want to create a blacklist of IPs to block from accessing your site. You You must have the following information to complete this VCL code snippet: -* List of client IPs to blacklist, or block access -* Account access and URL to the Magento Admin for the Staging or Production environment +* List of client IPs to blacklist, or block access +* Account access and URL to the Magento Admin for the Staging or Production environment {:.bs-callout .bs-callout-info} This information is just the code portion for setting up your VCL. Use this information with [Custom Fastly VCL snippets]({{ page.baseurl }}/cloud/cdn/cloud-vcl-custom-snippets.html). @@ -26,11 +26,11 @@ Edge ACLs create IP lists for managing access for your VCL snippet. For this exa If you want to allow access to Staging and Production, create the Edge ACL in both Magento Admins with the same name. You can have different IPs in the two environments. The VCL snippet code will apply to both environments. 1. Log in to the Magento Admin. -2. Navigate to **Stores** > **Settings** > **Configuration** > **Advanced** > **System** > **Fastly Configuration**. -3. Expand the **Edge ACL** section. -4. Click **Add ACL** to create a list. For this example, name the list "blocklist". -5. Enter IP values in the list. Any client IPs added to this list will be blocked access from the site. -6. Optionally, select the Negated checkbox if needed. +1. Navigate to **Stores** > **Settings** > **Configuration** > **Advanced** > **System** > **Fastly Configuration**. +1. Expand the **Edge ACL** section. +1. Click **Add ACL** to create a list. For this example, name the list "blocklist". +1. Enter IP values in the list. Any client IPs added to this list will be blocked access from the site. +1. Optionally, select the Negated checkbox if needed. You will use the Edge ACL by name in your VCL snippet code. @@ -52,10 +52,10 @@ Create an `blocklist.json` file with the following JSON content: Review the following values for the code to determine if you need to make changes: -* `name`: Name for the VCL snippet. For this example, we used the name `blocklist`. -* `priority`: Determines the order VCL snippets call. You want to set the priority to 5 to immediately run and check for blacklisted, blocked IPs. This priority runs the snippet immediately and before any of the uploaded and default Magento VCL snippets (magentomodule) that have a priority of 50. -* `type`: For this VCL, we use `recv`, which places it in the vcl_recv subroutine by below the boilerplate VCL and above any objects. -* `content`: The snippet of VCL code to run, which verifies the client IP. If the IP is in the Edge ACL, it is blocked from access with a 403 Forbidden error for the entire website. All other client IPs are allowed access. +* `name`: Name for the VCL snippet. For this example, we used the name `blocklist`. +* `priority`: Determines the order VCL snippets call. You want to set the priority to 5 to immediately run and check for blacklisted, blocked IPs. This priority runs the snippet immediately and before any of the uploaded and default Magento VCL snippets (magentomodule) that have a priority of 50. +* `type`: For this VCL, we use `recv`, which places it in the vcl_recv subroutine by below the boilerplate VCL and above any objects. +* `content`: The snippet of VCL code to run, which verifies the client IP. If the IP is in the Edge ACL, it is blocked from access with a 403 Forbidden error for the entire website. All other client IPs are allowed access. {:.bs-callout .bs-callout-info} The default VCL snippets you uploaded included a prepended name of `magentomodule_` with a priority of 50. For your custom VCL snippets, **do not use the `magentomodule_` name**. Also consider the priority of your custom snippets if they should override the default snippets. @@ -63,4 +63,3 @@ The default VCL snippets you uploaded included a prepended name of `magentomodul ## Finish adding the VCL {#complete} When saved, continue creating other VCLs. You can then run the bash script, then validate and activate your VCLs to complete the process. For complete steps, see [Custom Fastly VCL snippets]({{ page.baseurl }}/cloud/cdn/cloud-vcl-custom-snippets.html). - diff --git a/guides/v2.2/cloud/cdn/fastly-vcl-whitelist.md b/guides/v2.2/cloud/cdn/fastly-vcl-whitelist.md index ab3c6610353..f4203974aca 100644 --- a/guides/v2.2/cloud/cdn/fastly-vcl-whitelist.md +++ b/guides/v2.2/cloud/cdn/fastly-vcl-whitelist.md @@ -13,11 +13,11 @@ The following example shows how to use a custom VCL snippet with a [Fastly Acces **Prerequisites** -- Configure the {{ site.var.data.ece }} environment for Fastly services. See [Set up Fastly]({{ page.baseurl }}/cloud/cdn/configure-fastly.html). +- Configure the {{ site.var.data.ece }} environment for Fastly services. See [Set up Fastly]({{ page.baseurl }}/cloud/cdn/configure-fastly.html). -- Get Magento Admin UI credentials for your {{ site.data.var.ece }} environment. +- Get Magento Admin UI credentials for your {{ site.data.var.ece }} environment. -- List of client IP addresses allowed to access the Magento Admin UI. +- List of client IP addresses allowed to access the Magento Admin UI. ## Create Edge ACL for allowing client IPs {#edge-acl} @@ -31,7 +31,7 @@ Edge ACLs create IP address lists for managing access to your site. In this exam 1. Create the ACL container: - - Click **Add ACL**. + - Click **Add ACL**. - On the *ACL Container* page, enter a **ACL name**—`allowlist`. @@ -69,13 +69,13 @@ Create an `allowlist.json` file with the following JSON content: Review the following values for the code to determine if you need to make changes: -- `name` — Name for the VCL snippet. For this example, `allowlist`. +- `name` — Name for the VCL snippet. For this example, `allowlist`. -- `priority` — Determines when the VCL snippet runs. The priority is `5` to immediately run and check whether a Magento Admin UI requests are coming from an allowed IP address. The snippet runs before any of the default Magento VCL snippets (`magentomodule_*`) assigned a priority of 50. +- `priority` — Determines when the VCL snippet runs. The priority is `5` to immediately run and check whether a Magento Admin UI requests are coming from an allowed IP address. The snippet runs before any of the default Magento VCL snippets (`magentomodule_*`) assigned a priority of 50. -- `type` — Specifies Specifies a location to insert the snippet in the versioned VCL code. This VCL is a `recv` snippet type which adds the snippet code to the `vcl_recv` subroutine below the default Fastly VCL code and above any objects. +- `type` — Specifies Specifies a location to insert the snippet in the versioned VCL code. This VCL is a `recv` snippet type which adds the snippet code to the `vcl_recv` subroutine below the default Fastly VCL code and above any objects. -- `content` — The snippet of VCL code to run. In this example, the code filters requests to the Magento Admin UI and allows access if the client IP address matches an address in the `allowlist` ACL. If the address doesn't match the request is blocked with a `403 Forbidden` error. +- `content` — The snippet of VCL code to run. In this example, the code filters requests to the Magento Admin UI and allows access if the client IP address matches an address in the `allowlist` ACL. If the address doesn't match the request is blocked with a `403 Forbidden` error. If the URL for your Magento Admin UI was changed, replace the sample value `/admin` with the URL for your environment. For example, `/company-admin`. diff --git a/guides/v2.2/cloud/cdn/fastly-vcl-wordpress.md b/guides/v2.2/cloud/cdn/fastly-vcl-wordpress.md index 2432a806368..b3547ebab9e 100644 --- a/guides/v2.2/cloud/cdn/fastly-vcl-wordpress.md +++ b/guides/v2.2/cloud/cdn/fastly-vcl-wordpress.md @@ -16,17 +16,17 @@ We recommend adding custom VCL configurations to a Staging environment where you **Prerequisites** -- Configure the {{ site.var.data.ece }} environment for Fastly services. See [Set up Fastly]({{ page.baseurl }}/cloud/cdn/configure-fastly.html). +- Configure the {{ site.var.data.ece }} environment for Fastly services. See [Set up Fastly]({{ page.baseurl }}/cloud/cdn/configure-fastly.html). -- Get credentials to access both the Fastly API and the Magento Admin UI for your {{ site.data.var.ece }} environment. +- Get credentials to access both the Fastly API and the Magento Admin UI for your {{ site.data.var.ece }} environment. -- Identify the URL paths to redirect to the WordPress backend. +- Identify the URL paths to redirect to the WordPress backend. -- Submit a support ticket requesting the following Fastly service configuration changes required to use the custom VCL snippet for the WordPress redirects: +- Submit a support ticket requesting the following Fastly service configuration changes required to use the custom VCL snippet for the WordPress redirects: - - Add the WordPress host to the Fastly backend configuration. Include the domain name for the WordPress host. + - Add the WordPress host to the Fastly backend configuration. Include the domain name for the WordPress host. - - Attach the following request condition to the Wordpress backend. + - Attach the following request condition to the Wordpress backend. ```json req.http.X-WP == “1” @@ -46,7 +46,7 @@ Edge Dictionaries create key-value pairs accessible to VCL functions during VCL 1. Create the Dictionary container: - - Click **Add container**. + - Click **Add container**. - On the *Container* page, enter a **Dictionary name**—`wordpress_urls`. @@ -56,15 +56,15 @@ Edge Dictionaries create key-value pairs accessible to VCL functions during VCL 1. Add the list of URLs for redirection to the the `wordpress_urls` dictionary: - - Click the Settings icon for the `wordpress_urls` dictionary. + - Click the Settings icon for the `wordpress_urls` dictionary. ![Configure Edge Dictionary] - - Add and save key-value pairs in the new dictionary. For this example, each **Key** is a URL path to redirect to the WordPress backend, and the **Value** is 1. + - Add and save key-value pairs in the new dictionary. For this example, each **Key** is a URL path to redirect to the WordPress backend, and the **Value** is 1. ![Add Edge Dictionary Items] - - Click **Cancel** to return to the system configuration page. + - Click **Cancel** to return to the system configuration page. 1. Click **Save Config**. @@ -88,15 +88,15 @@ The following custom VCL snippet code (JSON format) evaluates incoming requests Review the example code and change values as needed: -- `name` — Name for the VCL snippet. For this example, we used `wordpress_redirect`. +- `name` — Name for the VCL snippet. For this example, we used `wordpress_redirect`. -- `dynamic` — Value 0 indicates a [regular snippet](https://docs.fastly.com/guides/vcl-snippets/using-regular-vcl-snippets) to upload to the versioned VCL for the Fastly configuration. +- `dynamic` — Value 0 indicates a [regular snippet](https://docs.fastly.com/guides/vcl-snippets/using-regular-vcl-snippets) to upload to the versioned VCL for the Fastly configuration. -- `priority` — Determines when the VCL snippet runs. The priority is `5` to run this snippet code runs before any of the default Magento VCL snippets (`magentomodule_*`) assigned a priority of 50. +- `priority` — Determines when the VCL snippet runs. The priority is `5` to run this snippet code runs before any of the default Magento VCL snippets (`magentomodule_*`) assigned a priority of 50. -- `type` — Specifies a location to insert the snippet in the versioned VCL code. This VCL is a `recv` snippet type which adds the snippet code to the `vcl_recv` subroutine below the default Fastly VCL code and above any objects. +- `type` — Specifies a location to insert the snippet in the versioned VCL code. This VCL is a `recv` snippet type which adds the snippet code to the `vcl_recv` subroutine below the default Fastly VCL code and above any objects. -- `content` — The snippet of VCL code to run in one line, without line breaks. +- `content` — The snippet of VCL code to run in one line, without line breaks. In this example, the VCL code logic extracts the first segment of the path `/mypath/someotherpath`, and then compares the path (`mypath`) to the paths in the `wordpress_urls` dictionary. Requests with matching paths are redirected to the WordPress backend. See the [Fastly VCL reference](https://docs.fastly.com/vcl/reference/) for information about creating Fastly VCL code snippets. @@ -114,13 +114,13 @@ Add the custom VCL snippet to your Fastly service configuration from the Admin U 1. Add the VCL snippet values: - - **Name** — `wordpress_redirect` + - **Name** — `wordpress_redirect` - - **Type** — `recv` + - **Type** — `recv` - - **Priority** — `5` + - **Priority** — `5` - - **VCL** snippet content: + - **VCL** snippet content: ``` if ( req.url.path ~ "^/?([^/?]+)") diff --git a/guides/v2.2/cloud/composer-packages/patch-notes.md b/guides/v2.2/cloud/composer-packages/patch-notes.md index 8a67de38d6d..3bf95aabf7a 100644 --- a/guides/v2.2/cloud/composer-packages/patch-notes.md +++ b/guides/v2.2/cloud/composer-packages/patch-notes.md @@ -11,10 +11,10 @@ The release information in this section relates to [Composer packages]({{ site.b Use this section to learn about updates to the following Composer packages: -- `vendor/magento/magento-cloud-metapackage` -- [`vendor/magento/ece-patches`]({{ site.baseurl }}/guides/v2.2/cloud/composer-packages/ece-patches.html) -- [`vendor/magento/ece-tools`]({{ site.baseurl }}/guides/v2.2/cloud/release-notes/cloud-tools.html) -- `vendor/magento/product-enterprise-edition` +- `vendor/magento/magento-cloud-metapackage` +- [`vendor/magento/ece-patches`]({{ site.baseurl }}/guides/v2.2/cloud/composer-packages/ece-patches.html) +- [`vendor/magento/ece-tools`]({{ site.baseurl }}/guides/v2.2/cloud/release-notes/cloud-tools.html) +- `vendor/magento/product-enterprise-edition` {:.bs-callout .bs-callout-info} -You must [update these packages]({{ site.baseurl }}/guides/v2.2/cloud/project/project-patch.html) to get new features and fixes. \ No newline at end of file +You must [update these packages]({{ site.baseurl }}/guides/v2.2/cloud/project/project-patch.html) to get new features and fixes. diff --git a/guides/v2.2/cloud/configure/configuration-overview.md b/guides/v2.2/cloud/configure/configuration-overview.md index 37956704c70..a5b103f7749 100644 --- a/guides/v2.2/cloud/configure/configuration-overview.md +++ b/guides/v2.2/cloud/configure/configuration-overview.md @@ -18,31 +18,31 @@ You can set up [multiple websites and stores]({{ page.baseurl }}/cloud/project/p The following options, tools, and features can be set up and configured in your store: -* [Fastly]({{ page.baseurl }}/cloud/cdn/configure-fastly.html) for caching and CDN in Staging and Production environments -* [PayPal On-Boarding tool]({{ page.baseurl }}/cloud/live/paypal-onboarding.html) provides PayPal payment gateway checkout by connecting to your PayPal merchant account -* [Magento B2B module]({{ site.baseurl }}/guides/v2.2/cloud/configure/setup-b2b.html) for Business to Business features, Pro plan only -* [cron jobs]({{ page.baseurl }}/cloud/configure/setup-cron-jobs.html) details how to create and configure Magento cron jobs in all environments -* [Multiple websites or stores]({{ page.baseurl }}/cloud/project/project-multi-sites.html) details how to create and configure multi-sites for your store, for example multiple locales including English, French, and Spanish -* [Install, manage, and upgrade modules]({{ page.baseurl }}/cloud/howtos/install-components.html) -* [Install a theme]({{ page.baseurl }}/cloud/howtos/custom-theme.html) for your site and store -* Install Magento security extensions including [Google reCAPTCHA]({{ page.baseurl }}/security/google-recaptcha.html) and [Two-Factor Authentication]({{ page.baseurl }}/security/two-factor-authentication.html) to enhance secure access to the Magento Admin UI and storefront +* [Fastly]({{ page.baseurl }}/cloud/cdn/configure-fastly.html) for caching and CDN in Staging and Production environments +* [PayPal On-Boarding tool]({{ page.baseurl }}/cloud/live/paypal-onboarding.html) provides PayPal payment gateway checkout by connecting to your PayPal merchant account +* [Magento B2B module]({{ site.baseurl }}/guides/v2.2/cloud/configure/setup-b2b.html) for Business to Business features, Pro plan only +* [cron jobs]({{ page.baseurl }}/cloud/configure/setup-cron-jobs.html) details how to create and configure Magento cron jobs in all environments +* [Multiple websites or stores]({{ page.baseurl }}/cloud/project/project-multi-sites.html) details how to create and configure multi-sites for your store, for example multiple locales including English, French, and Spanish +* [Install, manage, and upgrade modules]({{ page.baseurl }}/cloud/howtos/install-components.html) +* [Install a theme]({{ page.baseurl }}/cloud/howtos/custom-theme.html) for your site and store +* Install Magento security extensions including [Google reCAPTCHA]({{ page.baseurl }}/security/google-recaptcha.html) and [Two-Factor Authentication]({{ page.baseurl }}/security/two-factor-authentication.html) to enhance secure access to the Magento Admin UI and storefront ## Configure your deploy: build hooks, services, and routes {#deploy} After fully configuring your store, you should configure your deployment. This includes specific files to manage builds, deployments, services, and routes: -* [.magento.app.yaml]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html) configures how the Magento application is built and deployed including services, hooks, cron jobs, and more -* [routes.yaml]({{ page.baseurl }}/cloud/project/project-conf-files_routes.html) configures how Magento processes an incoming URL for your Integration environment -* [services.yaml]({{ page.baseurl }}/cloud/project/project-conf-files_services.html) configures the services you use in your stores and sites including name, version, and allocated disk space +* [.magento.app.yaml]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html) configures how the Magento application is built and deployed including services, hooks, cron jobs, and more +* [routes.yaml]({{ page.baseurl }}/cloud/project/project-conf-files_routes.html) configures how Magento processes an incoming URL for your Integration environment +* [services.yaml]({{ page.baseurl }}/cloud/project/project-conf-files_services.html) configures the services you use in your stores and sites including name, version, and allocated disk space ## Configure integrations {#integrations} We also provide integrations with: -* [Blackfire Profiler]({{ page.baseurl }}/cloud/project/project-integrate-blackfire.html) configuration for tracking and investigating issues for bottleneck issues in processes, method calls, queries, loads, and so on -* [New Relic]({{ page.baseurl }}/cloud/project/new-relic.html) configuration for application and performance analysis -* [Fastly]({{ page.baseurl }}/cloud/basic-information/cloud-fastly.html) configuration for CDN and caching -* [GitHub]({{ page.baseurl }}/cloud/integrations/github-integration.html) for managing your Git branches and code +* [Blackfire Profiler]({{ page.baseurl }}/cloud/project/project-integrate-blackfire.html) configuration for tracking and investigating issues for bottleneck issues in processes, method calls, queries, loads, and so on +* [New Relic]({{ page.baseurl }}/cloud/project/new-relic.html) configuration for application and performance analysis +* [Fastly]({{ page.baseurl }}/cloud/basic-information/cloud-fastly.html) configuration for CDN and caching +* [GitHub]({{ page.baseurl }}/cloud/integrations/github-integration.html) for managing your Git branches and code ## Configuration management {#config-mgmt} diff --git a/guides/v2.2/cloud/configure/configure-best-practices.md b/guides/v2.2/cloud/configure/configure-best-practices.md index d3cedab0b8c..6be16ddaeeb 100644 --- a/guides/v2.2/cloud/configure/configure-best-practices.md +++ b/guides/v2.2/cloud/configure/configure-best-practices.md @@ -24,10 +24,10 @@ _Promotions_ provide discounts, one time offers, coupons, first time buyer incen The following are tips to help create, update, and manage promotions and campaigns: -* A promotion can be part of a campaign. A campaign cannot be a part of a promotion. You can have lists of promotions as price rules to use multiples times, with multiple campaigns. -* When you create a promotion, it will always create an initial campaign that is inactive. It will have a start date but not an end date. You can ignore this initial campaign. You can Schedule a New Update with the correct campaign schedule and make it active. -* A campaign has a start and end date, not a promotion. The Scheduler that appears when you create a promotion does not configure the start and end dates for the promotion. It allows you so schedule your campaign this promotion is associated with while you are on the promotion’s configuration page. -* You cannot directly edit in Staged Content. If you need to edit settings and options in the campaign, you will need to edit the original or a replica and push to overwrite in Staged Content. For example, if you do not an end date for a campaign, you must edit the original and push to update. +* A promotion can be part of a campaign. A campaign cannot be a part of a promotion. You can have lists of promotions as price rules to use multiples times, with multiple campaigns. +* When you create a promotion, it will always create an initial campaign that is inactive. It will have a start date but not an end date. You can ignore this initial campaign. You can Schedule a New Update with the correct campaign schedule and make it active. +* A campaign has a start and end date, not a promotion. The Scheduler that appears when you create a promotion does not configure the start and end dates for the promotion. It allows you so schedule your campaign this promotion is associated with while you are on the promotion’s configuration page. +* You cannot directly edit in Staged Content. If you need to edit settings and options in the campaign, you will need to edit the original or a replica and push to overwrite in Staged Content. For example, if you do not an end date for a campaign, you must edit the original and push to update. ## Advanced Pricing and Staged Content {#adv-pricing} @@ -38,13 +38,13 @@ Typically, you can set [Advanced Pricing](http://docs.magento.com/m2/ee/user_gui To edit Advanced Pricing and update Content Staging: 1. Log into the Magento Admin. -2. Navigate to **Products** > **Catalog** and select a product and edit. -3. In the Pricing tab, select **Advanced Pricing**. Edit the price and Save changes. -4. At the top of the page, click **Schedule New Update**. -5. Create a new promotion for the product. -6. Complete the promotion information. For the Scheduler, enter a begin and end date and time. -6. Save the promotion. An inactive initial campaign is created. -7. You can Preview to review the special price, promotion name, regular price, and the scheduled date range for the campaign. +1. Navigate to **Products** > **Catalog** and select a product and edit. +1. In the Pricing tab, select **Advanced Pricing**. Edit the price and Save changes. +1. At the top of the page, click **Schedule New Update**. +1. Create a new promotion for the product. +1. Complete the promotion information. For the Scheduler, enter a begin and end date and time. +1. Save the promotion. An inactive initial campaign is created. +1. You can Preview to review the special price, promotion name, regular price, and the scheduled date range for the campaign. For additional steps, you can continue with instructions with [Schedule Changes for Catalog Price Rules](http://docs.magento.com/m2/ee/user_guide/marketing/price-rule-catalog-scheduled-changes.html). Click **Next** to walk through the steps. @@ -56,9 +56,9 @@ To create a Price Rule, see our [Magento 2 User Guide](https://docs.magento.com/ The following provides an example of creating a Price Rule for a First Order Only discount. For this discount, you would want to: -* Create a price rule with a [customer segment](http://docs.magento.com/m2/ee/user_guide/marketing/customer-segment-price-rule.html) with a condition: Total Number of Orders less than 1 -* Add this customer segment as a condition to the cart rule -* Optional - Add conditions and rules to apply the discounts to specific SKUs or categories of products for focused purchases +* Create a price rule with a [customer segment](http://docs.magento.com/m2/ee/user_guide/marketing/customer-segment-price-rule.html) with a condition: Total Number of Orders less than 1 +* Add this customer segment as a condition to the cart rule +* Optional - Add conditions and rules to apply the discounts to specific SKUs or categories of products for focused purchases This ensures net-new customers or existing customers who have not made a purchase receive the discount only on their very first order. You could create banners and send email promotions for the first time purchase discount. @@ -74,14 +74,14 @@ You can further create _store views_ for different languages, layouts, and desig The following are examples to better explain: -* Single website with one store and two views for English and Spanish locale. All article data, customers, checkout, and shopping cart are shared. +* Single website with one store and two views for English and Spanish locale. All article data, customers, checkout, and shopping cart are shared. - ![Store example 1]({{ site.baseurl }}/common/images/cloud_example-store1.png) + ![Store example 1]({{ site.baseurl }}/common/images/cloud_example-store1.png) -* Single website with Store A for women's clothing with two views for English and Spanish, and Store B for children's clothing with a single store view in English. All article data, customers, checkout, and shopping cart are shared. The stores may have different domains and themes. +* Single website with Store A for women's clothing with two views for English and Spanish, and Store B for children's clothing with a single store view in English. All article data, customers, checkout, and shopping cart are shared. The stores may have different domains and themes. - ![Store example 2]({{ site.baseurl }}/common/images/cloud_example-store2.png) + ![Store example 2]({{ site.baseurl }}/common/images/cloud_example-store2.png) -* Two websites one for clothing and another for home decor with different catalogs and separate articles, customer data, and shopping cart. Each website could have multiple stores and views sharing articles, customer data, checkout, and shopping cart only within that website. +* Two websites one for clothing and another for home decor with different catalogs and separate articles, customer data, and shopping cart. Each website could have multiple stores and views sharing articles, customer data, checkout, and shopping cart only within that website. - ![Store example 3]({{ site.baseurl }}/common/images/cloud_example-store3.png) + ![Store example 3]({{ site.baseurl }}/common/images/cloud_example-store3.png) diff --git a/guides/v2.2/cloud/configure/import-url-rewrites.md b/guides/v2.2/cloud/configure/import-url-rewrites.md index 755a70d95cf..035c0fc8abb 100644 --- a/guides/v2.2/cloud/configure/import-url-rewrites.md +++ b/guides/v2.2/cloud/configure/import-url-rewrites.md @@ -82,8 +82,8 @@ To import URL Rewrites: 1. Select the **Behavior**. - - `Add/Update` — adds new URL rewrite and updates existing URL Rewrites - - `Delete` — removes existing URL rewrites + - `Add/Update` — adds new URL rewrite and updates existing URL Rewrites + - `Delete` — removes existing URL rewrites 1. Click **Import**. diff --git a/guides/v2.2/cloud/configure/setup-b2b.md b/guides/v2.2/cloud/configure/setup-b2b.md index dfe0c782368..69e6c587ab9 100644 --- a/guides/v2.2/cloud/configure/setup-b2b.md +++ b/guides/v2.2/cloud/configure/setup-b2b.md @@ -7,8 +7,8 @@ With the {{site.data.var.ece}} Pro subscription for v2.2 and later, you can inst For additional information on using and extending B2B, see the following guides: -* [Magento B2B Developer Guide]({{ site.baseurl }}/guides/v2.2/b2b/bk-b2b.html) -* [Magento B2B User Guide](http://docs.magento.com/m2/b2b/user_guide/getting-started.html) +* [Magento B2B Developer Guide]({{ site.baseurl }}/guides/v2.2/b2b/bk-b2b.html) +* [Magento B2B User Guide](http://docs.magento.com/m2/b2b/user_guide/getting-started.html) We provide these features as a module you can install and setup in {{site.data.var.ece}}. Installation of B2B in a Pro project require additional steps to add the module and update your Git branch. @@ -16,9 +16,9 @@ We provide these features as a module you can install and setup in {{site.data.v Prior to adding the B2B module, you should have the following: -* Upgraded to a {{site.data.var.ece}} 2.2.X on your environments -* A Git branch to add the new B2B module -* Have your Magento Authentication keys (public and private) available +* Upgraded to a {{site.data.var.ece}} 2.2.X on your environments +* A Git branch to add the new B2B module +* Have your Magento Authentication keys (public and private) available We provide B2B as a module for Magento. For new Pro projects, we highly recommend having {{site.data.var.ece}} fully deployed to Integration, Staging, and Production environments. For more information, see [First time deployment]({{ page.baseurl }}/cloud/setup/first-time-deploy.html). Adding a module as part of your initial deployment could cause issues. @@ -33,46 +33,51 @@ We recommend working in a branch to add the B2B module and features to your impl You need to add the module to `composer.json`. All extensions and modules must be added to this file. These instructions are specific to {{site.data.var.ece}}. For more information, you can also review the [installation instructions]({{ site.baseurl }}/extensions/b2b/) in the B2B guide. 1. Open a terminal application. -2. Change to your local development environment root directory. -3. Install the B2B module using composer. +1. Change to your local development environment root directory. +1. Install the B2B module using composer. - ```bash - composer require magento/extension-b2b - ``` + ```bash + composer require magento/extension-b2b + ``` - You may be prompted to enter your Magento Authentication keys (public and private). If copying and pasting your keys, do not introduce additional spaces. Spaces could cause the following error: + You may be prompted to enter your Magento Authentication keys (public and private). If copying and pasting your keys, do not introduce additional spaces. Spaces could cause the following error: - InvalidArgumentException - Could not find package magento/extension-b2b at any version for your minimum-stability (stable). Check the package spelling or your minimum-stability. + ```terminal + InvalidArgumentException - Could not find package magento/extension-b2b at any version for your minimum-stability (stable). Check the package spelling or your minimum-stability. + ``` -4. Add and commit the updated `composer.json` and `composer.lock` files. +1. Add and commit the updated `composer.json` and `composer.lock` files. - ```bash - git add composer.json composer.lock && git commit -a -m "install b2b module" - ``` -5. Enable all missing modules, including B2B, for updating. + ```bash + git add composer.json composer.lock && git commit -a -m "install b2b module" + ``` - ./vendor/bin/ece-tools module:refresh +1. Enable all missing modules, including B2B, for updating. -6. Complete the upgrade with B2B using the following command: + ```bash + ./vendor/bin/ece-tools module:refresh + ``` - ```bash - php bin/magento setup:upgrade - ``` +1. Complete the upgrade with B2B using the following command: + + ```bash + php bin/magento setup:upgrade + ``` If you have a config.php file as part of your deployment, you should also add the B2B module in the modules section of the file. 1. Change to the app/etc directory. -2. Edit the config.php with a text editor. -3. In the modules list, add the B2B module. -4. Save the file and update Git. +1. Edit the config.php with a text editor. +1. In the modules list, add the B2B module. +1. Save the file and update Git. - ```bash - git add -f app/etc/config.php - ``` + ```bash + git add -f app/etc/config.php + ``` - ```bash - git commit -a -m “Add config.php.” - ``` + ```bash + git commit -a -m “Add config.php.” + ``` ## Configure and use B2B {#use} diff --git a/guides/v2.2/cloud/configure/setup-cron-jobs.md b/guides/v2.2/cloud/configure/setup-cron-jobs.md index f14dec386b3..822bf41dcc3 100644 --- a/guides/v2.2/cloud/configure/setup-cron-jobs.md +++ b/guides/v2.2/cloud/configure/setup-cron-jobs.md @@ -11,9 +11,9 @@ Magento uses cron jobs for numerous features to schedule activities. This topic The `.magento.app.yaml` file specifies the configuration for the default Magento cron jobs as well as any custom crons that you add to the following environments. -- Starter plan–All environments including `Master` +- Starter plan–All environments including `Master` -- Pro plan–Integration, Staging, and Production environments including `Master` +- Pro plan–Integration, Staging, and Production environments including `Master` The `.magento.app.yaml` file includes the following default crons configuration, which runs the default Magento cron jobs: @@ -170,6 +170,6 @@ You can review cron processing information in the application-level log files fo See the following Magento Support articles for help troubleshooting cron-related problems: -- [Cron tasks lock tasks from other groups](https://support.magento.com/hc/en-us/articles/360029219812-Cron-tasks-lock-tasks-from-other-groups) +- [Cron tasks lock tasks from other groups](https://support.magento.com/hc/en-us/articles/360029219812-Cron-tasks-lock-tasks-from-other-groups) -- [Reset stuck cron jobs manually on the cloud](https://support.magento.com/hc/en-us/articles/360000097713-Reset-stuck-Magento-cron-jobs-manually-on-Cloud) +- [Reset stuck cron jobs manually on the cloud](https://support.magento.com/hc/en-us/articles/360000097713-Reset-stuck-Magento-cron-jobs-manually-on-Cloud) diff --git a/guides/v2.2/cloud/deploy/continuous-deployment.md b/guides/v2.2/cloud/deploy/continuous-deployment.md index f49a84a08c3..741ac91286d 100644 --- a/guides/v2.2/cloud/deploy/continuous-deployment.md +++ b/guides/v2.2/cloud/deploy/continuous-deployment.md @@ -14,38 +14,38 @@ Following your branching and development methodologies, you can easily develop n Both Starter and Pro plan environments support continuous integration for constant updates. This workflow supports releases multiple times a day or on a set schedule according to your business needs. -* Create development branches with future features and changes -* Test the code in your development environments -* Deploy and test in Staging -* Deploy to Production +* Create development branches with future features and changes +* Test the code in your development environments +* Deploy and test in Staging +* Deploy to Production We recommend the following best practices for {{site.data.var.ece}} environments. ## Development best practices -* Keep your branches updated with the latest code for all developers to access and pull -* Maintain commit comments to share with your developers and track branch work -* Keep Staging as close to Production as possible with configurations, code, services, and data -* Do not overfill a branch of development work, keep it streamlined to carefully implement and test code, extensions, etc -* Keep track of the order you follow for adding extensions to your code. Some extensions require very specific installation orders. -* Do not push all of your extensions at once into Staging and Production. Add, push, and test extensions in groups to ensure they are stable. -* Use Magento Configuration Management to ensure configuration consistency +* Keep your branches updated with the latest code for all developers to access and pull +* Maintain commit comments to share with your developers and track branch work +* Keep Staging as close to Production as possible with configurations, code, services, and data +* Do not overfill a branch of development work, keep it streamlined to carefully implement and test code, extensions, etc +* Keep track of the order you follow for adding extensions to your code. Some extensions require very specific installation orders. +* Do not push all of your extensions at once into Staging and Production. Add, push, and test extensions in groups to ensure they are stable. +* Use Magento Configuration Management to ensure configuration consistency ## Deployment best practices -* Fully deploy the base {{site.data.var.ece}} site initially to ensure all environments are stable with Magento installed. Some extensions will throw errors during build and deploy if they are added during an install. These work best during an update. -* Run a local build prior to fully deploying -* Ensure all files are correctly added to the Git branch before pushing +* Fully deploy the base {{site.data.var.ece}} site initially to ensure all environments are stable with Magento installed. Some extensions will throw errors during build and deploy if they are added during an install. These work best during an update. +* Run a local build prior to fully deploying +* Ensure all files are correctly added to the Git branch before pushing ## Testing best practices -* Fully test Administrator and customer features in your code. Your staff may encounter issues, for example when refunding an order or sending notifications. -* Heavily test extensions with the correct credentials per environment -* Perform all Fastly tests against Staging and Production +* Fully test Administrator and customer features in your code. Your staff may encounter issues, for example when refunding an order or sending notifications. +* Heavily test extensions with the correct credentials per environment +* Perform all Fastly tests against Staging and Production ## Data best practices -* Create a backup of your database and snapshot on a schedule or before pushing major updates. We provide snapshots of the Pro Production environment according to a [progressive schedule]({{ page.baseurl }}/cloud/architecture/pro-architecture.html#backup-and-disaster-recovery), but you may need to backup your Staging environment for constant iterations. -* Pull a data dump of your Production data into the Staging environment for extensive testing -* Consider running scripts or pulling only specific tables to sanitize customer data from non-Production environments Staging +* Create a backup of your database and snapshot on a schedule or before pushing major updates. We provide snapshots of the Pro Production environment according to a [progressive schedule]({{ page.baseurl }}/cloud/architecture/pro-architecture.html#backup-and-disaster-recovery), but you may need to backup your Staging environment for constant iterations. +* Pull a data dump of your Production data into the Staging environment for extensive testing +* Consider running scripts or pulling only specific tables to sanitize customer data from non-Production environments Staging diff --git a/guides/v2.2/cloud/deploy/reduce-downtime.md b/guides/v2.2/cloud/deploy/reduce-downtime.md index d968a1b1260..ce53733171f 100644 --- a/guides/v2.2/cloud/deploy/reduce-downtime.md +++ b/guides/v2.2/cloud/deploy/reduce-downtime.md @@ -13,25 +13,25 @@ During the deployment process, all connections queue for up to 5 minutes preserv Use the following steps to reduce the amount of time it takes your store to deploy an update to Production: -1. [Upgrade to the `{{site.data.var.ct}}` package]({{page.baseurl}}/cloud/project/ece-tools-upgrade-project.html) or [update the `{{site.data.var.ct}}` version]({{page.baseurl}}/cloud/project/ece-tools-update.html) - Your {{site.data.var.ece}} project must have the latest `{{site.data.var.ct}}` package so that you have the tools available to configure an optimal deployment. If you have the latest `{{site.data.var.ct}}`, continue to the next step. +1. [Upgrade to the `{{site.data.var.ct}}` package]({{page.baseurl}}/cloud/project/ece-tools-upgrade-project.html) or [update the `{{site.data.var.ct}}` version]({{page.baseurl}}/cloud/project/ece-tools-update.html) + Your {{site.data.var.ece}} project must have the latest `{{site.data.var.ct}}` package so that you have the tools available to configure an optimal deployment. If you have the latest `{{site.data.var.ct}}`, continue to the next step. - {:.bs-callout .bs-callout-info} - Even though it is a best practice to use the latest `{{site.data.var.ct}}` package, the zero-downtime deployment method works with `{{site.data.var.ct}}` [version 2002.0.13]({{page.baseurl}}/cloud/release-notes/cloud-tools.html#v2002013) and later. + {:.bs-callout .bs-callout-info} + Even though it is a best practice to use the latest `{{site.data.var.ct}}` package, the zero-downtime deployment method works with `{{site.data.var.ct}}` [version 2002.0.13]({{page.baseurl}}/cloud/release-notes/cloud-tools.html#v2002013) and later. -1. [Configure static content deployment]({{page.baseurl}}/cloud/deploy/static-content-deployment.html) - If static content deployment fails in the deploy phase, your site gets stuck in maintenance mode. When a failure occurs during the build phase, the process avoids downtime because it never begins the deploy phase. [Generating static content during the build phase with minified HTML]({{page.baseurl}}/cloud/deploy/static-content-deployment.html#setting-the-scd-on-build), also known as the ideal state, is the optimal configuration for zero-downtime deployments and _prevents_ downtime if a failure occurs. +1. [Configure static content deployment]({{page.baseurl}}/cloud/deploy/static-content-deployment.html) + If static content deployment fails in the deploy phase, your site gets stuck in maintenance mode. When a failure occurs during the build phase, the process avoids downtime because it never begins the deploy phase. [Generating static content during the build phase with minified HTML]({{page.baseurl}}/cloud/deploy/static-content-deployment.html#setting-the-scd-on-build), also known as the ideal state, is the optimal configuration for zero-downtime deployments and _prevents_ downtime if a failure occurs. -1. [Configure the post-deploy hook]({{page.baseurl}}/cloud/project/project-conf-files_magento-app.html#hooks) - You must configure the post-deploy hook to clean and warm the cache. By default, cache clean occurs during the deploy phase when the site is down. Moving the cache clean to the post-deploy phase means that your cache remains live until the deploy phase is complete, and then you can safely clean the cache. +1. [Configure the post-deploy hook]({{page.baseurl}}/cloud/project/project-conf-files_magento-app.html#hooks) + You must configure the post-deploy hook to clean and warm the cache. By default, cache clean occurs during the deploy phase when the site is down. Moving the cache clean to the post-deploy phase means that your cache remains live until the deploy phase is complete, and then you can safely clean the cache. - Customize the list of pages used to preload the cache with the [WARM_UP_PAGES environment variable]({{page.baseurl}}/cloud/env/variables-post-deploy.html#warm_up_pages). + Customize the list of pages used to preload the cache with the [WARM_UP_PAGES environment variable]({{page.baseurl}}/cloud/env/variables-post-deploy.html#warm_up_pages). -1. [Reduce theme files]({{page.baseurl}}/cloud/env/variables-deploy.html#scd_matrix) - You can reduce the amount of unnecessary theme files by configuring the SCD\_MATRIX environment variable. +1. [Reduce theme files]({{page.baseurl}}/cloud/env/variables-deploy.html#scd_matrix) + You can reduce the amount of unnecessary theme files by configuring the SCD\_MATRIX environment variable. -1. [Speed up static content deployment]({{page.baseurl}}/cloud/env/variables-deploy.html#scd_threads) - You can speed up the deployment process by updating the SCD\_THREADS environment variable to increase the number of threads for static content deployment. +1. [Speed up static content deployment]({{page.baseurl}}/cloud/env/variables-deploy.html#scd_threads) + You can speed up the deployment process by updating the SCD\_THREADS environment variable to increase the number of threads for static content deployment. {:.bs-callout .bs-callout-info} -You can validate your project configuration for optimal deployment by [running the ideal state wizard]({{page.baseurl}}/cloud/deploy/smart-wizards.html#verifying-an-ideal-configuration). \ No newline at end of file +You can validate your project configuration for optimal deployment by [running the ideal state wizard]({{page.baseurl}}/cloud/deploy/smart-wizards.html#verifying-an-ideal-configuration). diff --git a/guides/v2.2/cloud/deploy/smart-wizards.md b/guides/v2.2/cloud/deploy/smart-wizards.md index 50d04d14a24..09c08251621 100644 --- a/guides/v2.2/cloud/deploy/smart-wizards.md +++ b/guides/v2.2/cloud/deploy/smart-wizards.md @@ -61,28 +61,28 @@ Ideal state is not configured Based on the output, you need to make the following corrections to your configuration: -1. Enable the Skip HTML minification variable. +1. Enable the Skip HTML minification variable. - > .magento.env.yaml + > .magento.env.yaml - ```yaml - stage: - global: - SKIP_HTML_MINIFICATION: true - ``` + ```yaml + stage: + global: + SKIP_HTML_MINIFICATION: true + ``` -1. Configure the post-deploy hook. +1. Configure the post-deploy hook. - > .magento.app.yaml + > .magento.app.yaml - ```yaml - post_deploy: | - php ./vendor/bin/ece-tools post-deploy - ``` + ```yaml + post_deploy: | + php ./vendor/bin/ece-tools post-deploy + ``` -1. Push your code changes and run the test again. When your configuration is _ideal_, you receive the following message. +1. Push your code changes and run the test again. When your configuration is _ideal_, you receive the following message. - ```terminal - Ideal state is configured - ``` - {: .no-copy} \ No newline at end of file + ```terminal + Ideal state is configured + ``` + {: .no-copy} \ No newline at end of file diff --git a/guides/v2.2/cloud/deploy/static-content-deployment.md b/guides/v2.2/cloud/deploy/static-content-deployment.md index 8f73627f4e3..e54fcaf2f9f 100644 --- a/guides/v2.2/cloud/deploy/static-content-deployment.md +++ b/guides/v2.2/cloud/deploy/static-content-deployment.md @@ -34,21 +34,21 @@ Generating static content requires access to themes and locales. Magento stores {:.procedure} To configure your project to generate SCD on build: -1. Log in to your Cloud environment using SSH and move locales to the file system, then update the [`config.php` file]({{site.baseurl}}/guides/v2.2/cloud/project/project-upgrade.html#create-a-new-configphp-file). +1. Log in to your Cloud environment using SSH and move locales to the file system, then update the [`config.php` file]({{site.baseurl}}/guides/v2.2/cloud/project/project-upgrade.html#create-a-new-configphp-file). -1. The `.magento.env.yaml` configuration file should contain the following values: +1. The `.magento.env.yaml` configuration file should contain the following values: - - [SKIP_HTML_MINIFICATION]({{page.baseurl}}/cloud/env/variables-global.html#skip_html_minification) is `true` - - [SKIP_SCD]({{page.baseurl}}/cloud/env/variables-build.html#skip_scd) on build stage is `false` - - [SCD_STRATEGY]({{site.baseurl}}/guides/v2.2/cloud/env/variables-build.html#scd_strategy) is `compact` + - [SKIP_HTML_MINIFICATION]({{page.baseurl}}/cloud/env/variables-global.html#skip_html_minification) is `true` + - [SKIP_SCD]({{page.baseurl}}/cloud/env/variables-build.html#skip_scd) on build stage is `false` + - [SCD_STRATEGY]({{site.baseurl}}/guides/v2.2/cloud/env/variables-build.html#scd_strategy) is `compact` -1. Verify configuration of the [Post-deploy hook]({{page.baseurl}}/cloud/project/project-conf-files_magento-app.html#hooks) in the `.magento.app.yaml` file. +1. Verify configuration of the [Post-deploy hook]({{page.baseurl}}/cloud/project/project-conf-files_magento-app.html#hooks) in the `.magento.app.yaml` file. -1. Verify your settings by running the [Smart wizard for the ideal state]({{page.baseurl}}/cloud/deploy/smart-wizards.html). +1. Verify your settings by running the [Smart wizard for the ideal state]({{page.baseurl}}/cloud/deploy/smart-wizards.html). - ```bash - php ./vendor/bin/ece-tools wizard:ideal-state - ``` + ```bash + php ./vendor/bin/ece-tools wizard:ideal-state + ``` ### Setting the SCD on demand diff --git a/guides/v2.2/cloud/docker/docker-config.md b/guides/v2.2/cloud/docker/docker-config.md index 7eee209184b..ea2831e178c 100644 --- a/guides/v2.2/cloud/docker/docker-config.md +++ b/guides/v2.2/cloud/docker/docker-config.md @@ -18,8 +18,8 @@ _Mode_ is an additional configuration option for the Docker configuration genera You can launch your Docker environment in one of the following modes: -- **production**—Production mode is the default configuration setting for launching the Docker environment with read-only filesystem permissions. This option builds the Docker environment in production mode and verifies configured service versions. -- **developer**—Developer mode supports an active development environment with full, writable filesystem permissions. This option builds the Docker environment in developer mode and verifies configured service versions. System performance is slower in developer mode because of additional file synchronization operations. +- **production**—Production mode is the default configuration setting for launching the Docker environment with read-only filesystem permissions. This option builds the Docker environment in production mode and verifies configured service versions. +- **developer**—Developer mode supports an active development environment with full, writable filesystem permissions. This option builds the Docker environment in developer mode and verifies configured service versions. System performance is slower in developer mode because of additional file synchronization operations. For example, the following command starts the Docker configuration generator for the developer mode: @@ -53,90 +53,90 @@ For example, the following command starts the Docker configuration generator for ## Prerequisites -1. You must have the following software installed on your local workstation: - - PHP version 7.1 or later - - [php@7.1](https://formulae.brew.sh/formula/php@7.1) - - [php@7.2](https://formulae.brew.sh/formula/php@7.2) - - [Composer](https://getcomposer.org) - - [Docker](https://www.docker.com/get-started) - - File synchronization required for developer mode—use one of the following: - - [docker-sync](https://docker-sync.readthedocs.io/en/latest/getting-started/installation.html) - - [mutagen](https://mutagen.io/documentation/introduction/installation) +1. You must have the following software installed on your local workstation: + - PHP version 7.1 or later + - [php@7.1](https://formulae.brew.sh/formula/php@7.1) + - [php@7.2](https://formulae.brew.sh/formula/php@7.2) + - [Composer](https://getcomposer.org) + - [Docker](https://www.docker.com/get-started) + - File synchronization required for developer mode—use one of the following: + - [docker-sync](https://docker-sync.readthedocs.io/en/latest/getting-started/installation.html) + - [mutagen](https://mutagen.io/documentation/introduction/installation) -1. Update the hosts file. +1. Update the hosts file. - Before you begin, you must add the following hostname to your `/etc/hosts` file: + Before you begin, you must add the following hostname to your `/etc/hosts` file: - ``` - 127.0.0.1 magento2.docker - ``` + ```conf + 127.0.0.1 magento2.docker + ``` - Alternatively, you can run the following command to add it to the file: + Alternatively, you can run the following command to add it to the file: - ```bash - echo "127.0.0.1 magento2.docker" | sudo tee -a /etc/hosts - ``` + ```bash + echo "127.0.0.1 magento2.docker" | sudo tee -a /etc/hosts + ``` - {: .bs-callout-tip } - To change the `magento2.docker` hostname for your project, you must update the host in three files: `.docker/config.php`, `docker-compose.yml`, and `/etc/hosts` + {: .bs-callout-tip } + To change the `magento2.docker` hostname for your project, you must update the host in three files: `.docker/config.php`, `docker-compose.yml`, and `/etc/hosts` -1. Stop the default Apache instance on Mac OS. +1. Stop the default Apache instance on Mac OS. - Because Mac OS provides built-in Apache service, and may occupy port `80`, you must stop the service with the following command: + Because Mac OS provides built-in Apache service, and may occupy port `80`, you must stop the service with the following command: - ```bash - sudo apachectl stop - ``` + ```bash + sudo apachectl stop + ``` -1. Optionally, [enable Xdebug]({{page.baseurl}}/cloud/docker/docker-development-debug.html#enable-xdebug). +1. Optionally, [enable Xdebug]({{page.baseurl}}/cloud/docker/docker-development-debug.html#enable-xdebug). ## Launch the Docker environment -1. Download a Magento application template from the [Magento Cloud repository](https://github.com/magento/magento-cloud). Be careful to select the branch that corresponds with the Magento version. +1. Download a Magento application template from the [Magento Cloud repository](https://github.com/magento/magento-cloud). Be careful to select the branch that corresponds with the Magento version. -1. Add your [Magento access credentials]({{page.baseurl}}/install-gde/prereq/connect-auth.html) to the `auth.json` file. +1. Add your [Magento access credentials]({{page.baseurl}}/install-gde/prereq/connect-auth.html) to the `auth.json` file. -1. Install the template dependencies. +1. Install the template dependencies. - ```bash - composer install - ``` + ```bash + composer install + ``` -1. Continue with steps for [Production mode](#production-mode) or [Developer mode](#developer-mode). +1. Continue with steps for [Production mode](#production-mode) or [Developer mode](#developer-mode). ### Production mode Continue launching your Docker environment in the default _production_ mode. -1. In your local environment, start the Docker configuration generator. You can use the service keys, such as `--php`, to [specify a version](#service-versions). +1. In your local environment, start the Docker configuration generator. You can use the service keys, such as `--php`, to [specify a version](#service-versions). - ```bash - ./vendor/bin/ece-tools docker:build - ``` + ```bash + ./vendor/bin/ece-tools docker:build + ``` -1. _Optional_: If you have a custom PHP configuration file, copy the default configuration DIST file to your custom configuration file and make any necessary changes. +1. _Optional_: If you have a custom PHP configuration file, copy the default configuration DIST file to your custom configuration file and make any necessary changes. - ```bash - cp .docker/config.php.dist .docker/config.php - ``` + ```bash + cp .docker/config.php.dist .docker/config.php + ``` -1. _Optional_: Configure the Docker global variables in the `docker-compose.yml` file. For example, you can [configure Xdebug]({{ page.baseurl }}/cloud/docker/docker-development-debug.html#configure-xdebug). +1. _Optional_: Configure the Docker global variables in the `docker-compose.yml` file. For example, you can [configure Xdebug]({{ page.baseurl }}/cloud/docker/docker-development-debug.html#configure-xdebug). -1. Build files to containers and run in the background. +1. Build files to containers and run in the background. - ```bash - docker-compose up -d - ``` + ```bash + docker-compose up -d + ``` -1. Install Magento in your Docker environment. +1. Install Magento in your Docker environment. - - Build Magento in the Docker container: + - Build Magento in the Docker container: ```bash docker-compose run build cloud-build ``` - - Deploy Magento in the Docker container: + - Deploy Magento in the Docker container: ```bash docker-compose run deploy cloud-deploy @@ -145,25 +145,27 @@ Continue launching your Docker environment in the default _production_ mode. {: .bs-callout-info } For `{{site.data.var.ct}}` v2002.0.12, install Magento with the `docker-compose run cli magento-installer` command. -1. Configure and connect Varnish. +1. Configure and connect Varnish. - ```bash - docker-compose run deploy magento-command config:set system/full_page_cache/caching_application 2 --lock-env - ``` + ```bash + docker-compose run deploy magento-command config:set system/full_page_cache/caching_application 2 --lock-env && + \ + docker-compose run deploy magento-command setup:config:set --http-cache-hosts=varnish + ``` -1. Clear the cache. +1. Clear the cache. - ```bash - docker-compose run deploy magento-command cache:clean - ``` + ```bash + docker-compose run deploy magento-command cache:clean + ``` -1. _Optional_: Restart services if the static content does not synchronize with all images after generation on build phase. +1. _Optional_: Restart services if the static content does not synchronize with all images after generation on build phase. - ```bash - docker-compose restart - ``` + ```bash + docker-compose restart + ``` -1. [Access the Magento instance](#access-magento-instance). +1. [Access the Magento instance](#access-magento-instance). ### Developer mode @@ -172,86 +174,88 @@ Continue launching your Docker environment in the _developer_ mode. The develope {: .bs-callout-info } The `{{site.data.var.ct}}` version 2002.0.18 and later supports developer mode. -1. Install the `docker-sync` tool using the [Installation instructions](https://docker-sync.readthedocs.io/en/latest/getting-started/installation.html). - Optionally, you can install the `mutagen.io` tool using the [Installation instructions](https://mutagen.io/documentation/introduction/installation/). - If you have it installed, continue to the next step. +1. Install the `docker-sync` tool using the [Installation instructions](https://docker-sync.readthedocs.io/en/latest/getting-started/installation.html). -1. In your local environment, start the Docker configuration generator. You can use the service keys, such as `--php`, to [specify a version](#service-versions). + Optionally, you can install the `mutagen.io` tool using the [Installation instructions](https://mutagen.io/documentation/introduction/installation/). - ```bash - ./vendor/bin/ece-tools docker:build --mode="developer" - ``` + If you have it installed, continue to the next step. - By default, the docker-compose configuration uses 'docker-sync' for file synchronization. - To use 'mutagen.io' for file synchronization, you must run the command with the `--sync-engine=mutagen` option. +1. In your local environment, start the Docker configuration generator. You can use the service keys, such as `--php`, to [specify a version](#service-versions). - For example: + ```bash + ./vendor/bin/ece-tools docker:build --mode="developer" + ``` - ```bash - ./vendor/bin/ece-tools docker:build --mode="developer" --sync-engine=mutagen - ``` + By default, the docker-compose configuration uses 'docker-sync' for file synchronization. To use 'mutagen.io' for file synchronization, you must run the command with the `--sync-engine=mutagen` option. -1. _Optional_: If you have a custom PHP configuration file, copy the default configuration DIST file to your custom configuration file and make any necessary changes. + For example: - ```bash - cp .docker/config.php.dist .docker/config.php - ``` + ```bash + ./vendor/bin/ece-tools docker:build --mode="developer" --sync-engine=mutagen + ``` -1. _Optional_: Configure the Docker global variables in the `docker-compose.yml` file. For example, you can [enable and configure Xdebug]({{ page.baseurl }}/cloud/docker/docker-development-debug.html). +1. _Optional_: If you have a custom PHP configuration file, copy the default configuration DIST file to your custom configuration file and make any necessary changes. -1. Start the file synchronization. + ```bash + cp .docker/config.php.dist .docker/config.php + ``` - For the `docker-sync` tool: +1. _Optional_: Configure the Docker global variables in the `docker-compose.yml` file. For example, you can [enable and configure Xdebug]({{ page.baseurl }}/cloud/docker/docker-development-debug.html). - ```bash - docker-sync start - ``` +1. Start the file synchronization. - If it is the first installation you should wait a few minutes for synchronization files + For the `docker-sync` tool: - {: .bs-callout-info} + ```bash + docker-sync start + ``` + + If it is the first installation you should wait a few minutes for synchronization files + + {: .bs-callout-info} If you use `mutagen.io` for file synchronization, skip this step. You start `mutagen.io` _after_ deploying the docker containers. -1. Build files to containers and run in the background. +1. Build files to containers and run in the background. - ```bash - docker-compose up -d - ``` + ```bash + docker-compose up -d + ``` -1. Start the file synchronization with `mutagen.io`. +1. Start the file synchronization with `mutagen.io`. - ```bash - bash ./mutagen.sh - ``` + ```bash + bash ./mutagen.sh + ``` - {: .bs-callout-info} - If you use `docker-sync` for file synchronization, skip this step. + {: .bs-callout-info} + If you use `docker-sync` for file synchronization, skip this step. 1. Install Magento in your Docker environment. - - Deploy Magento in the Docker container: + - Deploy Magento in the Docker container: - ```bash - docker-compose run deploy cloud-deploy && \ - docker-compose run deploy magento-command deploy:mode:set developer - ``` + ```bash + docker-compose run deploy cloud-deploy && \ + docker-compose run deploy magento-command deploy:mode:set developer + ``` {: .bs-callout-info } Developer mode does not require the `build` operation. -1. Configure and connect Varnish. +1. Configure and connect Varnish. - ```bash - docker-compose run deploy magento-command config:set system/full_page_cache/caching_application 2 --lock-env - ``` + ```bash + docker-compose run deploy magento-command config:set system/full_page_cache/caching_application 2 --lock-env && \ + docker-compose run deploy magento-command setup:config:set --http-cache-hosts=varnish + ``` -1. Clear the cache. +1. Clear the cache. - ```bash - docker-compose run deploy magento-command cache:clean - ``` + ```bash + docker-compose run deploy magento-command cache:clean + ``` -1. [Access the Magento instance](#access-magento-instance). +1. [Access the Magento instance](#access-magento-instance). ## Access Magento instance @@ -287,18 +291,18 @@ This removes all components of your local Docker instance including containers, You can use the built-in extension mechanism of Docker to [specify multiple compose files](https://docs.docker.com/compose/reference/overview/#specifying-multiple-compose-files). The following example replaces the default value of the `ENABLE_SENDMAIL` environment variable. -1. Create a `docker-compose-dev.yml` file inside your project root directory and add the following content: +1. Create a `docker-compose-dev.yml` file inside your project root directory and add the following content: - ```yaml - version: '2' - services: - deploy: - environment: - - ENABLE_SENDMAIL=true - ``` + ```yaml + version: '2' + services: + deploy: + environment: + - ENABLE_SENDMAIL=true + ``` -1. Pass both configuration files while executing your commands. For example: +1. Pass both configuration files while executing your commands. For example: - ```bash - docker-compose -f docker-compose.yml -f docker-compose-dev.yml run deploy bash - ``` + ```bash + docker-compose -f docker-compose.yml -f docker-compose-dev.yml run deploy bash + ``` diff --git a/guides/v2.2/cloud/docker/docker-database.md b/guides/v2.2/cloud/docker/docker-database.md index c76dbd6f65d..97e36623b77 100644 --- a/guides/v2.2/cloud/docker/docker-database.md +++ b/guides/v2.2/cloud/docker/docker-database.md @@ -29,62 +29,62 @@ return [ {:.procedure} To connect to the database using Docker commands: -1. Connect to the CLI container. +1. Connect to the CLI container. ```bash docker-compose run deploy bash ``` -1. Connect to the database with a username and password. +1. Connect to the database with a username and password. - ```bash - mysql --host=db --user=magento2 --password=magento2 - ``` + ```bash + mysql --host=db --user=magento2 --password=magento2 + ``` -1. Verify the version of the database service. +1. Verify the version of the database service. - ```mysql - SELECT VERSION(); - +--------------------------+ - | VERSION() | - +--------------------------+ - | 10.0.38-MariaDB-1~xenial | - +--------------------------+ - ``` - {: .no-copy} + ```mysql + SELECT VERSION(); + +--------------------------+ + | VERSION() | + +--------------------------+ + | 10.0.38-MariaDB-1~xenial | + +--------------------------+ + ``` + {: .no-copy} {:.procedure} To connect to the database: -1. Find the port used by the database. The port may change each time you restart Docker. +1. Find the port used by the database. The port may change each time you restart Docker. - ```bash - docker-compose ps - ``` + ```bash + docker-compose ps + ``` - Sample response: + Sample response: - ```terminal - Name Command State Ports - -------------------------------------------------------------------------------------------------- - mc-master_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:32769->3306/tcp - ``` - {: .no-copy} + ```terminal + Name Command State Ports + -------------------------------------------------------------------------------------------------- + mc-master_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:32769->3306/tcp + ``` + {: .no-copy} -1. Connect to the database with port information from the previous step. +1. Connect to the database with port information from the previous step. - ```bash - mysql -h127.0.0.1 -p32769 -umagento2 -pmagento2 - ``` + ```bash + mysql -h127.0.0.1 -p32769 -umagento2 -pmagento2 + ``` -1. Verify the version of the database service. +1. Verify the version of the database service. - ```mysql - SELECT VERSION(); - +--------------------------+ - | VERSION() | - +--------------------------+ - | 10.0.38-MariaDB-1~xenial | - +--------------------------+ - ``` - {: .no-copy} + ```mysql + SELECT VERSION(); + +--------------------------+ + | VERSION() | + +--------------------------+ + | 10.0.38-MariaDB-1~xenial | + +--------------------------+ + ``` + {: .no-copy} diff --git a/guides/v2.2/cloud/docker/docker-development-debug.md b/guides/v2.2/cloud/docker/docker-development-debug.md index 38ec366dcd0..8013b23d8df 100644 --- a/guides/v2.2/cloud/docker/docker-development-debug.md +++ b/guides/v2.2/cloud/docker/docker-development-debug.md @@ -12,9 +12,9 @@ Xdebug is an extension for debugging your PHP. The following explains how to con If you use Microsoft Windows, take the following steps before continuing: -1. Open your Docker settings. -1. Select the **Expose daemon on tcp://localhost:2375 without TLS** checkbox. -1. Wait for the settings to apply. +1. Open your Docker settings. +1. Select the **Expose daemon on tcp://localhost:2375 without TLS** checkbox. +1. Wait for the settings to apply. ## Enable Xdebug @@ -33,53 +33,53 @@ runtime: ## Configure Xdebug -1. Rebuild the `docker-compose.yml` file by continuing to configure your local workstation to [launch the Docker environment]({{ page.baseurl }}/cloud/docker/docker-config.html). The following is an excerpt from the `docker-compose.yml` file that shows Docker global variables. +1. Rebuild the `docker-compose.yml` file by continuing to configure your local workstation to [launch the Docker environment]({{ page.baseurl }}/cloud/docker/docker-config.html). The following is an excerpt from the `docker-compose.yml` file that shows Docker global variables. - ```yaml - generic: - image: alpine - environment: - - PHP_MEMORY_LIMIT=2048M - - UPLOAD_MAX_FILESIZE=64M - - MAGENTO_ROOT=/app - - PHP_IDE_CONFIG=serverName=magento_cloud_docker - - XDEBUG_CONFIG=remote_host=host.docker.internal - - 'PHP_EXTENSIONS=bcmath bz2 calendar exif gd gettext intl mysqli pcntl pdo_mysql soap sockets sysvmsg sysvsem sysvshm opcache zip redis xsl xdebug' - ``` - {:.no-copy} + ```yaml + generic: + image: alpine + environment: + - PHP_MEMORY_LIMIT=2048M + - UPLOAD_MAX_FILESIZE=64M + - MAGENTO_ROOT=/app + - PHP_IDE_CONFIG=serverName=magento_cloud_docker + - XDEBUG_CONFIG=remote_host=host.docker.internal + - 'PHP_EXTENSIONS=bcmath bz2 calendar exif gd gettext intl mysqli pcntl pdo_mysql soap sockets sysvmsg sysvsem sysvshm opcache zip redis xsl xdebug' + ``` + {:.no-copy} -1. Change any Xdebug configuration using the`XDEBUG_CONFIG` option. For example, to change the `xdebug.remote_port` option: +1. Change any Xdebug configuration using the`XDEBUG_CONFIG` option. For example, to change the `xdebug.remote_port` option: - ```yaml - XDEBUG_CONFIG='remote_host=host.docker.internal remote_port=9002' - ``` + ```yaml + XDEBUG_CONFIG='remote_host=host.docker.internal remote_port=9002' + ``` {:.procedure} To configure PhpStorm to work with Xdebug: -1. In your PhpStorm project, open the settings panel. +1. In your PhpStorm project, open the settings panel. - - _Mac OS X_—Select **File** > **Preferences**. - - _Windows/Linux_—Select **File** > **Settings**. + - _Mac OS X_—Select **File** > **Preferences**. + - _Windows/Linux_—Select **File** > **Settings**. -1. In the _Settings_ panel, expand and locate the **Languages & Frameworks** > **PHP** > **Servers** section. +1. In the _Settings_ panel, expand and locate the **Languages & Frameworks** > **PHP** > **Servers** section. -1. Click the **+** to add a server configuration. The project name is in grey at the top. +1. Click the **+** to add a server configuration. The project name is in grey at the top. -1. Configure the following settings for the new server configuration: +1. Configure the following settings for the new server configuration: - - **Name**—Enter the name used for the `serverName` in `PHP_IDE_CONFIG` option from `docker-compose.yml` file. - - **Host**—Enter `localhost`. - - **Port**—Enter `80`. - - **Debugger**—Select `Xdebug`. + - **Name**—Enter the name used for the `serverName` in `PHP_IDE_CONFIG` option from `docker-compose.yml` file. + - **Host**—Enter `localhost`. + - **Port**—Enter `80`. + - **Debugger**—Select `Xdebug`. -1. Select **Use path mappings**. In the _File/Directory_ pane, the root of the project for the `serverName` displays. +1. Select **Use path mappings**. In the _File/Directory_ pane, the root of the project for the `serverName` displays. -1. In the **Absolute path on the server** column, click ![Edit]({{ site.baseurl }}/common/images/install_docker_php-storm-edit.png){:width="15px"} and add a value to the `MAGENTO_ROOT` option. The default value is `/app` +1. In the **Absolute path on the server** column, click ![Edit]({{ site.baseurl }}/common/images/install_docker_php-storm-edit.png){:width="15px"} and add a value to the `MAGENTO_ROOT` option. The default value is `/app` -1. Change the Xdebug port to 9001 in the **Languages & Frameworks** > **PHP** > **Debug** > **Xdebug** > **Debug Port** panel. +1. Change the Xdebug port to 9001 in the **Languages & Frameworks** > **PHP** > **Debug** > **Xdebug** > **Debug Port** panel. -1. Click **Apply**. +1. Click **Apply**. ## Use Xdebug @@ -88,49 +88,49 @@ The following steps describe debugging web requests and CLI commands. {:.procedure} To debug web requests: -1. In your PhpStorm project, click ![Start listening for connections]({{ site.baseurl }}/common/images/install_docker_php-storm_xdebug-start-listening.png){:width="25px"} (**Start listening**) in the top navigation bar. +1. In your PhpStorm project, click ![Start listening for connections]({{ site.baseurl }}/common/images/install_docker_php-storm_xdebug-start-listening.png){:width="25px"} (**Start listening**) in the top navigation bar. -1. Add breakpoints in the `pub/index.php` file. +1. Add breakpoints in the `pub/index.php` file. -1. Install the debug extension in the browser, and then click **Debug** to enable. +1. Install the debug extension in the browser, and then click **Debug** to enable. -1. In the browser, open the `https://localhost` URL. +1. In the browser, open the `https://localhost` URL. -1. When PhpStorm recognizes the Xdebug connection, you can begin debugging web requests. +1. When PhpStorm recognizes the Xdebug connection, you can begin debugging web requests. You can debug any Magento command or PHP script using the following steps. {:.procedure} To debug CLI commands: -1. In your PhpStorm project, open the **Build, Extension, Deployment** > **Docker** panel, and then click `+` to add a new Docker server and update the following settings: +1. In your PhpStorm project, open the **Build, Extension, Deployment** > **Docker** panel, and then click `+` to add a new Docker server and update the following settings: - - **Name**—Enter a name for the server, for example `Docker Cloud`. - - **Connect to Docker daemon with**— - - _Windows_—Select **TCP socket** and update **Engine Api Url** with `tcp://localhost:2375`. - - _Mac OS X_—Select **Docker for Mac**. [_default_] + - **Name**—Enter a name for the server, for example `Docker Cloud`. + - **Connect to Docker daemon with**— + - _Windows_—Select **TCP socket** and update **Engine Api Url** with `tcp://localhost:2375`. + - _Mac OS X_—Select **Docker for Mac**. [_default_] -1. In the **Languages & Frameworks** > **PHP** > **Cli Interpreter** panel, click **[...]**. +1. In the **Languages & Frameworks** > **PHP** > **Cli Interpreter** panel, click **[...]**. -1. Click **[+]** to add and configure a new Cli Interpreter from your Docker image. Update the following settings: +1. Click **[+]** to add and configure a new Cli Interpreter from your Docker image. Update the following settings: - - **Name**—Enter a name for the new interpreter, such as `Magento cloud docker cli`. - - **Remote**—Select `Docker`. - - **Server**—Select `Docker Cloud` from the previous step. - - **Image name**—Select `magento/magento-cloud-docker-php:7.x-cli`. - - **Additional** > **Debugger extension**— - - Windows—Enter `xdebug`. - - Mac OS X/Linux—Enter `xdebug.so`. - - Click **Refresh** to verify that the interpreter and Xdebug extension are configured properly. + - **Name**—Enter a name for the new interpreter, such as `Magento cloud docker cli`. + - **Remote**—Select `Docker`. + - **Server**—Select `Docker Cloud` from the previous step. + - **Image name**—Select `magento/magento-cloud-docker-php:7.x-cli`. + - **Additional** > **Debugger extension**— + - Windows—Enter `xdebug`. + - Mac OS X/Linux—Enter `xdebug.so`. + - Click **Refresh** to verify that the interpreter and Xdebug extension are configured properly. -1. Click **Save**. +1. Click **Save**. -1. Open the _Run/Debug Configuration_ window and add a new **PHP script** with the following settings: +1. Open the _Run/Debug Configuration_ window and add a new **PHP script** with the following settings: - - **Name**—Enter `bin/magento`. - - **Configuration** > **File**—Select the path to the `bin/magento` file in your local environment. + - **Name**—Enter `bin/magento`. + - **Configuration** > **File**—Select the path to the `bin/magento` file in your local environment. -1. Add breakpoints in the `bin/magento` file and the debug PHP script created in the previous step. +1. Add breakpoints in the `bin/magento` file and the debug PHP script created in the previous step. ## Using Xdebug Helper @@ -139,18 +139,18 @@ You can install and use the Xdebug Helper Chrome extension to debug your PhP cod {:.procedure} To use Xdebug Helper with Chrome: -1. Install the [Xdebug Helper extension](https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc?hl=en) from the Chrome store. +1. Install the [Xdebug Helper extension](https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc?hl=en) from the Chrome store. -1. Enable the extension in Chrome as shown in the following figure. +1. Enable the extension in Chrome as shown in the following figure. - ![Enable the Xdebug extension in Chrome]({{ site.baseurl }}/common/images/install_docker_php-storm_xdebug-chrome.png) + ![Enable the Xdebug extension in Chrome]({{ site.baseurl }}/common/images/install_docker_php-storm_xdebug-chrome.png) -1. In _Chrome_, click ![Xdebug helper icon]({{ site.baseurl }}/common/images/cloud-xdebug_helper-icon.png){:width="25px"} in the Chrome toolbar. +1. In _Chrome_, click ![Xdebug helper icon]({{ site.baseurl }}/common/images/cloud-xdebug_helper-icon.png){:width="25px"} in the Chrome toolbar. -1. From the _Xdebug helper_ menu, click **Options**. +1. From the _Xdebug helper_ menu, click **Options**. -1. From the _IDE Key_ list, select **PhpStorm**. +1. From the _IDE Key_ list, select **PhpStorm**. -1. Click **Save**. +1. Click **Save**. - ![Xdebug Helper options]({{ site.baseurl }}/common/images/cloud-xdebug_helper-options.png){:width="400px"} + ![Xdebug Helper options]({{ site.baseurl }}/common/images/cloud-xdebug_helper-options.png){:width="400px"} diff --git a/guides/v2.2/cloud/docker/docker-development-testing.md b/guides/v2.2/cloud/docker/docker-development-testing.md index 729edc67074..2c91a3a7933 100644 --- a/guides/v2.2/cloud/docker/docker-development-testing.md +++ b/guides/v2.2/cloud/docker/docker-development-testing.md @@ -15,19 +15,19 @@ For testing the Magento application, see the [Magento Functional Testing Framewo Before you run functional tests, you must prepare your environment with the following steps. -1. Clone the {{site.data.var.ct}} GitHub repository. +1. Clone the {{site.data.var.ct}} GitHub repository. ```bash git clone git@github.com:magento/ece-tools.git ``` -1. Stop all services that use the following ports: +1. Stop all services that use the following ports: - `80`—varnish - `443`—web, tls - `3306`—apache, mysql -1. Update the hosts file. +1. Update the hosts file. Before you begin, you must add the following hostname to your `/etc/hosts` file: @@ -41,15 +41,15 @@ Before you run functional tests, you must prepare your environment with the foll echo "127.0.0.1 web" | sudo tee -a /etc/hosts ``` -1. Switch to the preferred PHP version for running tests. +1. Switch to the preferred PHP version for running tests. -1. Update the project dependencies. +1. Update the project dependencies. ```bash composer update ``` -1. Add credentials to the Docker environment. +1. Add credentials to the Docker environment. ```bash echo "COMPOSER_MAGENTO_USERNAME=your_public_key" >> ./.docker/composer.env diff --git a/guides/v2.2/cloud/docker/docker-development.md b/guides/v2.2/cloud/docker/docker-development.md index e3926e19ddf..572a2924e59 100644 --- a/guides/v2.2/cloud/docker/docker-development.md +++ b/guides/v2.2/cloud/docker/docker-development.md @@ -17,8 +17,8 @@ The database container is based on the [mariadb](https://hub.docker.com/_/mariad - Port: 3306 - Volumes: - - `/var/lib/mysql` - - `./docker/mysql` + - `/var/lib/mysql` + - `./docker/mysql` To import a database dump, place the SQL file into the `.docker/mysql/docker-entrypoint-initdb.d` folder. @@ -34,8 +34,8 @@ The following CLI containers, which are based on a [PHP-CLI version 7 image](htt - `deploy`—extends the CLI container to use read-only file system, similar to the deploy phase - `cron`—extends the CLI container to run cron - - The `setup:cron:run` and `cron:update` commands are not available on Cloud and Docker for Cloud environment - - Cron only works with the CLI container to run the `./bin/magento cron:run` command + - The `setup:cron:run` and `cron:update` commands are not available on Cloud and Docker for Cloud environment + - Cron only works with the CLI container to run the `./bin/magento cron:run` command For example, you can check the state of the your project using the _ideal-state_ wizard: @@ -72,15 +72,15 @@ The PHP-FPM container is based on the [magento/magento-cloud-docker-php](https:/ - Port: 9000 - Read-only volumes: - - `/app` - - `/app/vendor` - - `/app/generated` - - `/app/setup` + - `/app` + - `/app/vendor` + - `/app/generated` + - `/app/setup` - Read/Write volumes: - - `/app/var` - - `/app/app/etc` - - `/app/pub/static` - - `/app/pub/media` + - `/app/var` + - `/app/app/etc` + - `/app/pub/static` + - `/app/pub/media` ### Web container diff --git a/guides/v2.2/cloud/env/environments-ssh.md b/guides/v2.2/cloud/env/environments-ssh.md index 4350129154d..9af51595369 100644 --- a/guides/v2.2/cloud/env/environments-ssh.md +++ b/guides/v2.2/cloud/env/environments-ssh.md @@ -15,14 +15,14 @@ SSH, or Secure Shell, is a common protocol used to securely log into remote serv To use SSH, you need to: -* Generate your SSH public and private keys -* Add your SSH public key to your remote server either through CLI commands or the Project Web Interface -* Use Magento Cloud CLI or Git commands to [SSH](#ssh) to an environment +* Generate your SSH public and private keys +* Add your SSH public key to your remote server either through CLI commands or the Project Web Interface +* Use Magento Cloud CLI or Git commands to [SSH](#ssh) to an environment You create an SSH key pair including a public and private key: -* The _public key_ is safe to provide for accessing a site, [SSH](#ssh), and [sFTP](#sftp). -* The _private key_ should remain private on your workspace that you use for remote accessing environments. **Never share your private key.** Do not add it to a ticket, copy it to a chat, or attach it to emails. +* The _public key_ is safe to provide for accessing a site, [SSH](#ssh), and [sFTP](#sftp). +* The _private key_ should remain private on your workspace that you use for remote accessing environments. **Never share your private key.** Do not add it to a ticket, copy it to a chat, or attach it to emails. ## How SSH keys work {#work} @@ -34,16 +34,16 @@ When you enter an SSH command to connect your client to the remote host, the hos You can connect using SSH in any of the following ways: -* [SSH using Magento Cloud CLI](#magento-cli) -* [Locate the SSH command in the Project Web Interface](#web-interface) -* [Git SSH commands for Pro Staging and Production](#pro) +* [SSH using Magento Cloud CLI](#magento-cli) +* [Locate the SSH command in the Project Web Interface](#web-interface) +* [Git SSH commands for Pro Staging and Production](#pro) ### SSH using Magento Cloud CLI {#magento-cli} Magento Cloud CLI commands can only be used in environments with the software installed. These environments include: -* Starter environments -* Pro Integration environments +* Starter environments +* Pro Integration environments To SSH to an environment using the Magento Cloud command line: @@ -100,8 +100,8 @@ With your SSH keys added to those servers, you can use a terminal application, t For the URLs, see the following: -* Staging: `ssh _stg@.ent.magento.cloud` -* Production: `ssh @.ent.magento.cloud` +* Staging: `ssh _stg@.ent.magento.cloud` +* Production: `ssh @.ent.magento.cloud` For example, to log in to the Staging environment, use the following command: `ssh abcdefghij_stg@abcdefghij.ent.magento.cloud`. For production: `ssh abcdefghij@abcdefghij.ent.magento.cloud` @@ -115,15 +115,15 @@ Typically, you want to use SSH for secure access to your environments and [migra You need the following requirements to sFTP into cloud environments: -* You need to use a client that supports SSH key authentication for sFTP and use your SSH public key. -* Your public SSH key must be added to the target environment. For Starter environments and Pro Integration environments, you can add it through the Project Web Interface. For Pro Staging and Production, you must enter a [Support ticket]({{ page.baseurl }}/cloud/trouble/trouble.html) with your public key attached. **Never provide your private SSH key.** +* You need to use a client that supports SSH key authentication for sFTP and use your SSH public key. +* Your public SSH key must be added to the target environment. For Starter environments and Pro Integration environments, you can add it through the Project Web Interface. For Pro Staging and Production, you must enter a [Support ticket]({{ page.baseurl }}/cloud/trouble/trouble.html) with your public key attached. **Never provide your private SSH key.** When configuring sFTP, use your SSH public key and the following information for access: -* Username: All content before the `@` in your public SSH key. -* Password: You do not need a password for sFTP. sFTP access uses the SSH key based authentication. -* Host: All content after the `@` in your public SSH key. -* Port: 22, which is the default SSH port. +* Username: All content before the `@` in your public SSH key. +* Password: You do not need a password for sFTP. sFTP access uses the SSH key based authentication. +* Host: All content after the `@` in your public SSH key. +* Port: 22, which is the default SSH port. To add your SSH public key information to your client: diff --git a/guides/v2.2/cloud/env/environments-start.md b/guides/v2.2/cloud/env/environments-start.md index 9468465783f..8a8f836684d 100644 --- a/guides/v2.2/cloud/env/environments-start.md +++ b/guides/v2.2/cloud/env/environments-start.md @@ -47,15 +47,15 @@ To begin, create a new branch. After completing development, you can merge this branch to the parent: -1. Complete code in your local branch. +1. Complete code in your local branch. -1. Add, commit, and push changes to the environment. +1. Add, commit, and push changes to the environment. ```bash git add -A && git commit -m "Commit message" && git push origin ``` -1. Merge with the parent environment: +1. Merge with the parent environment: ```bash magento-cloud environment:merge @@ -75,15 +75,15 @@ When you delete an environment, the environment is set to _inactive_. The code i {:.procedure} To delete an environment: -1. Open a terminal and navigate to your project. +1. Open a terminal and navigate to your project. -1. Fetch updates from the remote server. +1. Fetch updates from the remote server. ```bash git fetch ``` -1. Delete the environment branch. +1. Delete the environment branch. ```bash magento-cloud environment:delete @@ -95,7 +95,7 @@ To delete an environment: magento-cloud environment:delete ``` -1. Respond to the prompts to delete the local environment and the corresponding remote environment. +1. Respond to the prompts to delete the local environment and the corresponding remote environment. ```terminal The environment is currently active: deleting it will delete all associated data. @@ -111,7 +111,7 @@ To delete an environment: Deleting the remote Git branch removes the environment from the project. -1. Wait for the environment to delete. +1. Wait for the environment to delete. ```terminal Deleting environment diff --git a/guides/v2.2/cloud/env/environments.md b/guides/v2.2/cloud/env/environments.md index 053210bd9e5..1fed8fce98b 100644 --- a/guides/v2.2/cloud/env/environments.md +++ b/guides/v2.2/cloud/env/environments.md @@ -11,9 +11,9 @@ After fully configuring your store, you need to configure your environments. Env You can configure application settings, routes, build and deploy actions, and notifications to support your project environments using the following configuration files: -- [`.magento.app.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html)—defines how to build and deploy Magento, including services, hooks, and cron jobs. -- [`.magento.env.yaml`]({{ page.baseurl }}/cloud/project/magento-env-yaml.html)—centralizes the management of build and deploy actions across all of your environments, including Pro Staging and Production, using environment variables. -- [`.magento/routes.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_routes.html)—configure caching, redirects, and server-side includes. -- [`.magento/services.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_services.html)—defines the services Magento uses by name and version. For example, this file may include versions of MySQL, PHP extensions, Redis, RabbitMQ, and Elasticsearch. You must open a support ticket to push these changes to Pro plan Staging and Production environments. +- [`.magento.app.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html)—defines how to build and deploy Magento, including services, hooks, and cron jobs. +- [`.magento.env.yaml`]({{ page.baseurl }}/cloud/project/magento-env-yaml.html)—centralizes the management of build and deploy actions across all of your environments, including Pro Staging and Production, using environment variables. +- [`.magento/routes.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_routes.html)—configure caching, redirects, and server-side includes. +- [`.magento/services.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_services.html)—defines the services Magento uses by name and version. For example, this file may include versions of MySQL, PHP extensions, Redis, RabbitMQ, and Elasticsearch. You must open a support ticket to push these changes to Pro plan Staging and Production environments. When you push code changes, the active environment provisions container updates using the YAML configuration files. diff --git a/guides/v2.2/cloud/env/log-handlers.md b/guides/v2.2/cloud/env/log-handlers.md index 19dc533059a..a3ca9f4dd43 100644 --- a/guides/v2.2/cloud/env/log-handlers.md +++ b/guides/v2.2/cloud/env/log-handlers.md @@ -52,11 +52,11 @@ log: Log levels determine the level of detail in notification messages. The following log level categories include every log level below it. For example, a `debug` level includes logging from every level, whereas an `alert` level only shows alerts and emergencies. -- **debug**—detailed debug information -- **info**—interesting events, such as a user login or SQL log -- **notice**—normal, but significant events -- **warning**—exceptional occurrences that are not errors, such as the use of a deprecated API or poor use of an API -- **error**—run-time errors that do not require immediate action -- **critical**—critical conditions, such as an unavailable application component or an unexpected exception -- **alert**—immediate action required—such as a website is down or the database is unavailable—that triggers an SMS alert -- **emergency**—system is unusable +- **debug**—detailed debug information +- **info**—interesting events, such as a user login or SQL log +- **notice**—normal, but significant events +- **warning**—exceptional occurrences that are not errors, such as the use of a deprecated API or poor use of an API +- **error**—run-time errors that do not require immediate action +- **critical**—critical conditions, such as an unavailable application component or an unexpected exception +- **alert**—immediate action required—such as a website is down or the database is unavailable—that triggers an SMS alert +- **emergency**—system is unusable diff --git a/guides/v2.2/cloud/env/setup-notifications.md b/guides/v2.2/cloud/env/setup-notifications.md index f0f088d0c86..27d058c3802 100644 --- a/guides/v2.2/cloud/env/setup-notifications.md +++ b/guides/v2.2/cloud/env/setup-notifications.md @@ -15,9 +15,9 @@ For example, you could send a Slack message to alert a group of people when a de Before you configure notifications, consider the following: -- What kind of notifications do you want to receive (Slack messages, email, both)? -- How much detail do you want to see in the logs? -- Where do you want to set up notifications (Integration, Staging, Production)? +- What kind of notifications do you want to receive (Slack messages, email, both)? +- How much detail do you want to see in the logs? +- Where do you want to set up notifications (Integration, Staging, Production)? For example, during initial development you may prefer email notifications that show detailed logs about your Integration environment to help you debug issues before deploying to the Staging environment. When you are ready to deploy to the Staging or Production environment, you may prefer a Slack message that contains less detailed information. @@ -28,8 +28,8 @@ The configuration file used to set up notifications is at the root of your proje To configure notifications: -1. Open a terminal and [checkout a branch]({{ page.baseurl }}/cloud/before/before-setup-env-2_clone.html#branch) in your local environment. -1. In the `.magento.env.yaml` file in your project root, add your messaging system settings, including preferred notification [Log levels]({{page.baseurl}}/cloud/env/log-handlers.html#log-levels). +1. Open a terminal and [checkout a branch]({{ page.baseurl }}/cloud/before/before-setup-env-2_clone.html#branch) in your local environment. +1. In the `.magento.env.yaml` file in your project root, add your messaging system settings, including preferred notification [Log levels]({{page.baseurl}}/cloud/env/log-handlers.html#log-levels). For example, to configure both Slack _and_ email configurations, use the following: @@ -73,10 +73,10 @@ log: min_level: "info" ``` -- `token`—Your Slack [user token](https://api.slack.com/docs/token-types#user). Your user token authorizes {{site.data.var.ece}} to send messages. -- `channel`—Name of the Slack channel {{site.data.var.ece}} sends notifications. -- `username`—Username {{site.data.var.ece}} uses to send notification messages in Slack. -- `min_level`—Minimum log level for notification messages. We recommend using `info`. +- `token`—Your Slack [user token](https://api.slack.com/docs/token-types#user). Your user token authorizes {{site.data.var.ece}} to send messages. +- `channel`—Name of the Slack channel {{site.data.var.ece}} sends notifications. +- `username`—Username {{site.data.var.ece}} uses to send notification messages in Slack. +- `min_level`—Minimum log level for notification messages. We recommend using `info`. ### Example email configuration @@ -94,7 +94,7 @@ log: min_level: "notice" ``` -- `to`—Email address {{site.data.var.ece}} sends notification messages. -- `from`—Email address for sending notification messages to recipients. -- `subject`—Description of the email. -- `min_level`—Minimum log level for notification messages. We recommend using `notice` or `warning`. +- `to`—Email address {{site.data.var.ece}} sends notification messages. +- `from`—Email address for sending notification messages to recipients. +- `subject`—Description of the email. +- `min_level`—Minimum log level for notification messages. We recommend using `notice` or `warning`. diff --git a/guides/v2.2/cloud/env/variables-build.md b/guides/v2.2/cloud/env/variables-build.md index 7b3f9d871ea..3f09b56bcb6 100644 --- a/guides/v2.2/cloud/env/variables-build.md +++ b/guides/v2.2/cloud/env/variables-build.md @@ -21,8 +21,8 @@ You can still use the `build_options.ini` file, but we recommend using the `.mag The following variables were removed in v2.2: -- `skip_di_clearing` -- `skip_di_compilation` +- `skip_di_clearing` +- `skip_di_compilation` ### `SCD_COMPRESSION_LEVEL` diff --git a/guides/v2.2/cloud/env/variables-deploy.md b/guides/v2.2/cloud/env/variables-deploy.md index 1e4d552d3b5..e2a24219c50 100644 --- a/guides/v2.2/cloud/env/variables-deploy.md +++ b/guides/v2.2/cloud/env/variables-deploy.md @@ -111,11 +111,11 @@ The following command returns a list of message queue consumers: Configure how consumers process messages from the message queue by choosing one of the following options: -- `false`—Consumers process available messages in the queue, close the TCP connection, and terminate. Consumers do not wait for additional messages to enter the queue, even if the number of processed messages is less than the `max_messages` value specified in the `CRON_CONSUMERS_RUNNER` deploy variable. +- `false`—Consumers process available messages in the queue, close the TCP connection, and terminate. Consumers do not wait for additional messages to enter the queue, even if the number of processed messages is less than the `max_messages` value specified in the `CRON_CONSUMERS_RUNNER` deploy variable. -- `true`—Consumers continue to process messages from the message queue until reaching the maximum number of messages (`max_messages`) specified in the `CRON_CONSUMERS_RUNNER` deploy variable before closing the TCP connection and terminating the consumer process. If the queue empties before reaching `max_messages`, the consumer waits for more messages to arrive. +- `true`—Consumers continue to process messages from the message queue until reaching the maximum number of messages (`max_messages`) specified in the `CRON_CONSUMERS_RUNNER` deploy variable before closing the TCP connection and terminating the consumer process. If the queue empties before reaching `max_messages`, the consumer waits for more messages to arrive. -{: .bs-callout .bs-callout-warning} +{: .bs-callout .bs-callout-warning } If you use workers to run consumers instead of using a cron job, set this variable to true. ```yaml @@ -129,7 +129,10 @@ stage: - **Default**—_Not set_ - **Version**—Magento 2.1.4 and later -Use the Project Web UI to set this value. When you move the database from one environment to another without an installation process, you need the corresponding cryptographic information. Magento uses the encryption key value set in the Web UI as the `crypt/key` value in the `env.php` file. This does not overwrite an existing encryption key value in the `env.php` file. +{:.bs-callout-warning} +You must set the `CRYPT_KEY` value through the Project Web UI instead of the `.magento.env.yaml` file to avoid exposing the key in the source code repository for your environment. See [Set environment and project variables]({{ page.baseurl }}/cloud/project/project-webint-basic.html#project-conf-env-var). + +When you move the database from one environment to another without an installation process, you need the corresponding cryptographic information. Magento uses the encryption key value set in the Web UI as the `crypt/key` value in the `env.php` file. This does not overwrite an existing encryption key value in the `env.php` file. ### `DATABASE_CONFIGURATION` diff --git a/guides/v2.2/cloud/env/variables-global.md b/guides/v2.2/cloud/env/variables-global.md index efdcd1cddec..bc8248b1037 100644 --- a/guides/v2.2/cloud/env/variables-global.md +++ b/guides/v2.2/cloud/env/variables-global.md @@ -78,8 +78,8 @@ stage: Enables or disables copying static view files to the `/init/` directory at the end of the build stage. If set to `true` files are not copied and HTML minification is available on request. Set this value to `true` to reduce downtime when deploying to Staging and Production environments. -- **`false`**—Copies the `view_preprocessed` directory to the `/init/` directory at the end of the build phase, and restores the directory in the `/var` directory at the beginning of the deploy phase. -- **`true`**—Enables on-demand HTML minification; does *not* copy the `var/view_preprocessed` to the `/init/` directory at the end of the build phase. +- **`false`**—Copies the `view_preprocessed` directory to the `/init/` directory at the end of the build phase, and restores the directory in the `/var` directory at the beginning of the deploy phase. +- **`true`**—Enables on-demand HTML minification; does *not* copy the `var/view_preprocessed` to the `/init/` directory at the end of the build phase. Add the `SKIP_HTML_MINIFICATION` environment variable to the `global` stage in the `.magento.env.yaml` file: diff --git a/guides/v2.2/cloud/env/variables-intro.md b/guides/v2.2/cloud/env/variables-intro.md index 57f1ce3cd93..622026af777 100644 --- a/guides/v2.2/cloud/env/variables-intro.md +++ b/guides/v2.2/cloud/env/variables-intro.md @@ -8,12 +8,12 @@ functional_areas: {{site.data.var.ece}} enables you to assign environment variables to override configuration options: -- [ADMIN]({{ page.baseurl }}/cloud/env/environment-vars_magento.html)—variables override project ADMIN variables -- [Global]({{ page.baseurl }}/cloud/env/variables-global.html)—variables affect each stage -- [Build]({{ page.baseurl }}/cloud/env/variables-build.html)—variables control build actions -- [Cloud]({{ page.baseurl }}/cloud/env/variables-cloud.html)—variables specific to {{site.data.var.ece}} -- [Deploy]({{ page.baseurl }}/cloud/env/variables-deploy.html)—variables control deploy actions -- [Post-deploy]({{ page.baseurl }}/cloud/env/variables-post-deploy.html)—variables control actions after deploy +- [ADMIN]({{ page.baseurl }}/cloud/env/environment-vars_magento.html)—variables override project ADMIN variables +- [Global]({{ page.baseurl }}/cloud/env/variables-global.html)—variables affect each stage +- [Build]({{ page.baseurl }}/cloud/env/variables-build.html)—variables control build actions +- [Cloud]({{ page.baseurl }}/cloud/env/variables-cloud.html)—variables specific to {{site.data.var.ece}} +- [Deploy]({{ page.baseurl }}/cloud/env/variables-deploy.html)—variables control deploy actions +- [Post-deploy]({{ page.baseurl }}/cloud/env/variables-post-deploy.html)—variables control actions after deploy Variables are _hierarchical_, which means that if a variable is not overridden, it is inherited from the parent environment. diff --git a/guides/v2.2/cloud/env/variables-post-deploy.md b/guides/v2.2/cloud/env/variables-post-deploy.md index 17a826442c4..0ac645461e7 100644 --- a/guides/v2.2/cloud/env/variables-post-deploy.md +++ b/guides/v2.2/cloud/env/variables-post-deploy.md @@ -17,8 +17,8 @@ stage: ### `TTFB_TESTED_PAGES` -- **Default**— `[]` (an empty array) -- **Version**—Magento 2.1.4 and later +- **Default**— `[]` (an empty array) +- **Version**—Magento 2.1.4 and later Configure _Time To First Byte_ (TTFB) testing for specified pages to test your {{ site.data.var.ece }} site performance. Specify an absolute path reference, or URL with protocol and host, for each page that requires the test. @@ -43,58 +43,58 @@ For redirected paths, the log reports the path of the redirect target instead of ### `WARM_UP_PAGES` -- **Default**— `index.php` -- **Version**—Magento 2.1.4 and later +- **Default**— `index.php` +- **Version**—Magento 2.1.4 and later Customize the list of pages used to preload the cache in the `post_deploy` stage. You must configure the post-deploy hook. See the [hooks section][] of the `.magento.app.yaml` file. -- **single pages**—Specify a single page to add to the cache. You do not have to indicate the default base URL. The following example caches the `BASE_URL/index.php` page: - - ```yaml - stage: - post-deploy: - WARM_UP_PAGES: - - "index.php" - ``` - -- **multiple domains**—List multiple URLs. The following example caches pages from two domains: - - ```yaml - stage: - post-deploy: - WARM_UP_PAGES: - - 'http://example1.com/test' - - 'http://example2.com/test' - ``` - -- **multiple pages**—Use the following format to cache multiple pages according to a specific regular expression pattern: - - ```terminal - :: - ``` - - - `entity_type`: Choose `category` or `cms-page` - - `pattern|url`: Use a `regexp` pattern or an exact match `url` to filter the URLs, or use an asterisk (\*) for all pages - - `store_id|store_code`: Use the ID or Code of the store or an asterisk (\*) for all stores - - The following example caches: - - all category pages for store with ID 1 - - category page `cars` for store with code `store_en` - - cms page `contact` for all stores - - any category page that contains `car_` and ends with `html` for store with ID 2 - - any category page that contains `tires_` for store with code `store_gb` - - ```yaml - stage: - post-deploy: - WARM_UP_PAGES: - - "category:*:1" - - "category:cars:store_en" - - "cms-page:contact:* - - "category:|car_.*?\\.html$|:2" - - "category:|tires_.*|:store_gb" - ``` +- **single pages**—Specify a single page to add to the cache. You do not have to indicate the default base URL. The following example caches the `BASE_URL/index.php` page: + + ```yaml + stage: + post-deploy: + WARM_UP_PAGES: + - "index.php" + ``` + +- **multiple domains**—List multiple URLs. The following example caches pages from two domains: + + ```yaml + stage: + post-deploy: + WARM_UP_PAGES: + - 'http://example1.com/test' + - 'http://example2.com/test' + ``` + +- **multiple pages**—Use the following format to cache multiple pages according to a specific regular expression pattern: + + ```terminal + :: + ``` + + - `entity_type`: Choose `category` or `cms-page` + - `pattern|url`: Use a `regexp` pattern or an exact match `url` to filter the URLs, or use an asterisk (\*) for all pages + - `store_id|store_code`: Use the ID or Code of the store or an asterisk (\*) for all stores + + The following example caches: + - all category pages for store with ID 1 + - category page `cars` for store with code `store_en` + - cms page `contact` for all stores + - any category page that contains `car_` and ends with `html` for store with ID 2 + - any category page that contains `tires_` for store with code `store_gb` + + ```yaml + stage: + post-deploy: + WARM_UP_PAGES: + - "category:*:1" + - "category:cars:store_en" + - "cms-page:contact:* + - "category:|car_.*?\\.html$|:2" + - "category:|tires_.*|:store_gb" + ``` [hooks section]: {{page.baseurl}}/cloud/project/project-conf-files_magento-app.html#hooks [CMS]: https://glossary.magento.com/cms/ -[Content elements]: https://docs.magento.com/m2/ce/user_guide/cms/content-elements.html \ No newline at end of file +[Content elements]: https://docs.magento.com/m2/ce/user_guide/cms/content-elements.html diff --git a/guides/v2.2/cloud/env/working-with-variables.md b/guides/v2.2/cloud/env/working-with-variables.md index b06f9d31110..e7688f1d56c 100644 --- a/guides/v2.2/cloud/env/working-with-variables.md +++ b/guides/v2.2/cloud/env/working-with-variables.md @@ -9,17 +9,17 @@ Environment variables apply to a specific environment or branch. An environment The following demonstrates a specific case for preventing a variable from being seen or inherited. You can only specify these options in the CLI. This case does not pertain to all available environment variables. When using the CLI, you must set variables using one of the following methods: -- **Project-specific variables**—To set the same value for all environments in your project, use the `magento-cloud project:variable:set` command. These variables are available at build and runtime in all environments. -- **Environment-specific variables**—To set a unique value for a specific environment, use the `magento-cloud variable:set` command. These variables are available at runtime and are inherited by child environments. You should specify the environment in your command using the `-e` option. +- **Project-specific variables**—To set the same value for all environments in your project, use the `magento-cloud project:variable:set` command. These variables are available at build and runtime in all environments. +- **Environment-specific variables**—To set a unique value for a specific environment, use the `magento-cloud variable:set` command. These variables are available at runtime and are inherited by child environments. You should specify the environment in your command using the `-e` option. {: .bs-callout-info } After setting project-specific variables, you must manually redeploy the remote environment for the change to take effect. Push the new commits to trigger a redeploy. Setting environment-specific variables in the Project Web Interface automatically redeploys the environment. Use the following options to prevent a variable from being seen or inherited: -- `--inheritable false`—disables inheritance for child environments. This is useful for setting production-only values on the master branch and allowing all other environments to use a project-level variable of the same name. -- `--sensitive true`—marks the variable as _non-readable_ in the Project Web Interface. You can not view the variable in the user interface; however, you can view the variable from the application container, like any other variable. +- `--inheritable false`—disables inheritance for child environments. This is useful for setting production-only values on the master branch and allowing all other environments to use a project-level variable of the same name. +- `--sensitive true`—marks the variable as _non-readable_ in the Project Web Interface. You can not view the variable in the user interface; however, you can view the variable from the application container, like any other variable. ```bash magento-cloud variable:create --name --value --inheritable false --sensitive true -``` \ No newline at end of file +``` diff --git a/guides/v2.2/cloud/howtos/custom-theme.md b/guides/v2.2/cloud/howtos/custom-theme.md index 992f303d324..8e55e40ff14 100644 --- a/guides/v2.2/cloud/howtos/custom-theme.md +++ b/guides/v2.2/cloud/howtos/custom-theme.md @@ -51,8 +51,8 @@ To install a theme manually: 1. Confirm the theme copied to the correct place. - * Storefront theme: `ls /app/design/frontend` - * Admin theme: `ls /app/design/adminhtml` + * Storefront theme: `ls /app/design/frontend` + * Admin theme: `ls /app/design/adminhtml` A sample follows: diff --git a/guides/v2.2/cloud/howtos/debug.md b/guides/v2.2/cloud/howtos/debug.md index 72ed2a4101c..67fe3b0f452 100644 --- a/guides/v2.2/cloud/howtos/debug.md +++ b/guides/v2.2/cloud/howtos/debug.md @@ -24,10 +24,10 @@ To run and use Xdebug, you will need the environment's SSH URL. You can locate t To configure Xdebug, you need to do the following: -* [Work in a branch](#branch) to push file updates -* [Enable Xdebug for environments](#enable) -* Configure your IDE, like [PhpStorm](#phpstorm) -* [Set up port forwarding](#port) +* [Work in a branch](#branch) to push file updates +* [Enable Xdebug for environments](#enable) +* Configure your IDE, like [PhpStorm](#phpstorm) +* [Set up port forwarding](#port) For configuring on Pro plan Staging and Production, you need to enter a [ticket for Staging and Production](#pro). @@ -60,7 +60,7 @@ You can enable Xdebug directly to all Starter environments and Pro Integration e - xdebug ``` -3. Optionally, modify the timeout. A default timeout of 300 seconds (5 minutes) is set in `php-fpm` and will end your session. To avoid the timeout, add the following lines to the `web:` section of `.magento.app.yaml`: +1. Optionally, modify the timeout. A default timeout of 300 seconds (5 minutes) is set in `php-fpm` and will end your session. To avoid the timeout, add the following lines to the `web:` section of `.magento.app.yaml`: ```yaml web: @@ -97,26 +97,26 @@ You need to configure [PhpStorm](https://www.jetbrains.com/phpstorm/) to properl 1. Open your PhpStorm project. 1. Open the settings for PhpStorm. - * On Mac, select **File** > **Preferences**. - * On Windows/Linux, select **File** > **Settings**. + * On Mac, select **File** > **Preferences**. + * On Windows/Linux, select **File** > **Settings**. 1. Expand and locate **Languages & Frameworks** > **PHP** > **Servers** section in settings. 1. Add a server configuration. Click the + to add a server. Notice at the top, it will show the project name in grey, just for reference. This will create a "server" configuration. This will be used to listen to port 9000 locally, which will be [forwarded](#port). 1. Configure settings for the new server: - * **Name**: enter the same as the hostname. This value is used in and must match the value for `PHP_IDE_CONFIG` variable in [Debug CLI commands](#debugcli). - * **Host**: enter `localhost` - * **Port**: enter 80 - * **Debugger**: set to Xdebug in the drop-down + * **Name**: enter the same as the hostname. This value is used in and must match the value for `PHP_IDE_CONFIG` variable in [Debug CLI commands](#debugcli). + * **Host**: enter `localhost` + * **Port**: enter 80 + * **Debugger**: set to Xdebug in the drop-down 1. Select the **Use path mappings** option. In the files/directories, the root of the project displays that you opened for the added server. 1. In the **Absolute path on the server** column, click ![Edit]({{ site.baseurl }}/common/images/install_docker_php-storm-edit.png){:width="15px"} (**Edit**) and add a setting based on the environment: - * For all Starter environments and Pro Integration environments, the remote path is `/app`. - * For Pro Staging and Production environments: + * For all Starter environments and Pro Integration environments, the remote path is `/app`. + * For Pro Staging and Production environments: - * Production: `/app//` - * Staging: `/app/_stg/` + * Production: `/app//` + * Staging: `/app/_stg/` ### Set up port forwarding {#port} @@ -124,8 +124,8 @@ You need to set up port forwarding. This is necessary to map the XDEBUG connecti To do any type of debugging, you must forward port 9000 from your {{site.data.var.ece}} server to your local machine. See one of the following sections: -* [Port forwarding on Mac or UNIX](#portmac) -* [Port forwarding on Windows](#portwindows) +* [Port forwarding on Mac or UNIX](#portmac) +* [Port forwarding on Windows](#portwindows) #### Port forwarding on Mac or UNIX {#portmac} @@ -148,9 +148,9 @@ To troubleshoot the connection: 1. Enter `who` to view a list of SSH sessions. 1. View existing SSH sessions by user. Be careful to not affect a user other than yourself! - * Integration: usernames are similar to `dd2q5ct7mhgus` - * Staging: usernames are similar to `dd2q5ct7mhgus_stg` - * Production: usernames are similar to `dd2q5ct7mhgus` + * Integration: usernames are similar to `dd2q5ct7mhgus` + * Staging: usernames are similar to `dd2q5ct7mhgus_stg` + * Production: usernames are similar to `dd2q5ct7mhgus` 1. For a user session that is older than yours, find the pseudo-terminal (PTS) value. For example, `pts/0`. 1. Kill the process ID (PID) corresponding to the PTS value using the following commands: @@ -183,17 +183,17 @@ To set up an SSH tunnel on Windows using Putty: 1. In the Category pane, click **Session**. 1. Enter the following information: - * **Hostname (or IP address)** field: Enter your Cloud server's [SSH URL]({{ page.baseurl }}/cloud/env/environments-ssh.html) - * **Port** field: Enter `22` + * **Hostname (or IP address)** field: Enter your Cloud server's [SSH URL]({{ page.baseurl }}/cloud/env/environments-ssh.html) + * **Port** field: Enter `22` ![Set up Putty]({{ site.baseurl }}/common/images/cloud-xdebug_putty-session.png){:width="350px"} 1. In the Category pane, click **Connection** > **SSH** > **Tunnels**. 1. Enter the following information: - * **Source port** field: Enter `9000` - * **Destination** field: Enter `127.0.0.1:9000` - * Click **Remote** + * **Source port** field: Enter `9000` + * **Destination** field: Enter `127.0.0.1:9000` + * Click **Remote** 1. Click **Add**. @@ -209,8 +209,8 @@ To set up an SSH tunnel on Windows using Putty: If an "unable to connect" error displays, verify all of the following: -* All Putty settings are correct -* You are running Putty on the machine on which your private {{site.data.var.ece}} SSH keys are located +* All Putty settings are correct +* You are running Putty on the machine on which your private {{site.data.var.ece}} SSH keys are located ### Configure Pro Staging and Production {#pro} @@ -246,8 +246,8 @@ To use Xdebug specifically on Pro plan Staging and Production environment, you c You need the following: -* SSH commands for accessing the environments. You can get this information, through the [Project Web Interface]({{ page.baseurl }}/cloud/project/projects.html) and your project spreadsheet. -* The `xdebug_key` value we set when configuring the Staging and Pro environments +* SSH commands for accessing the environments. You can get this information, through the [Project Web Interface]({{ page.baseurl }}/cloud/project/projects.html) and your project spreadsheet. +* The `xdebug_key` value we set when configuring the Staging and Pro environments Set up an SSH tunnel to Staging or Production environment: @@ -344,15 +344,15 @@ Due to your environments being read-only, you need to pull code locally from an The method you choose is up to you. You have the following options: -* Check out code from Git and run `composer install` +* Check out code from Git and run `composer install` This method works unless `composer.json` references packages in private repositories to which you do not have access. This method results in getting the entire Magento codebase. -* Copy the `vendor`, `app`, `pub`, `lib`, and `setup` directories +* Copy the `vendor`, `app`, `pub`, `lib`, and `setup` directories This method results in your having all code you can possibly test. Depending on how many static assets you have, it could result in a long transfer with a large volume of files. -* Copy the `vendor` directory only +* Copy the `vendor` directory only Because most Magento and third-party code is in the `vendor` directory, this method is likely to result in good testing although you won't be testing the entire codebase. @@ -395,9 +395,9 @@ Due to not having access to manually restart the nginx server, you need to locat 1. Enter `who` to view a list of SSH sessions. 1. View existing SSH sessions by user. Be careful to not affect a user other than yourself! - * Integration: usernames are similar to `dd2q5ct7mhgus` - * Staging: usernames are similar to `dd2q5ct7mhgus_stg` - * Production: usernames are similar to `dd2q5ct7mhgus` + * Integration: usernames are similar to `dd2q5ct7mhgus` + * Staging: usernames are similar to `dd2q5ct7mhgus_stg` + * Production: usernames are similar to `dd2q5ct7mhgus` 1. For a user session that is older than yours, find the pseudo-terminal (PTS) value. For example, `pts/0`. 1. Kill the process ID (PID) corresponding to the PTS value using the following commands: diff --git a/guides/v2.2/cloud/howtos/environment-tutorial-env-merge.md b/guides/v2.2/cloud/howtos/environment-tutorial-env-merge.md index a045c44fa64..02f53d8b279 100644 --- a/guides/v2.2/cloud/howtos/environment-tutorial-env-merge.md +++ b/guides/v2.2/cloud/howtos/environment-tutorial-env-merge.md @@ -71,8 +71,8 @@ You must be a [project administrator]({{ page.baseurl }}/cloud/project/user-admi This section discusses how to optionally delete an environment in the following ways: -* Make the environment *inactive* but let it remain in the project -* Delete the environment entirely and remove it from the project +* Make the environment *inactive* but let it remain in the project +* Delete the environment entirely and remove it from the project To delete a environment: diff --git a/guides/v2.2/cloud/howtos/how-to.md b/guides/v2.2/cloud/howtos/how-to.md index 7235dbc476e..36e680273c9 100644 --- a/guides/v2.2/cloud/howtos/how-to.md +++ b/guides/v2.2/cloud/howtos/how-to.md @@ -17,13 +17,13 @@ Have suggestions? Open [an issue](https://github.com/magento/devdocs/issues) or Current topics: -* Install components, upgrade, update +* Install components, upgrade, update - * [Install, manage, and upgrade modules]({{ page.baseurl }}/cloud/howtos/install-components.html) - * [Test a Magento patch before deploying it]({{ page.baseurl }}/cloud/project/project-upgrade.html) + * [Install, manage, and upgrade modules]({{ page.baseurl }}/cloud/howtos/install-components.html) + * [Test a Magento patch before deploying it]({{ page.baseurl }}/cloud/project/project-upgrade.html) -* Environments +* Environments - * [Merge and delete an environment]({{ page.baseurl }}/cloud/howtos/environment-tutorial-env-merge.html) + * [Merge and delete an environment]({{ page.baseurl }}/cloud/howtos/environment-tutorial-env-merge.html) -* [Install optional sample data]({{ page.baseurl }}/cloud/howtos/sample-data.html) +* [Install optional sample data]({{ page.baseurl }}/cloud/howtos/sample-data.html) diff --git a/guides/v2.2/cloud/howtos/install-components.md b/guides/v2.2/cloud/howtos/install-components.md index 3065510b2c0..c0e594a13ca 100644 --- a/guides/v2.2/cloud/howtos/install-components.md +++ b/guides/v2.2/cloud/howtos/install-components.md @@ -14,9 +14,9 @@ When adding extensions to {{site.data.var.ece}}, you should add the code to a Gi Extensions include the following: -* Modules to extend Magento capabilities, with options through Magento Marketplace and directly through company sites -* Themes to change the look and feel of your storefronts -* Language packages to localize the storefront and Admin +* Modules to extend Magento capabilities, with options through Magento Marketplace and directly through company sites +* Themes to change the look and feel of your storefronts +* Language packages to localize the storefront and Admin These instructions walk through extension installation purchased from Magento Marketplace. You can use the same procedure to install any extension with the extension's Composer name. To find it, open the extension's `composer.json` file and note the values for `"name"` and `"version"`. @@ -31,11 +31,11 @@ We recommend using a branch for adding or updating, configuring, and testing you ## Install an extension {#install} [Extension installation](#install) uses the following steps: -1. Purchase an extension or module from [Magento Marketplace](https://marketplace.magento.com) or another site. -1. [Create a branch](#getstarted) to work with the files. -1. [Get the extension's Composer name](#compose) and version from your purchase history. -1. In your local {{site.data.var.ece}} project, [update the Magento `composer.json`](#update) file with the name and version of the extension and add the code to Git. The code builds, deploys, and is available through the environment. -1. [Verify](#verify) the extension installed properly. +1. Purchase an extension or module from [Magento Marketplace](https://marketplace.magento.com) or another site. +1. [Create a branch](#getstarted) to work with the files. +1. [Get the extension's Composer name](#compose) and version from your purchase history. +1. In your local {{site.data.var.ece}} project, [update the Magento `composer.json`](#update) file with the name and version of the extension and add the code to Git. The code builds, deploys, and is available through the environment. +1. [Verify](#verify) the extension installed properly. ### Step 1: Get the extension's Composer name and version {#compose} @@ -49,8 +49,8 @@ When adding the module to `composer.json`, the file [`app/etc/config.php`]({{ pa To update `composer.json`: -1. If you haven't done so already, change to your environment root directory. -1. Enter the following commands to update it: +1. If you haven't done so already, change to your environment root directory. +1. Enter the following commands to update it: ```bash composer require : --no-update @@ -70,8 +70,8 @@ To update `composer.json`: composer update ``` -1. Wait for project dependencies to update. -1. Enter the following commands in the order shown to commit your changes, including `composer.lock`: +1. Wait for project dependencies to update. +1. Enter the following commands in the order shown to commit your changes, including `composer.lock`: ```bash git add -A @@ -94,15 +94,15 @@ When installing and adding the module, you must add the `composer.lock` to your To verify the extension installed properly, you can check its functionality in the Magento Admin or you can view enabled modules using the CLI: -1. Open a terminal. -1. [Checkout the branch]({{ page.baseurl }}/cloud/before/before-setup-env-2_clone.html#branch) where the module is installed. -1. List all enabled modules: +1. Open a terminal. +1. [Checkout the branch]({{ page.baseurl }}/cloud/before/before-setup-env-2_clone.html#branch) where the module is installed. +1. List all enabled modules: ```bash php bin/magento module:status ``` -1. Verify the extension is listed. +1. Verify the extension is listed. The extension name is in the format `_`. It will not be in the same format as the Composer name. @@ -116,34 +116,34 @@ To enable or disable extensions, you must begin those changes on your local in a Trying to enable and disable extensions not following this method can lead to permissions and other issues. -1. [Work in a branch](#getstarted) to update `config.php`. -1. In a terminal, access your local development environment. -1. List all module. +1. [Work in a branch](#getstarted) to update `config.php`. +1. In a terminal, access your local development environment. +1. List all module. ```bash php bin/magento module:status ``` -1. Enable a module.This command updates the `config.php` file with the enabled status of the module. +1. Enable a module.This command updates the `config.php` file with the enabled status of the module. ```bash php bin/magento module:enable ``` -1. Disable a module. This command updates the `config.php` file with the disable status of the module. +1. Disable a module. This command updates the `config.php` file with the disable status of the module. ```bash php bin/magento module:disable ``` -1. Verify the status of a module: +1. Verify the status of a module: ```bash php bin/magento module:status ``` -1. Push your updates to the Git branch. -1. [Complete deployment]({{ page.baseurl }}/cloud/live/stage-prod-live.html) to Integration for testing, then Staging for testing, and finally Production. +1. Push your updates to the Git branch. +1. [Complete deployment]({{ page.baseurl }}/cloud/live/stage-prod-live.html) to Integration for testing, then Staging for testing, and finally Production. ### Modify configurations {#configure} @@ -153,22 +153,22 @@ You update configurations according to [Configuration Management]({{ site.baseur You should have a branch to work in when updating your extension. These instructions use composer to update the files. Before you continue, you must: -* Know the extension's Composer name and version -* Know the extension is compatible with your project and {{site.data.var.ece}} version. In particular, check the required PHP version. +* Know the extension's Composer name and version +* Know the extension is compatible with your project and {{site.data.var.ece}} version. In particular, check the required PHP version. To update an extension: -1. If you haven't done so already, change to your environment root directory. -1. Open `composer.json` in a text editor. -1. Locate your extension and update the version. -1. Save your changes to `composer.json` and exit the text editor. -1. Update project dependencies: +1. If you haven't done so already, change to your environment root directory. +1. Open `composer.json` in a text editor. +1. Locate your extension and update the version. +1. Save your changes to `composer.json` and exit the text editor. +1. Update project dependencies: ```bash composer update ``` -1. Enter the following commands in the order to commit the changes and deploy the project, including `composer.lock`: +1. Enter the following commands in the order to commit the changes and deploy the project, including `composer.lock`: ```bash git add -A @@ -176,6 +176,6 @@ To update an extension: git push origin ``` -1. Wait for the project to deploy and verify in your environment. +1. Wait for the project to deploy and verify in your environment. If there are errors, see [Component deployment failure]({{ page.baseurl }}/cloud/trouble/trouble_comp-deploy-fail.html). diff --git a/guides/v2.2/cloud/integrations/github-integration.md b/guides/v2.2/cloud/integrations/github-integration.md index 68a6450966a..09372e4078d 100644 --- a/guides/v2.2/cloud/integrations/github-integration.md +++ b/guides/v2.2/cloud/integrations/github-integration.md @@ -26,37 +26,37 @@ You must be a member of a group with write-access to the GitHub repository, so t You need to clone your {{site.data.var.ece}} project from an existing environment and migrate the project branches to a new, empty GitHub repository, preserving the same branch names. It is **critical** to retain an identical Git tree, so that you do not lose any existing environments or branches in your {{site.data.var.ece}} project. -1. From the terminal, log in to your {{site.data.var.ece}} project. +1. From the terminal, log in to your {{site.data.var.ece}} project. ```bash magento-cloud login ``` -1. List your projects and copy the project ID. +1. List your projects and copy the project ID. ```bash magento-cloud project:list ``` -1. Clone the project to your local environment. +1. Clone the project to your local environment. ```bash magento-cloud project:get ``` -1. Add your GitHub repository as a remote. +1. Add your GitHub repository as a remote. ```bash git remote add origin git@github.com:/.git ``` -1. Delete the default `magento` remote. +1. Delete the default `magento` remote. ```bash git remote remove magento ``` -1. Verify that you added the GitHub remote correctly. +1. Verify that you added the GitHub remote correctly. ```bash git remote -v @@ -70,7 +70,7 @@ You need to clone your {{site.data.var.ece}} project from an existing environmen ``` {: .no-copy} -1. Push the project files to your new GitHub repository. Remember to keep all branch names the same. +1. Push the project files to your new GitHub repository. Remember to keep all branch names the same. ```bash git push -u origin master @@ -78,7 +78,7 @@ You need to clone your {{site.data.var.ece}} project from an existing environmen If you are starting with a new GitHub repository, you may have to use the `-f` option, because the remote repository does not match your local copy. -1. Verify that your GitHub repository contains all of your project files. +1. Verify that your GitHub repository contains all of your project files. ## Enable the GitHub integration @@ -90,63 +90,63 @@ The following command overwrites _all_ code in your {{site.data.var.ece}} projec {:.procedure} To enable the GitHub integration: -1. Enable the integration. +1. Enable the integration. - ```bash - magento-cloud integration:add --type=github --project= --token= {--repository=USER/REPOSITORY | --repository=ORGANIZATION/REPOSITORY} [--build-pull-requests={true|false} --fetch-branches={true|false} - ``` + ```bash + magento-cloud integration:add --type=github --project= --token= {--repository=USER/REPOSITORY | --repository=ORGANIZATION/REPOSITORY} [--build-pull-requests={true|false} --fetch-branches={true|false} + ``` - - ``—Your {{site.data.var.ece}} project ID - - ``—The personal access token you generated for GitHub - - `--repository=USER/REPOSITORY`—Your personal GitHub repository name - - `--repository=ORGANIZATION/REPOSITORY`—The organization repository name - - `--build-pull-requests`—An _optional_ parameter that instructs {{site.data.var.ece}} to deploy after you merge a pull request (`true` by default) - - `--fetch-branches`—An _optional_ parameter that causes {{site.data.var.ece}} to track branches and deploy after you update a branch (`true` by default) + - ``—Your {{site.data.var.ece}} project ID + - ``—The personal access token you generated for GitHub + - `--repository=USER/REPOSITORY`—Your personal GitHub repository name + - `--repository=ORGANIZATION/REPOSITORY`—The organization repository name + - `--build-pull-requests`—An _optional_ parameter that instructs {{site.data.var.ece}} to deploy after you merge a pull request (`true` by default) + - `--fetch-branches`—An _optional_ parameter that causes {{site.data.var.ece}} to track branches and deploy after you update a branch (`true` by default) - **Example 1**: Enable the GitHub integration for a personal, private repository: + **Example 1**: Enable the GitHub integration for a personal, private repository: - ```bash - magento-cloud integration:add --type=github --project=ov58dlacU2e --token= --repository=myUserName/myrepo - ``` + ```bash + magento-cloud integration:add --type=github --project=ov58dlacU2e --token= --repository=myUserName/myrepo + ``` - **Example 2**: Enable the GitHub integration for an organization repository: + **Example 2**: Enable the GitHub integration for an organization repository: - ```bash - magento-cloud integration:add --type=github --project=ov58dlacU2e --token= --repository=Magento/teamrepo - ``` + ```bash + magento-cloud integration:add --type=github --project=ov58dlacU2e --token= --repository=Magento/teamrepo + ``` -1. Enter the required information when prompted. +1. Enter the required information when prompted. -1. Copy the **Payload URL** displayed by the return output. +1. Copy the **Payload URL** displayed by the return output. - ```terminal - Created integration wp2f2thlmxwcg (type: github) - Repository: myUserName/myrepo - Build PRs: yes - Fetch branches: yes - Payload URL: https://us.magento.cloud/api/projects/ov58dlacU2e/integrations/wO8a0eoamxwcg/hook - ``` - {: .no-copy} + ```terminal + Created integration wp2f2thlmxwcg (type: github) + Repository: myUserName/myrepo + Build PRs: yes + Fetch branches: yes + Payload URL: https://us.magento.cloud/api/projects/ov58dlacU2e/integrations/wO8a0eoamxwcg/hook + ``` + {: .no-copy} ## Add the webhook in GitHub In order to communicate events—such as a push—with your Cloud Git server, you need to create a webhook for your GitHub repository: -1. In your GitHub repository, click the **Settings** tab. +1. In your GitHub repository, click the **Settings** tab. -1. In the left navigation bar, click **Webhooks**. +1. In the left navigation bar, click **Webhooks**. -1. In the _Webhooks_ pane, click **Add webhook**. +1. In the _Webhooks_ pane, click **Add webhook**. -1. In the _Webhooks/Add webhook_ form, edit the following fields: +1. In the _Webhooks/Add webhook_ form, edit the following fields: - - **Payload URL**: Enter the URL returned when you enabled the GitHub integration. - - **Content type**: Choose **application/json** from the list. - - **Secret**: Enter a verification secret. - - **Which events would you like to trigger this webhook?**: Select **Send me everything**. - - Select the **Active** checkbox. + - **Payload URL**: Enter the URL returned when you enabled the GitHub integration. + - **Content type**: Choose **application/json** from the list. + - **Secret**: Enter a verification secret. + - **Which events would you like to trigger this webhook?**: Select **Send me everything**. + - Select the **Active** checkbox. -1. Click **Add webhook**. +1. Click **Add webhook**. ## Test the integration diff --git a/guides/v2.2/cloud/live/go-live-checklist.md b/guides/v2.2/cloud/live/go-live-checklist.md index d5878a2fbbf..4d192897554 100644 --- a/guides/v2.2/cloud/live/go-live-checklist.md +++ b/guides/v2.2/cloud/live/go-live-checklist.md @@ -29,20 +29,20 @@ This does not work for an [apex domain](https://blog.cloudflare.com/zone-apex-na The following list contains examples of DNS providers for informational purposes. Use your preferred DNS provider. -* CNAME with ALIAS record from [Dyn](http://dyn.com) -* ANAME record on [DNS Made Easy](http://www.dnsmadeeasy.com) -* ANAME at [easyDNS](https://www.easydns.com) -* ACNAME at [CloudFlare](https://www.cloudflare.com) -* ALIAS at [PointDNS](https://pointhq.com) +* CNAME with ALIAS record from [Dyn](http://dyn.com) +* ANAME record on [DNS Made Easy](http://www.dnsmadeeasy.com) +* ANAME at [easyDNS](https://www.easydns.com) +* ACNAME at [CloudFlare](https://www.cloudflare.com) +* ALIAS at [PointDNS](https://pointhq.com) Many other DNS providers also offer workarounds to accomplish this goal. The most common is to add a CNAME record for the `www` host on the domain and then use the DNS provider's redirect service to redirect the apex over to the `www` version of the domain. Consult your DNS provider for more information. Another option for apex domain is to add A records, which maps a domain name to the Fastly IP addresses: -* `151.101.1.124` -* `151.101.65.124` -* `151.101.129.124` -* `151.101.193.124` +* `151.101.1.124` +* `151.101.65.124` +* `151.101.129.124` +* `151.101.193.124` ### TLS and Fastly {#fastly-tls} @@ -56,22 +56,22 @@ Make a final pass for any Production configurations in the store(s). If you need The following are recommended changes and checks: -* Outgoing email has been tested -* Base URL and Base Admin URL are set correctly -* Change the default Magento Admin password +* Outgoing email has been tested +* Base URL and Base Admin URL are set correctly +* Change the default Magento Admin password See [Configuring Admin Security](http://docs.magento.com/m2/ee/user_guide/stores/security-admin.html) for further information on Admin configurations. -* Optimize all images for the web -* [Enable minification](http://docs.magento.com/m2/ee/user_guide/system/file-optimization.html) for JS, CSS, and HTTP +* Optimize all images for the web +* [Enable minification](http://docs.magento.com/m2/ee/user_guide/system/file-optimization.html) for JS, CSS, and HTTP ## Verify Fastly caching {#verifyfastly} Test and verify Fastly caching is correctly working in Production. For detailed tests and checks, see [Fastly testing]({{ page.baseurl }}/cloud/live/stage-prod-test.html#fastly). -* Make sure that pages are being correctly cached in the page cache and Fastly -* Make sure the Fastly Extension is up-to-date -* Make sure the Fastly VCL is up-to-date +* Make sure that pages are being correctly cached in the page cache and Fastly +* Make sure the Fastly Extension is up-to-date +* Make sure the Fastly VCL is up-to-date ## Performance testing {#performance} @@ -79,11 +79,11 @@ We recommend that you review the [Magento Performance Toolkit]({{ site.mage2blob You can also test using the following 3rd party options: -* [Siege](https://www.joedog.org/siege-home/): Traffic shaping and testing software to push your store to the limit. Hit your site with a configurable number of simulated clients. Siege supports basic authentication, cookies, HTTP, HTTPS and FTP protocols. -* [Jmeter](http://jmeter.apache.org/): Excellent load testing to help gauge performance for spiked traffic, like for flash sales. Create custom tests to run against your site. -* [New Relic](https://support.newrelic.com/) (provided): Helps locate processes and areas of the site causing slow performance with tracked time spent per action like transmitting data, queries, Redis, and so on. -* [Blackfire]({{ page.baseurl }}/cloud/project/project-integrate-blackfire.html) (provided): Helps track through the issues New Relic finds and helps you dig deeper into the issue for specifics. Blackfire profiles the environment and helps locate bottlenecks in depth: process, method call, query, load, and so on. -* [WebPageTest](https://www.webpagetest.org/) and [Pingdom](https://www.pingdom.com/): Real-time analysis of your site pages load time with different origin locations. Pingdom may cost a fee. WebPageTest is a free tool. +* [Siege](https://www.joedog.org/siege-home/): Traffic shaping and testing software to push your store to the limit. Hit your site with a configurable number of simulated clients. Siege supports basic authentication, cookies, HTTP, HTTPS and FTP protocols. +* [Jmeter](http://jmeter.apache.org/): Excellent load testing to help gauge performance for spiked traffic, like for flash sales. Create custom tests to run against your site. +* [New Relic](https://support.newrelic.com/) (provided): Helps locate processes and areas of the site causing slow performance with tracked time spent per action like transmitting data, queries, Redis, and so on. +* [Blackfire]({{ page.baseurl }}/cloud/project/project-integrate-blackfire.html) (provided): Helps track through the issues New Relic finds and helps you dig deeper into the issue for specifics. Blackfire profiles the environment and helps locate bottlenecks in depth: process, method call, query, load, and so on. +* [WebPageTest](https://www.webpagetest.org/) and [Pingdom](https://www.pingdom.com/): Real-time analysis of your site pages load time with different origin locations. Pingdom may cost a fee. WebPageTest is a free tool. {:.ref-header} Next step diff --git a/guides/v2.2/cloud/live/launch-steps.md b/guides/v2.2/cloud/live/launch-steps.md index 5a1a41b7b7b..07a3ef37dff 100644 --- a/guides/v2.2/cloud/live/launch-steps.md +++ b/guides/v2.2/cloud/live/launch-steps.md @@ -31,9 +31,9 @@ The Time-to-Live changed value is important for checking your changed domain. Wh To cut over to the new site: 1. Access your DNS service. -2. Update your A and CNAME records for your domains and hostnames. -3. Wait for the TTL time to pass and restart your web browser. -4. Access your store using the storefront domain. +1. Update your A and CNAME records for your domains and hostnames. +1. Wait for the TTL time to pass and restart your web browser. +1. Access your store using the storefront domain. ## Test the live store {#test} diff --git a/guides/v2.2/cloud/live/live-prot.md b/guides/v2.2/cloud/live/live-prot.md index 95d2167f4f7..6154f0e65e3 100644 --- a/guides/v2.2/cloud/live/live-prot.md +++ b/guides/v2.2/cloud/live/live-prot.md @@ -20,18 +20,18 @@ Outdated software often contains exploits we protect against by partially blocki We analyze the code of your application: -* When you push new code to Git -* When new vulnerabilities are added to our database +* When you push new code to Git +* When new vulnerabilities are added to our database If a critical vulnerability is detected in your application, it rejects the Git push. We run two types of blocks: -* For development websites, we run complete blocks. +* For development websites, we run complete blocks. The error message accompanying `git push` provides detailed information about the vulnerability. -* For production websites, we run a "partial block" that allows the site to stay mostly online. +* For production websites, we run a "partial block" that allows the site to stay mostly online. Depending on the nature of the vulnerability, parts of a request, such as a query string, cookies or any additional headers, might be removed from GET requests. All other requests may be blocked entirely—this could apply to logging in, form submission, or product [checkout](https://glossary.magento.com/checkout). diff --git a/guides/v2.2/cloud/live/live-sanity-check.md b/guides/v2.2/cloud/live/live-sanity-check.md index c58c8018b67..8476ea66605 100644 --- a/guides/v2.2/cloud/live/live-sanity-check.md +++ b/guides/v2.2/cloud/live/live-sanity-check.md @@ -10,9 +10,9 @@ Before pushing your code to your [Starter]({{ page.baseurl }}/cloud/basic-inform These tasks walk through: -* Complete development on your local -* Complete a full build and deploy process on your local (deploys to the associated active development environment) -* Test fully before continuing deployment to Staging +* Complete development on your local +* Complete a full build and deploy process on your local (deploys to the associated active development environment) +* Test fully before continuing deployment to Staging For more information on the full five step process, see the [Deployment process]({{ page.baseurl }}/cloud/reference/discover-deploy.html). @@ -27,11 +27,11 @@ If you modified your `composer.json` file to add modules, we recommend running t Your Git branch must have the following files for building and deploying to your local, Integration, Staging, and Production environments: -* `auth.json` in the root Magento directory. This file includes the Magento authentication keys entered when creating the project. If you need to verify the file and settings, see [Troubleshoot deployment]({{ page.baseurl }}/cloud/trouble/troubleshoot-deployment.html). -* `config.php` if you use [Configuration Management]({{ page.baseurl }}/cloud/live/sens-data-over.html) to manage Magento configuration settings -* [`.magento.app.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html) is updated and saved in the root directory -* [`services.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_services.html) is updated and saved in `magento/` -* [`routes.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_routes.html) is updated and saved in `magento/` +* `auth.json` in the root Magento directory. This file includes the Magento authentication keys entered when creating the project. If you need to verify the file and settings, see [Troubleshoot deployment]({{ page.baseurl }}/cloud/trouble/troubleshoot-deployment.html). +* `config.php` if you use [Configuration Management]({{ page.baseurl }}/cloud/live/sens-data-over.html) to manage Magento configuration settings +* [`.magento.app.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html) is updated and saved in the root directory +* [`services.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_services.html) is updated and saved in `magento/` +* [`routes.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_routes.html) is updated and saved in `magento/` ## Test build your code locally before pushing {#test-build} @@ -76,16 +76,16 @@ To push code to your remote environment: git push origin ``` -1. The build and deploy phases begin. Wait for the deployment to complete. +1. The build and deploy phases begin. Wait for the deployment to complete. ## Build phase {#build} During the [build phase]({{page.baseurl}}/cloud/reference/discover-deploy.html#cloud-deploy-over-phases-build), we perform the following tasks: -* Apply patches distributed to all {{site.data.var.ece}} accounts -* Apply patches we provided specifically to you -* Enable modules to build -* Compile code and the [dependency injection](https://glossary.magento.com/dependency-injection) configuration +* Apply patches distributed to all {{site.data.var.ece}} accounts +* Apply patches we provided specifically to you +* Enable modules to build +* Compile code and the [dependency injection](https://glossary.magento.com/dependency-injection) configuration The build also checks for a [configuration file]({{ page.baseurl }}/cloud/live/sens-data-over.html). If the file exists, the static file deployment is also completed during the build stage. If not, it is completed in the deployment stage. @@ -171,10 +171,10 @@ We strongly recommend you complete your testing in an Integration or Staging env We highly recommend having Magento already installed prior to deployment. During the [deployment phase]({{ page.baseurl }}/cloud/reference/discover-deploy.html#cloud-deploy-over-phases-hook), we perform the following tasks: -* Install the Magento application if needed -* If the Magento application is installed, upgrade components -* Clear the [cache](https://glossary.magento.com/cache) -* Set the Magento application for [`production`]({{ page.baseurl }}/config-guide/bootstrap/magento-modes.html#production-mode) mode +* Install the Magento application if needed +* If the Magento application is installed, upgrade components +* Clear the [cache](https://glossary.magento.com/cache) +* Set the Magento application for [`production`]({{ page.baseurl }}/config-guide/bootstrap/magento-modes.html#production-mode) mode {:.procedure} To deploy your site: diff --git a/guides/v2.2/cloud/live/live.md b/guides/v2.2/cloud/live/live.md index 8b764ee701e..40830aea966 100644 --- a/guides/v2.2/cloud/live/live.md +++ b/guides/v2.2/cloud/live/live.md @@ -17,9 +17,9 @@ If you checked this information prior to deploying and testing in Staging, consi You need the following information to go live: -* CNAME record information for configuring the DNS -* List of all storefront domains to add to the certificate -* SSL certificate if not using the shared-SSL (requires option purchase) +* CNAME record information for configuring the DNS +* List of all storefront domains to add to the certificate +* SSL certificate if not using the shared-SSL (requires option purchase) As part of {{site.data.var.ece}} subscription, you have access to a shared Domain-Validated SSL (HTTPS) certificate that is issued by GlobalSign. This certificate is shared with other merchants and included for all Cloud accounts. If you want to deploy an Extended Validation SSL (not-shared) certificate for your company, this option can be purchased when you first sign-up with Magento Commerce. If you need to purchase this option, contact your account representative. @@ -27,20 +27,20 @@ As part of {{site.data.var.ece}} subscription, you have access to a shared Domai We strongly recommend testing in these environments due to the complexity of your custom code, themes, Magento extensions, 3rd party integrations all working together to provide a single or multiple stores. Every deployment can differ between merchants. The following are common issues you can find early and solve before touching Production: -* Staging supports all Production services, features, database data, technology stack, architecture, and more. It mirrors Production, which means if errors occur in Staging, you have a **warning before it occurs in Production**. -* Extensions may need to be installed and configured in a specific order. Some extensions touch similar pieces of code in the back and frontend, sometimes clashing and causing errors. -* Extensions typically are heavily tested in [Developer mode]({{ page.baseurl }}/config-guide/bootstrap/magento-modes.html), not Production mode. When you move to Staging and use Production mode, you may find error and surprises between extensions, your custom code, and Magento. -* Configurations and code may work great in your developer Integration environments and run into issues in Staging and Production. Working in your local does not confirm it works perfectly in production. -* Integration environments do not have all the incredible services available in Staging and Production, like Fastly, New Relic, and Blackfire. -* [Fully test]({{ page.baseurl }}/cloud/live/stage-prod-test.html#loadtest) your site with a variety of tools in Staging for load, stress, performance, and site assets -* Integration environments may only have databases populated with test data, not matching a production-like environment +* Staging supports all Production services, features, database data, technology stack, architecture, and more. It mirrors Production, which means if errors occur in Staging, you have a **warning before it occurs in Production**. +* Extensions may need to be installed and configured in a specific order. Some extensions touch similar pieces of code in the back and frontend, sometimes clashing and causing errors. +* Extensions typically are heavily tested in [Developer mode]({{ page.baseurl }}/config-guide/bootstrap/magento-modes.html), not Production mode. When you move to Staging and use Production mode, you may find error and surprises between extensions, your custom code, and Magento. +* Configurations and code may work great in your developer Integration environments and run into issues in Staging and Production. Working in your local does not confirm it works perfectly in production. +* Integration environments do not have all the incredible services available in Staging and Production, like Fastly, New Relic, and Blackfire. +* [Fully test]({{ page.baseurl }}/cloud/live/stage-prod-test.html#loadtest) your site with a variety of tools in Staging for load, stress, performance, and site assets +* Integration environments may only have databases populated with test data, not matching a production-like environment ## Set up Magento Security Scan Tool {#security-scan} The Magento Security Scan Tool enables you to regularly monitor your store websites and receive updates for known security risks, malware, and out of date software. This is a free service available for all implementations and versions of {{site.data.var.ece}}. You access the tool through your [Magento Marketplace account](https://account.magento.com/customer/account/login). -* Monitor your sites security status and applied security updates -* Receive security updates and site specific notifications +* Monitor your sites security status and applied security updates +* Receive security updates and site specific notifications For detailed instructions to set up and perform scans, see the [Magento User Guide](http://docs.magento.com/m2/ee/user_guide/magento/security-scan.html). Typically, you want to start using this tool as you enter UAT testing. @@ -49,13 +49,13 @@ Each site to be scanned must be registered through Magento Security Scan tab. Th To scan your site: 1. Access your [Magento Marketplace account](https://account.magento.com/customer/account/login). -2. Click the Security Scan tab and select **Go to Security Scan**. -3. In the **Actions** column for the site, select Run Scan. A notification status displays the scheduled scan. +1. Click the Security Scan tab and select **Go to Security Scan**. +1. In the **Actions** column for the site, select Run Scan. A notification status displays the scheduled scan. To review the report: 1. When the report completes, a notification displays. -2. In the site row, select the report you want to view from the **Reports** column. The order is latest to oldest. +1. In the site row, select the report you want to view from the **Reports** column. The order is latest to oldest. The report lists issues including Failed Scans, Unidentified Results, and Successful Scans. Each entry provides detailed information for the scan, a list of issues to investigate, and actions to take. Some of these actions may require downloading and installing security patches. You can add those to a development branch on your local workstation. @@ -65,5 +65,5 @@ Scan results include a general label that describes whether a site passed or fai You are ready to start go live steps: -* [Go live checklist]({{ page.baseurl }}/cloud/live/go-live-checklist.html) -* [Launch steps]({{ page.baseurl }}/cloud/live/launch-steps.html) +* [Go live checklist]({{ page.baseurl }}/cloud/live/go-live-checklist.html) +* [Launch steps]({{ page.baseurl }}/cloud/live/launch-steps.html) diff --git a/guides/v2.2/cloud/live/paypal-onboarding.md b/guides/v2.2/cloud/live/paypal-onboarding.md index db305fd5621..a8b4f3d80e4 100644 --- a/guides/v2.2/cloud/live/paypal-onboarding.md +++ b/guides/v2.2/cloud/live/paypal-onboarding.md @@ -15,8 +15,8 @@ functional_areas: You can configure either the sandbox or production account in every environment: -* For Integration and Staging environments, we recommend setting Sandbox credentials. -* For your Production environment, you can set Sandbox credentials for initial testing, then replace with live production credentials for a launched store. +* For Integration and Staging environments, we recommend setting Sandbox credentials. +* For your Production environment, you can set Sandbox credentials for initial testing, then replace with live production credentials for a launched store. ## PayPal account {#accounts} @@ -24,8 +24,8 @@ While we recommend having a PayPal merchant account prepared and configured, you PayPal on-boarding supports connecting with the following accounts: -* PayPal Business account -* PayPal personal account, converting to a Business account. If you have an existing personal PayPal account, you can login with those credentials and upgrade this account to a business account as you complete the sync. +* PayPal Business account +* PayPal personal account, converting to a Business account. If you have an existing personal PayPal account, you can login with those credentials and upgrade this account to a business account as you complete the sync. If you do not have an existing PayPal account, you have an option to create a new one. Enter an e-mail address for a new account. If a matching PayPal account is not found, you will be prompted to create a new PayPal Business account. Or you can create an account directly through [PayPal](https://www.paypal.com/us/webapps/mpp/account-selection). @@ -37,8 +37,8 @@ See [PayPal account limitations](#limitations) for further information. PayPal supports connecting PayPal Express Checkout for countries across the globe except for the following limitations: -* India, and Japan (future PayPal updates may support these accounts) -* Israel +* India, and Japan (future PayPal updates may support these accounts) +* Israel For Brazil, you must have an existing PayPal business account to connect. You cannot convert an existing personal PayPal account for Brazil during this process. If you need an account, create a new business PayPal account through [their website](https://www.paypal.com/us/webapps/mpp/account-selection). @@ -47,35 +47,38 @@ For Brazil, you must have an existing PayPal business account to connect. You ca To configure PayPal Express Checkout: 1. Access the Admin console for the environment you need to configure. -2. In the left-side navigation, select __Stores__ > __Configuration__, then select __Sales__ > __Payment Methods__. -3. For PayPal, select __Configure__. Configuration fields display in expandable sections for Express Checkout, Advertise PayPal Credit, and Basic and Advanced settings. -4. Connect your PayPal account. Until the account is connected, the options to enable are disabled. For details on available and supported accounts to connect and limitations, see [PayPal account](#accounts). +1. In the left-side navigation, select __Stores__ > __Configuration__, then select __Sales__ > __Payment Methods__. +1. For PayPal, select __Configure__. Configuration fields display in expandable sections for Express Checkout, Advertise PayPal Credit, and Basic and Advanced settings. +1. Connect your PayPal account. Until the account is connected, the options to enable are disabled. For details on available and supported accounts to connect and limitations, see [PayPal account](#accounts). - * To connect your PayPal live account, click Connect with PayPal and follow the prompts. Any customer purchases using a live PayPal complete and actively charge customers in a live store. - * To connect your sandbox account for testing, click Sandbox Credentials and follow the prompts. Any customer purchases using a Sandbox PayPal complete without actively charging customers. + * To connect your PayPal live account, click Connect with PayPal and follow the prompts. Any customer purchases using a live PayPal complete and actively charge customers in a live store. + * To connect your sandbox account for testing, click Sandbox Credentials and follow the prompts. Any customer purchases using a Sandbox PayPal complete without actively charging customers. -5. Configure the Express Checkout settings to authenticate and use the PayPal API: +1. Configure the Express Checkout settings to authenticate and use the PayPal API: - * __Email Associated with PayPal Merchant Account__ (Optional) enter the email address associated with your PayPal merchant account. This email is case-sensitive. - * __API Authentication Methods__ as API Signature or API Certificate. - * API Username, Password, and Signature captured from your PayPal account. - * __Sandbox Mode__ select Yes or No to indicate if the credentials you entered are for sandbox. If you entered production credentials, select No. - * __API Uses Proxy__ select Yes or No to set if the system uses a proxy server to establish a connection between Magento and the PayPal payment system. If Yes, enter the proxy host and port. -6. For detailed information and steps for configuring your account, see [PayPal Express Checkout](http://docs.magento.com/m2/ce/user_guide/payment/paypal-express-checkout.html) starting with Step 2 Complete the Required Settings. + * __Email Associated with PayPal Merchant Account__ (Optional) enter the email address associated with your PayPal merchant account. This email is case-sensitive. + * __API Authentication Methods__ as API Signature or API Certificate. + * API Username, Password, and Signature captured from your PayPal account. + * __Sandbox Mode__ select Yes or No to indicate if the credentials you entered are for sandbox. If you entered production credentials, select No. + * __API Uses Proxy__ select Yes or No to set if the system uses a proxy server to establish a connection between Magento and the PayPal payment system. If Yes, enter the proxy host and port. + +1. For detailed information and steps for configuring your account, see [PayPal Express Checkout](http://docs.magento.com/m2/ce/user_guide/payment/paypal-express-checkout.html) starting with Step 2 Complete the Required Settings. With the account configured and authenticated, you can enable and disable PayPal payment options under Required PayPal Settings: -* __Enable this Solution__ displays the PayPal payment method to customers through the website. -* __Enable In-Context Checkout Experience__ -* __Enable PayPal Credit__ allows customers to PayPal credit financing without additional costs. PayPal pays the order up-front, handling all repayments for the credit directly with the customer. +* __Enable this Solution__ displays the PayPal payment method to customers through the website. +* __Enable In-Context Checkout Experience__ +* __Enable PayPal Credit__ allows customers to PayPal credit financing without additional costs. PayPal pays the order up-front, handling all repayments for the credit directly with the customer. ## PayPal variables {#deploy} When using the PayPal on-boarding tool with {{site.data.var.ece}} 2.2, you need to add the following variable to `magento.app.yaml` in the environment variables section. - # Environment variables - variables: - env: - CONFIG__DEFAULT__PAYPAL_ONBOARDING__MIDDLEMAN_DOMAIN: 'payment-broker.magento.com' +```yaml +# Environment variables +variables: + env: + CONFIG__DEFAULT__PAYPAL_ONBOARDING__MIDDLEMAN_DOMAIN: 'payment-broker.magento.com' +``` If you are upgrading to 2.2 from 2.1.8 or later, you still need to add this variable. diff --git a/guides/v2.2/cloud/live/sens-data-initial.md b/guides/v2.2/cloud/live/sens-data-initial.md index cbf8a2fef02..1a72a50ef7c 100644 --- a/guides/v2.2/cloud/live/sens-data-initial.md +++ b/guides/v2.2/cloud/live/sens-data-initial.md @@ -16,19 +16,19 @@ This example shows how to use the [recommended procedure]({{ page.baseurl }}/clo 1. Verify your settings are not editable in the Admin panel. Any configurations exported to `config.php` make those fields in the Admin panel read-only and disabled for edits. 1. Update and modify configurations again in Integration, update the file, and check it into Git: - * Change configuration settings on the Integration environment. - * To add new configurations, run the command to create `config.php` again. New configurations are appended to the file. - * To remove or edit existing configurations, manually edit the file. - * Commit and push to Git. + * Change configuration settings on the Integration environment. + * To add new configurations, run the command to create `config.php` again. New configurations are appended to the file. + * To remove or edit existing configurations, manually edit the file. + * Commit and push to Git. For example, you may want to set the following settings: -* Disable [locale](https://glossary.magento.com/locale) and static file optimization settings in your Integration environment -* Enable static file optimization in Staging and Production environments -* Configure Fastly in Staging and Production with specific credentials for each +* Disable [locale](https://glossary.magento.com/locale) and static file optimization settings in your Integration environment +* Enable static file optimization in Staging and Production environments +* Configure Fastly in Staging and Production with specific credentials for each _Static file optimization_ means merging and minifying [JavaScript](https://glossary.magento.com/javascript) and Cascading Style Sheets, and minifying [HTML](https://glossary.magento.com/html) templates. @@ -36,12 +36,12 @@ _Static file optimization_ means merging and minifying [JavaScript](https://glos To complete these configuration management tasks, you need the following: -* Minimum a project reader role with [environment administrator]({{ page.baseurl }}/cloud/project/user-admin.html#cloud-role-env) privileges -* Magento Admin panel URL and credentials for Integration, Staging, and Production environments -* Push all updated code to your Integration environment: +* Minimum a project reader role with [environment administrator]({{ page.baseurl }}/cloud/project/user-admin.html#cloud-role-env) privileges +* Magento Admin panel URL and credentials for Integration, Staging, and Production environments +* Push all updated code to your Integration environment: - * For Starter: To an Integration branch and environment - * For Pro: To the Integration `master` branch and environment + * For Starter: To an Integration branch and environment + * For Pro: To the Integration `master` branch and environment ## Configure Magento through the Integration Admin panel {#configure} diff --git a/guides/v2.2/cloud/live/sens-data-over.md b/guides/v2.2/cloud/live/sens-data-over.md index 25744c9aa03..8f808fda078 100644 --- a/guides/v2.2/cloud/live/sens-data-over.md +++ b/guides/v2.2/cloud/live/sens-data-over.md @@ -25,8 +25,8 @@ The database contains default configurations for your Magento store. When you up To generate the file, use one of the following: -* `php vendor/bin/m2-ece-scd-dump`—**Recommended** Exports only modified configuration settings -* `php ./vendor/bin/ece-tools config:dump`—Exports every configuration setting, including modified and default settings +* `php vendor/bin/m2-ece-scd-dump`—**Recommended** Exports only modified configuration settings +* `php ./vendor/bin/ece-tools config:dump`—Exports every configuration setting, including modified and default settings {:.bs-callout .bs-callout-warning} For {{site.data.var.ece}}, we **do not recommend** using the `app:config:dump` command. This command pulls and locks all values in a read-only state. This affects Fastly and other important modules. @@ -81,9 +81,9 @@ The following table shows the configuration settings affected by the `php vendor The `config.php` file includes the following settings and configuration values: -* Configured values for settings entered through the Magento Admin (see the table below) -* Configured extension settings -* Scopes value for static content deployment (default is [`quick`]({{ site.baseurl }}/guides/v2.2/config-guide/cli/config-cli-subcommands-static-deploy-strategies.html#static-file-quick)) +* Configured values for settings entered through the Magento Admin (see the table below) +* Configured extension settings +* Scopes value for static content deployment (default is [`quick`]({{ site.baseurl }}/guides/v2.2/config-guide/cli/config-cli-subcommands-static-deploy-strategies.html#static-file-quick)) @@ -144,13 +144,15 @@ Complete all configurations for your stores in the Admin console: 1. Log in to the Magento Admin for one of the environments: - * Starter: An active development branch - * Pro: Integration environment + * Starter: An active development branch + * Pro: Integration environment -2. Create and configure all store settings. These configurations do not include the actual products unless you plan on dumping the database from this environment to Staging and Production. Typically development databases do not include your full store data. -3. Open a terminal on your local and generate `/app/etc/config.php` on the environment: +1. Create and configure all store settings. These configurations do not include the actual products unless you plan on dumping the database from this environment to Staging and Production. Typically development databases do not include your full store data. +1. Open a terminal on your local and generate `/app/etc/config.php` on the environment: - `ssh "php vendor/bin/m2-ece-scd-dump"` + ```bash + ssh "php vendor/bin/m2-ece-scd-dump" + ``` ### Step 2: Transfer and add the file to Git {#transfer-file} @@ -158,11 +160,15 @@ Push the `config.php` file to Git. To push this file to the `master` Git branch, 1. Transfer the `config.php` file to your local system using `rsync` or `scp`. You can only add this file to the Git branch through your local. - `rsync :app/etc/config.php ./app/etc/config.php` + ```bash + rsync :app/etc/config.php ./app/etc/config.php + ``` -2. Add and push the `config.php` file to the Git master branch. +1. Add and push the `config.php` file to the Git master branch. - `git add app/etc/config.php && git commit -m "Add system-specific configuration" && git push origin master` + ```bash + git add app/etc/config.php && git commit -m "Add system-specific configuration" && git push origin master + ``` When you add the `config.php` file to Git, all build and deploy processes move static content deployment (SCD) to the _build_ phase. The method for the deployment uses the scope. The default option is [`quick`]({{ site.baseurl }}/guides/v2.2/config-guide/cli/config-cli-subcommands-static-deploy-strategies.html#static-file-quick). You can change the strategy by setting an environment variable for [`SCD_STRATEGY`]({{ site.baseurl }}/guides/v2.2/cloud/env/variables-deploy.html). @@ -193,10 +199,10 @@ If you upgrade to {{site.data.var.ece}} 2.2 or later, you may want to migrate se If they differ, you can append content from the `config.local.php` file to your new `config.php` file: 1. Follow instructions to generate the `config.php` file using the [recommended method](#cloud-config-specific-recomm). -2. Open the `config.php` file and delete the last line. -3. Open the `config.local.php` file and copy the contents. -4. Paste the contents into the `config.php` file, save, and complete adding it to Git. -5. Deploy across your environments. +1. Open the `config.php` file and delete the last line. +1. Open the `config.local.php` file and copy the contents. +1. Paste the contents into the `config.php` file, save, and complete adding it to Git. +1. Deploy across your environments. You only need to complete this migration once. When you need to update the file, always update the `config.php` file. @@ -209,21 +215,21 @@ You can add another locale to the Staging or Production environment by enabling {: .bs-callout .bs-callout-warning} This process **overwrites** the store configuration; only do the following if the environments contain the same stores. -1. From your Integration environment, enable the `SCD_ON_DEMAND` variable. -1. Add the necessary locales using your Admin panel. -1. Generate the `app/etc/config.php` file containing all locales. +1. From your Integration environment, enable the `SCD_ON_DEMAND` variable. +1. Add the necessary locales using your Admin panel. +1. Generate the `app/etc/config.php` file containing all locales. - ```bash - php ./vendor/bin/ece-tools config:dump - ``` + ```bash + php ./vendor/bin/ece-tools config:dump + ``` -1. Copy the new configuration file from your Integration environment to your local Staging environment directory. +1. Copy the new configuration file from your Integration environment to your local Staging environment directory. - ```bash - rsync :app/etc/config.php ./app/etc/config.php - ``` + ```bash + rsync :app/etc/config.php ./app/etc/config.php + ``` -1. Push code changes to the remote. +1. Push code changes to the remote. {:.bs-callout .bs-callout-warning} -While you can manually edit the `config.php` file in the Staging and Production environments, we do not recommend it. The file helps to keep all configurations consistent across all environments. Never delete the `config.php` file to rebuild it. Deleting the file can remove specific configurations and settings required for build and deploy processes. \ No newline at end of file +While you can manually edit the `config.php` file in the Staging and Production environments, we do not recommend it. The file helps to keep all configurations consistent across all environments. Never delete the `config.php` file to rebuild it. Deleting the file can remove specific configurations and settings required for build and deploy processes. diff --git a/guides/v2.2/cloud/live/stage-prod-live.md b/guides/v2.2/cloud/live/stage-prod-live.md index 50a0912648f..41ab6f56b6b 100644 --- a/guides/v2.2/cloud/live/stage-prod-live.md +++ b/guides/v2.2/cloud/live/stage-prod-live.md @@ -52,9 +52,9 @@ For Pro, locate your Git and SSH URLs from the OneDrive onboarding document you After you know these URLs, you can access those environments without further intervention. -* Use the URLs to access the store as a customer. -* Use the URL /admin to access the Admin panel. -* (Pro) Use SSH access and Git CLI commands to deploy updated code to Staging or Production. Magento Cloud CLI commands are not available in Staging and Production. +* Use the URLs to access the store as a customer. +* Use the URL /admin to access the Admin panel. +* (Pro) Use SSH access and Git CLI commands to deploy updated code to Staging or Production. Magento Cloud CLI commands are not available in Staging and Production. For more information, see [SSH and sFTP]({{ page.baseurl }}/cloud/env/environments-ssh.html). @@ -64,20 +64,20 @@ You should always deploy code by pushing your local Git branch to your environme Always update your code in a branch on your local environment, push to Git, and complete the full deployment when you need to do the following: -* Add extensions -* Add 3rd party integrations -* Fix issues and check errors +* Add extensions +* Add 3rd party integrations +* Fix issues and check errors {:.ref-header} Related topics To learn more, check the following: -* [Deployment process]({{ page.baseurl }}/cloud/reference/discover-deploy.html) -* [Continuous integration]({{ page.baseurl }}/cloud/deploy/continuous-deployment.html) -* [Protective block]({{ page.baseurl }}/cloud/live/live-prot.html) -* [Build and deploy to your local]({{ page.baseurl }}/cloud/live/live-sanity-check.html) -* [Prepare to deploy]({{ page.baseurl }}/cloud/live/stage-prod-migrate-prereq.html) -* [Migrate and deploy]({{ page.baseurl }}/cloud/live/stage-prod-migrate.html) -* [Test deployment]({{ page.baseurl }}/cloud/live/stage-prod-test.html) -* [Go live and launch]({{ page.baseurl }}/cloud/live/live.html) +* [Deployment process]({{ page.baseurl }}/cloud/reference/discover-deploy.html) +* [Continuous integration]({{ page.baseurl }}/cloud/deploy/continuous-deployment.html) +* [Protective block]({{ page.baseurl }}/cloud/live/live-prot.html) +* [Build and deploy to your local]({{ page.baseurl }}/cloud/live/live-sanity-check.html) +* [Prepare to deploy]({{ page.baseurl }}/cloud/live/stage-prod-migrate-prereq.html) +* [Migrate and deploy]({{ page.baseurl }}/cloud/live/stage-prod-migrate.html) +* [Test deployment]({{ page.baseurl }}/cloud/live/stage-prod-test.html) +* [Go live and launch]({{ page.baseurl }}/cloud/live/live.html) diff --git a/guides/v2.2/cloud/live/stage-prod-migrate-prereq.md b/guides/v2.2/cloud/live/stage-prod-migrate-prereq.md index d4449dded77..2f576a1e3db 100644 --- a/guides/v2.2/cloud/live/stage-prod-migrate-prereq.md +++ b/guides/v2.2/cloud/live/stage-prod-migrate-prereq.md @@ -28,18 +28,18 @@ You can deploy to Starter environments from the Project Web Interface or using C **Prerequisites** -1. Get your [access URLs and SSH](#starter-urls) information. -1. [Add your public SSH key](#add-public-ssh-key) to your project. +1. Get your [access URLs and SSH](#starter-urls) information. +1. [Add your public SSH key](#add-public-ssh-key) to your project. ### Get your Starter access URLs and SSH information {#starter-urls} You can find URLs and SSH connection information from the Project Web Interface. For each selected environment or branch, you have an Access Site link. Your initial project is provisioned with a `Master` environment, which is Production, and any additional branches you create, including Staging (recommended) and development branches for custom code. -1. Log in to [your {{site.data.var.ece}} account](https://accounts.magento.cloud). +1. Log in to [your {{site.data.var.ece}} account](https://accounts.magento.cloud). -1. Select an environment. +1. Select an environment. -1. Click **Access site** to display the URL and SSH information. +1. Click **Access site** to display the URL and SSH information. ![Access your project]({{ site.baseurl }}/common/images/cloud/cloud-starter-project-access.png) {:width="500px"} @@ -50,11 +50,11 @@ For Pro plan projects, you must merge your completed development code to the `In For **first time setup** to migrate your database and deploy code to Staging or Production, complete the following steps: -1. Create a support ticket to [migrate deployment hooks](#pro-yaml). In this ticket, include your public SSH keys to add to Staging and Production. +1. Create a support ticket to [migrate deployment hooks](#pro-yaml). In this ticket, include your public SSH keys to add to Staging and Production. -1. Get your [access URLs and SSH](#pro-urls) for Staging and Production. +1. Get your [access URLs and SSH](#pro-urls) for Staging and Production. -1. [Add your public SSH key](#add-public-ssh-key) to your {{ site.data.var.ece }} project environments. +1. [Add your public SSH key](#add-public-ssh-key) to your {{ site.data.var.ece }} project environments. If you have not done so already, set up [Fastly CDN services]({{ page.baseurl }}/cloud/cdn/cloud-fastly.html) on your Staging and Production environments. See [Fastly set up]({{ page.baseurl }}/cloud/cdn/configure-fastly.html#upload-vcl-snippets). @@ -79,8 +79,8 @@ You can locate your URLs through the Project Web Interface. There is an _Access - SSH access: - - Staging: `ssh .ent--staging-@ssh..magento.cloud` - - Production: `ssh .ent--production-@ssh..magento.cloud` + - Staging: `ssh .ent--staging-@ssh..magento.cloud` + - Production: `ssh .ent--production-@ssh..magento.cloud` - Web URL format: @@ -91,31 +91,31 @@ You can locate your URLs through the Project Web Interface. There is an _Access Add your SSH public key to {{ site.data.var.ece }} environments: -- Starter–Add to Master (Production) and any environments you create by branching from Master -- Pro–Add to the Master Integration, Staging, and Production environments +- Starter–Add to Master (Production) and any environments you create by branching from Master +- Pro–Add to the Master Integration, Staging, and Production environments {:.procedure} To add an SSH key using the Project Web Interface: -1. Copy your SSH public key to the clipboard. +1. Copy your SSH public key to the clipboard. If you do not already have SSH keys on that machine, see the [GitHub documentation](https://help.github.com/articles/generating-an-ssh-key) to create them. -1. Login and access your project through the [Project Web Interface](https://accounts.magento.cloud). +1. Login and access your project through the [Project Web Interface](https://accounts.magento.cloud). -1. In your selected branch, an icon displays if you do not have an SSH key added. +1. In your selected branch, an icon displays if you do not have an SSH key added. ![No SSH key]({{ site.baseurl }}/common/images/cloud_ssh-key-install.png) -1. Copy and paste the content of your public SSH key in the screen. +1. Copy and paste the content of your public SSH key in the screen. ![Add SSH key]({{ site.baseurl }}/common/images/cloud_ssh-key-add.png) -1. Follow the prompts on your screen to complete the task. +1. Follow the prompts on your screen to complete the task. You can also add an SSH key using the {{site.data.var.ece}} CLI. See [Add an SSH key using the CLI]({{ page.baseurl }}/cloud/before/before-workspace-ssh.html#add-key-cli). {:.ref-header} Next step -[Migrate and deploy]({{ page.baseurl }}/cloud/live/stage-prod-migrate.html) \ No newline at end of file +[Migrate and deploy]({{ page.baseurl }}/cloud/live/stage-prod-migrate.html) diff --git a/guides/v2.2/cloud/live/stage-prod-migrate.md b/guides/v2.2/cloud/live/stage-prod-migrate.md index 3ca03cf0759..560ea973560 100644 --- a/guides/v2.2/cloud/live/stage-prod-migrate.md +++ b/guides/v2.2/cloud/live/stage-prod-migrate.md @@ -13,9 +13,9 @@ Previous step To migrate your database and static files to Staging and Production: -- [Deploy code](#code) -- [Migrate static files](#cloud-live-migrate-static) -- [Migrate the database](#cloud-live-migrate-db) +- [Deploy code](#code) +- [Migrate static files](#cloud-live-migrate-static) +- [Migrate the database](#cloud-live-migrate-db) If you encounter errors or need to change project configuration, complete the required updates in your local environment. Then, push the code changes to the Integration environment to deploy and test before pushing to Staging and Production environments. @@ -51,8 +51,8 @@ You can use the [Magento Cloud CLI commands]({{ page.baseurl }}/cloud/reference/ **Prerequisites** -- [Build and deploy on local]({{ page.baseurl }}/cloud/live/live-sanity-check.html) -- [Prepare to deploy to Staging and Production]({{ page.baseurl }}/cloud/live/stage-prod-migrate-prereq.html) +- [Build and deploy on local]({{ page.baseurl }}/cloud/live/live-sanity-check.html) +- [Prepare to deploy to Staging and Production]({{ page.baseurl }}/cloud/live/stage-prod-migrate-prereq.html) #### Step 1: Deploy and test the Integration environment: @@ -138,10 +138,10 @@ rsync -azvP This command uses the following options: -- `a`–archive -- `z`–compress -- `v`–verbose -- `P`–partial progress +- `a`–archive +- `z`–compress +- `v`–verbose +- `P`–partial progress For additional options, see the [rsync man page](http://linux.die.net/man/1/rsync). diff --git a/guides/v2.2/cloud/onboarding/onboarding-portal.md b/guides/v2.2/cloud/onboarding/onboarding-portal.md index 40e1b470e84..22b50aff887 100644 --- a/guides/v2.2/cloud/onboarding/onboarding-portal.md +++ b/guides/v2.2/cloud/onboarding/onboarding-portal.md @@ -10,14 +10,14 @@ The Onboarding Portal is available for new accounts and projects for Starter and Through the portal, you can: -* View your initial environment site and Magento Admin -* Add a Technical Admin, a super user to help manage your project and branches -* Create a project schedule with dates and timelines -* Access your project environments, including a link to the Project Web Interface -* (Pro) Complete the provisioning form for Staging and Production -* Get started workflow for developers to set up their local and begin developing -* Complete a quick user acceptance test (UAT) checklist with links to further tests -* Complete a checklist and submit a ticket to go live +* View your initial environment site and Magento Admin +* Add a Technical Admin, a super user to help manage your project and branches +* Create a project schedule with dates and timelines +* Access your project environments, including a link to the Project Web Interface +* (Pro) Complete the provisioning form for Staging and Production +* Get started workflow for developers to set up their local and begin developing +* Complete a quick user acceptance test (UAT) checklist with links to further tests +* Complete a checklist and submit a ticket to go live Browse through the portal to find helpful information and options to get started with your project code and release. For additional technical information, the portal includes links to {{site.data.var.ece}} DevDocs documentation. @@ -62,8 +62,8 @@ This user can help you create developer accounts with access to the Magento envi When you create an account, we immediately provision your initial environment and code using the latest released version of {{site.data.var.ece}}. As part of this provisioning, you receive a project, base Git repository of the latest version code, -* **For Starter**: We provisioned your Master environment with cloned code in a `master` branch. This is your Production environment that you should branch from for developing site and store code. -* **For Pro**: We provisioned your Integration environment with cloned code in a `master` branch. This is the origin branch of your store code. For purchased accounts, your Staging and Production environments may be provisioned earlier. +* **For Starter**: We provisioned your Master environment with cloned code in a `master` branch. This is your Production environment that you should branch from for developing site and store code. +* **For Pro**: We provisioned your Integration environment with cloned code in a `master` branch. This is the origin branch of your store code. For purchased accounts, your Staging and Production environments may be provisioned earlier. Your Technical Admin can immediately start development planning and tasks without waiting. @@ -71,9 +71,9 @@ Your Technical Admin can immediately start development planning and tasks withou You may have a number of different people help create, launch, and maintain your Magento stores and sites. These include developers, designers, DBAs, and more. To better understand the process and access environments, we provide a Development section of checklists and information: -* **Development Workflow**: A high-level checklist for preparing your local development environment, cloning code, creating branches, and developing your store. It provides a quick walk-through for the [First-time development setup]({{ page.baseurl }}/cloud/setup/first-time-setup.html) information according to your [Starter]({{ page.baseurl }}/cloud/basic-information/starter-architecture.html) or [Pro]({{ page.baseurl }}/cloud/architecture/pro-architecture.html) plan. -* **Environments**: Provides links and information for your Pro and Starter account environments. Every active branch of code has a complete environment to fully test new features, extensions, and integrations. This page includes direct URL links, SSH link, CLI command access, and a link into the [Project Web Interface]({{ page.baseurl }}/cloud/project/projects.html#login). You may want to provide the following helpful information for the development and deploy process for [Starter]({{ page.baseurl }}/cloud/basic-information/starter-develop-deploy-workflow.html) and [Pro]({{ page.baseurl }}/cloud/architecture/pro-develop-deploy-workflow.html) to your developers. -* **Services**: Learn more about available and integrated services for your project. These services include [Blackfire.io Profiler]({{ page.baseurl }}/cloud/project/project-integrate-blackfire.html), [New Relic]({{ page.baseurl }}/cloud/project/new-relic.html), and [Fastly]({{ page.baseurl }}/cloud/basic-information/cloud-fastly.html). You can review and set credentials for these services through the [Project Web Interface]({{ page.baseurl }}/cloud/project/projects.html#login). +* **Development Workflow**: A high-level checklist for preparing your local development environment, cloning code, creating branches, and developing your store. It provides a quick walk-through for the [First-time development setup]({{ page.baseurl }}/cloud/setup/first-time-setup.html) information according to your [Starter]({{ page.baseurl }}/cloud/basic-information/starter-architecture.html) or [Pro]({{ page.baseurl }}/cloud/architecture/pro-architecture.html) plan. +* **Environments**: Provides links and information for your Pro and Starter account environments. Every active branch of code has a complete environment to fully test new features, extensions, and integrations. This page includes direct URL links, SSH link, CLI command access, and a link into the [Project Web Interface]({{ page.baseurl }}/cloud/project/projects.html#login). You may want to provide the following helpful information for the development and deploy process for [Starter]({{ page.baseurl }}/cloud/basic-information/starter-develop-deploy-workflow.html) and [Pro]({{ page.baseurl }}/cloud/architecture/pro-develop-deploy-workflow.html) to your developers. +* **Services**: Learn more about available and integrated services for your project. These services include [Blackfire.io Profiler]({{ page.baseurl }}/cloud/project/project-integrate-blackfire.html), [New Relic]({{ page.baseurl }}/cloud/project/new-relic.html), and [Fastly]({{ page.baseurl }}/cloud/basic-information/cloud-fastly.html). You can review and set credentials for these services through the [Project Web Interface]({{ page.baseurl }}/cloud/project/projects.html#login). The technical admin, technical users, developers, and others can directly access the [Project Web Interface]({{ page.baseurl }}/cloud/basic-information/cloud-fastly.html) to manage code, variables, and settings. These options are also configurable using [Magento Cloud CLI]({{ page.baseurl }}/cloud/project/project-webint-basic.html) commands. @@ -81,5 +81,5 @@ The technical admin, technical users, developers, and others can directly access When you are ready to launch your sites and stores, work through Launch options: -* **UAT Checklist**: A high-level checklist for verifying Magento features and your configured settings, extensions, products, and more. You can follow this checklist along with the [Test deployment]({{ page.baseurl }}/cloud/live/stage-prod-test.html) information. -* **Site Launch**: A high-level checklist for your initial "go live". After completing the checklist, you can enter Live Site Configuration information to enter a Submit a Support ticket. You can follow this checklist along with the [Go live checklist]({{ page.baseurl }}/cloud/live/go-live-checklist.html) and [Test deployment]({{ page.baseurl }}/cloud/live/stage-prod-test.html) information. \ No newline at end of file +* **UAT Checklist**: A high-level checklist for verifying Magento features and your configured settings, extensions, products, and more. You can follow this checklist along with the [Test deployment]({{ page.baseurl }}/cloud/live/stage-prod-test.html) information. +* **Site Launch**: A high-level checklist for your initial "go live". After completing the checklist, you can enter Live Site Configuration information to enter a Submit a Support ticket. You can follow this checklist along with the [Go live checklist]({{ page.baseurl }}/cloud/live/go-live-checklist.html) and [Test deployment]({{ page.baseurl }}/cloud/live/stage-prod-test.html) information. \ No newline at end of file diff --git a/guides/v2.2/cloud/onboarding/onboarding-tasks.md b/guides/v2.2/cloud/onboarding/onboarding-tasks.md index b8cf8de3a91..5cc7fe6a282 100644 --- a/guides/v2.2/cloud/onboarding/onboarding-tasks.md +++ b/guides/v2.2/cloud/onboarding/onboarding-tasks.md @@ -10,81 +10,50 @@ redirect_from: - /guides/v2.3/cloud/before/before-project-owner.html --- -After your company purchases a subscription plan for {{site.data.var.ece}}, the -only person who initially has access to the project and code is the Project Owner. +After your company purchases a subscription plan for {{site.data.var.ece}}, the only person who initially has access to the project and code is the Project Owner. -The _Project Owner_ is the person in your business or finance -organization that manages payments and other business-related issues for -the {{site.data.var.ece}} account. The Project Owner serves as the point of -contact with Magento. +The _Project Owner_ is the person in your business or finance organization that manages payments and other business-related issues for the {{site.data.var.ece}} account. The Project Owner serves as the point of contact with Magento. -To quickly onboard your project so you can develop your site for live -deployment, you need to complete specific set up steps and onboarding tasks. -Typically, the Project Owner begins the process by securing Admin access and -creating Technical Admin users that can help with set up, customization, and -development work. +To quickly onboard your project so you can develop your site for live deployment, you need to complete specific set up steps and onboarding tasks. Typically, the Project Owner begins the process by securing Admin access and creating Technical Admin users that can help with set up, customization, and development work. ## Project portal -Once you have an account, you can use the Magento Project Portal to manage the -project for your {{site.data.var.ece}} store. The portal provides a Getting Started guide -and an interactive workflow that helps project administrators, business users, -and developers with the tasks required to develop, build, test, and launch your -site. +Once you have an account, you can use the Magento Project Portal to manage the project for your {{site.data.var.ece}} store. The portal provides a Getting Started guide and an interactive workflow that helps project administrators, business users, and developers with the tasks required to develop, build, test, and launch your site. **Open the Magento Project Portal** 1. Log in to your Magento account. -2. On the My Account page, click the Magento tab to see the projects in your account. +1. On the My Account page, click the Magento tab to see the projects in your account. -3. **Click View Project Page** in the [Projects section](https://cloud.magento.com/cloud/project/subscriptions/). +1. **Click View Project Page** in the [Projects section](https://cloud.magento.com/cloud/project/subscriptions/). ## Sign up for a {{site.data.var.ece}} account {#cloud-first-acct} -Don't have a {{site.data.var.ece}} account yet? Contact [Magento Sales](https://magento.com/explore/contact-sales). -We will create your account and send you a welcome email that provides instructions to access the project. +Don't have a {{site.data.var.ece}} account yet? Contact [Magento Sales](https://magento.com/explore/contact-sales). We will create your account and send you a welcome email that provides instructions to access the project. -The person who signs up for a {{site.data.var.ece}} account is referred to as -the _License Owner_. +The person who signs up for a {{site.data.var.ece}} account is referred to as the _License Owner_. ## Your welcome e-mail {#email} -Magento sends a welcome email to the License Owner using the address that was -provided during the sign up process. The email contains a link to access your -{{site.data.var.ece}} project and complete initial project set up. +Magento sends a welcome email to the License Owner using the address that was provided during the sign up process. The email contains a link to access your {{site.data.var.ece}} project and complete initial project set up. You can also access your project by [logging in to your account](https://accounts.magento.cloud). ## Project access and users {#users} The License Owner can add user accounts to provide access to code, manage -branches, enter tickets, and support environments. These user accounts can -include in-house development, consultants, and Magento solution specialists. +branches, enter tickets, and support environments. These user accounts can include in-house development, consultants, and Magento solution specialists. -Typically, the only user the License Owner must create is the _Technical Admin_. -The Technical Admin needs a user account with admin access to create user -accounts for developers, set environment permissions, and -manage all branches and environments. The Technical Admin can be a developer, -a consultant, a [Magento Solution Partner](https://magento.com/find-a-partner), -or yourself. +Typically, the only user the License Owner must create is the _Technical Admin_. The Technical Admin needs a user account with admin access to create user accounts for developers, set environment permissions, and manage all branches and environments. The Technical Admin can be a developer, a consultant, a [Magento Solution Partner](https://magento.com/find-a-partner), or yourself. -You can create a Technical Admin through the Project portal, from the Project -Web interface, or from the command line using the Magento Cloud CLI. For details -on using the web interface and command line, -see [Create and manage users]({{ page.baseurl }}/cloud/project/user-admin.html). +You can create a Technical Admin through the Project portal, from the Project Web interface, or from the command line using the Magento Cloud CLI. For details on using the web interface and command line, see [Create and manage users]({{ page.baseurl }}/cloud/project/user-admin.html). ## Get started with the Project Web Interface {#project-setup} -When you sign up for a Pro or Starter subscription plan, we provision -your initial project environment with a template {{site.data.var.ece}} -repository to build and manage your site. For information about what is included -in Pro and Starter plans, see [Starter Architecture]({{ page.baseurl }}/cloud/basic-information/starter-architecture.html) and [Pro Architecture]({{ page.baseurl }}/cloud/architecture/pro-architecture.html). +When you sign up for a Pro or Starter subscription plan, we provision your initial project environment with a template {{site.data.var.ece}} repository to build and manage your site. For information about what is included in Pro and Starter plans, see [Starter Architecture]({{ page.baseurl }}/cloud/basic-information/starter-architecture.html) and [Pro Architecture]({{ page.baseurl }}/cloud/architecture/pro-architecture.html). -You can use the Project Web Interface to manage your project, add user accounts, -and begin developing your store(s). The License Owner, Technical Admin users, -and developers can use this interface to manage all environments and branches, -environment variables, environment settings, and routes. +You can use the Project Web Interface to manage your project, add user accounts, and begin developing your store(s). The License Owner, Technical Admin users, and developers can use this interface to manage all environments and branches, environment variables, environment settings, and routes. ![Use the Project Web Interface to manage environments]({{ site.baseurl }}/common/images/cloud_project-access.png) @@ -92,41 +61,27 @@ For details, see [Project Web Interface]({{ page.baseurl }}/cloud/project/projec ## Sign up for Magento status {#status} -Get updates about {{site.data.var.ece}} -platform environments and related services from the -[Status page](https://status.magento.cloud). +Get updates about {{site.data.var.ece}} platform environments and related services from the [Status page](https://status.magento.cloud). -The page lists current status for all {{site.data.var.ece}} components and -services followed by notifications about incident reports, service upgrades, -planned outages, and more. These notifications are ordered by date. +The page lists current status for all {{site.data.var.ece}} components and services followed by notifications about incident reports, service upgrades, planned outages, and more. These notifications are ordered by date. ![All status on the page]({{ site.baseurl }}/common/images/cloud_status.png) -Anyone working on your project can subscribe to the {{site.data.var.ece}} -status site to receive event notifications and updates through email. You can -customize your subscription to select only the platform and services that you -want to track. Sign up from the -[Subscription page](https://status.magento.cloud/subscribe). +Anyone working on your project can subscribe to the {{site.data.var.ece}} status site to receive event notifications and updates through email. You can customize your subscription to select only the platform and services that you want to track. Sign up from the [Subscription page](https://status.magento.cloud/subscribe). ## Access your Magento Admin panel {#admin} Users that have administrative access to the Admin panel can add users, configure store services, complete store set up and customization work, and more. -For a new project, the first step after getting the welcome email is to secure Admin access to the project by changing the password on the License Owner -account. The default username for this account is the License Owner email address. +For a new project, the first step after getting the welcome email is to secure Admin access to the project by changing the password on the License Owner account. The default username for this account is the License Owner email address. You can submit a password change request using either of the following methods: -- Locate the welcome email sent to the License Owner email address and - follow the link to change your password. +- Locate the welcome email sent to the License Owner email address and follow the link to change your password. -- Copy the store URL from the [Project Web Interface]({{ page.baseurl }}/cloud/project/projects.html) - into a browser. Then, append `/admin` to the end of the URL to open - the sign in page. Click the **Forgot password?** link to send a password - change request to the License Owner email address. +- Copy the store URL from the [Project Web Interface]({{ page.baseurl }}/cloud/project/projects.html) into a browser. Then, append `/admin` to the end of the URL to open the sign in page. Click the **Forgot password?** link to send a password change request to the License Owner email address. -After you submit the password change request, check your email for the password -reset notification. If you do not get the email, check your spam folder. +After you submit the password change request, check your email for the password reset notification. If you do not get the email, check your spam folder. {: .bs-callout .bs-callout-tip} If the password reset fails or you cannot sign in to the Admin panel, a user with admin access can connect to the project using ssh and add a new admin user using the Magento CLI [admin:user:create command]({{ page.baseurl }}/install-gde/install/cli/install-cli-subcommands-admin.html#create-or-edit-an-administrator). diff --git a/guides/v2.2/cloud/project/ece-tools-update.md b/guides/v2.2/cloud/project/ece-tools-update.md index 2a5be1510c6..dd3319e5b4b 100644 --- a/guides/v2.2/cloud/project/ece-tools-update.md +++ b/guides/v2.2/cloud/project/ece-tools-update.md @@ -15,7 +15,7 @@ Typically, an _update_ includes patches and available hotfixes as part of the `m {:.procedure} To update the `{{site.data.var.ct}}` package: -1. On your local workstation, perform an update using Composer. +1. On your local workstation, perform an update using Composer. ```bash composer update magento/ece-tools @@ -24,10 +24,10 @@ To update the `{{site.data.var.ct}}` package: {: .bs-callout-info } If you cannot update beyond `{{site.data.var.ct}}` version 2002.0.8, follow the [upgrade steps]({{page.baseurl}}/cloud/project/ece-tools-upgrade-project.html). -1. Add, commit, and push your code changes. +1. Add, commit, and push your code changes. ```bash git add -A && git commit -m "Update magento/ece-tools" && git push origin ``` -1. After test validation, merge this branch to the Integration branch. +1. After test validation, merge this branch to the Integration branch. diff --git a/guides/v2.2/cloud/project/ece-tools-upgrade-project.md b/guides/v2.2/cloud/project/ece-tools-upgrade-project.md index f75f6555549..328c28d6b7c 100644 --- a/guides/v2.2/cloud/project/ece-tools-upgrade-project.md +++ b/guides/v2.2/cloud/project/ece-tools-upgrade-project.md @@ -43,19 +43,19 @@ To upgrade your project to use the `{{site.data.var.ct}}` package, you need to u {:.procedure} To upgrade project to use ece-tools: -1. Update the `magento/magento-cloud-metapackage` version constraint in the `composer.json` file. +1. Update the `magento/magento-cloud-metapackage` version constraint in the `composer.json` file. ```bash composer require "magento/magento-cloud-metapackage":">=2.2.0 <2.2.1" --no-update ``` -1. Update the metapackage. +1. Update the metapackage. ```bash composer update magento/magento-cloud-metapackage ``` -1. Modify the hook commands in the `magento.app.yaml` file. +1. Modify the hook commands in the `magento.app.yaml` file. ```yaml hooks: @@ -70,7 +70,7 @@ To upgrade project to use ece-tools: php ./vendor/bin/ece-tools post-deploy ``` -1. Check for and remove the [deprecated packages](#remove-deprecated-packages). The deprecated packages can prevent a successful upgrade. +1. Check for and remove the [deprecated packages](#remove-deprecated-packages). The deprecated packages can prevent a successful upgrade. ```bash composer remove magento/magento-cloud-configuration @@ -80,13 +80,13 @@ To upgrade project to use ece-tools: composer remove magento/ece-patches ``` -1. It may be necessary to update the `{{site.data.var.ct}}` package. +1. It may be necessary to update the `{{site.data.var.ct}}` package. ```bash composer update magento/ece-tools ``` -1. Add and commit the code changes. In this example, the following files were updated: +1. Add and commit the code changes. In this example, the following files were updated: ```terminal .magento.app.yaml @@ -95,7 +95,7 @@ To upgrade project to use ece-tools: ``` {:.no-copy} -1. Push your code changes to the remote server and merge this branch with the `integration` branch. +1. Push your code changes to the remote server and merge this branch with the `integration` branch. ```bash git push origin diff --git a/guides/v2.2/cloud/project/log-locations.md b/guides/v2.2/cloud/project/log-locations.md index 0551822ad6a..1b18d867ad4 100644 --- a/guides/v2.2/cloud/project/log-locations.md +++ b/guides/v2.2/cloud/project/log-locations.md @@ -18,10 +18,10 @@ You can [set up log-based Slack and email notifications][slacklog] when configur ## Viewing logs -There are three ways to view logs: file system, project web UI, or magento-cloud CLI. +There are three ways to view logs: file system, project web UI, or the `magento-cloud` CLI. -- **Log directories**—The `var/log` directory contains logs for all environments. You must use an SSH connection to access the `var/log` directory in the remote server environment. -- **Project web UI**—You can see build and post-deploy log information in the environment messages list. +- **Log directories**—The `/var/log` system directory contains logs for all environments. The `var/log/` Magento directory contains app-specific logs unique to a particular environment. You must use an SSH connection to access logs in a remote server environment. These directories are not shared between nodes in a cluster. +- **Project web UI**—You can see build and post-deploy log information in the environment _messages_ list. - **Magento Cloud CLI**—You can view logs using the `magento-cloud log` command. ### Log command @@ -45,7 +45,6 @@ Enter a number to choose a log: [6] post-deploy > ``` -{:.no-copy} By default, the command displays the log from the Integration environment. For the Pro Staging logs, you need to specify the log location using the project ID. @@ -73,23 +72,22 @@ Re-deploying environment project-integration-ID [2019-01-03 19:44:32] INFO: Warming up failed: http://integration-id-project.us.magentosite.cloud/ [2019-01-03 19:44:32] NOTICE: Post-deploy is complete. ``` -{: .no-copy} The following logs have a common location for all Cloud projects: - **Build log**: `var/log/cloud.log` - **Debug log**: `var/log/debug.log` - **Exception log**: `var/log/exception.log` -- **Support report log**: `var/log/support_report.log` +- **Reports**: `var/reports/` -Logs from the deploy hook are unique for each environment. The deploy log is in the following directories: +Though the `cloud.log` file contains feedback from each stage of the deployment process, logs from the deploy hook are unique to each environment. The environment-specific deploy log is in the following directories: -- **Starter and Pro Integration**: `var/log/deploy.log` -- **Pro Staging**: `var/log/platform/_stg/deploy.log` -- **Pro Production**: `var/log/platform//deploy.log` +- **Starter and Pro Integration**: `/var/log/deploy.log` +- **Pro Staging**: `/var/log/platform/_stg/deploy.log` +- **Pro Production**: `/var/log/platform//deploy.log` The value of `` depends on the project ID and whether the environment is Staging or Production. For example, with a project ID of `yw1unoukjcawe`, the Staging environment user is `yw1unoukjcawe_stg` and the Production environment user is `yw1unoukjcawe`. -Using that example, the deploy log is: `var/log/platform/yw1unoukjcawe_stg/deploy.log` +Using that example, the deploy log is: `/var/log/platform/yw1unoukjcawe_stg/deploy.log` The log for each deployment concatenates to the specific `deploy.log` file. The following example prints the deploy log in the terminal: @@ -119,28 +117,31 @@ magento-cloud log platform/_stg/deploy ## Application logs -Similar to deploy logs, application logs are unique for each environment. The following table lists application log locations on each environment: +Similar to deploy logs, application logs are unique for each environment. For Pro Staging and Production environments, the Deploy, Post-deploy, and Cron logs are available only on the first node in the cluster. + +The following table lists application log locations on each environment: Log file | Starter and Pro Integration | Pro Staging | Pro Production ------------------- | --------------------------- | ------------------------------------------------- | ------------------------------------------- -**Deploy log** | `var/log/deploy.log` | `var/log/platform/_stg/deploy.log` | `/var/log/platform//deploy.log` -**Cron log** | `var/log/cron.log` | `var/log/platform/_stg/cron.log` | `var/log/platform//cron.log` -**Nginx access log**| `var/log/access.log` | `var/log/platform/_stg/access.log` | `/var/log/platform//access.log` -**Nginx error log** | `var/log/error.log` | `var/log/platform/_stg/error.log` | `/var/log/platform//error.log` -**PHP access log** | `var/log/php.access.log` | `var/log/platform/_stg/php.access.log` | `/var/log/platform//php.access.log` -**PHP FPM log** | `var/log/app.log` | `var/log/platform/_stg/php5-fpm.log` | `var/log/platform//php5-fpm.log` +**Deploy log** | `/var/log/deploy.log` | First node only:
`/var/log/platform/_stg/deploy.log` | First node only:
`/var/log/platform//deploy.log` +**Post-deploy log** | `/var/log/post_deploy.log` | First node only:
`/var/log/platform/_stg/post_deploy.log` | First node only:
`/var/log/platform//post_deploy.log` +**Cron log** | `/var/log/cron.log` | First node only:
`/var/log/platform/_stg/cron.log` | First node only:
`/var/log/platform//cron.log` +**Nginx access log**| `/var/log/access.log` | `/var/log/platform/_stg/access.log` | `/var/log/platform//access.log` +**Nginx error log** | `/var/log/error.log` | `/var/log/platform/_stg/error.log` | `/var/log/platform//error.log` +**PHP access log** | `/var/log/php.access.log` | `/var/log/platform/_stg/php.access.log` | `/var/log/platform//php.access.log` +**PHP FPM log** | `/var/log/app.log` | `/var/log/platform/_stg/php5-fpm.log` | `/var/log/platform//php5-fpm.log` ## Service logs Because each service runs in a separate container, the service logs are not available in the Integration environment. {{site.data.var.ece}} provides access to the web server container in the Integration environment only. The following service log locations are for the Pro Staging and Production environments: -- **Redis log**: `var/log/platform/_stg/redis-server-_stg.log` -- **Elasticseach log**: `var/log/elasticsearch/elasticsearch.log` -- **Mail log**: `var/log/mail.log` -- **MySQL error log**: `var/log/mysql/mysql-error.log` -- **MySQL slow log**: `var/log/mysql/mysql-slow.log` -- **RabbitMQ log**: `var/log/rabbitmq/rabbit@host1.log` +- **Redis log**: `/var/log/platform/_stg/redis-server-_stg.log` +- **Elasticseach log**: `/var/log/elasticsearch/elasticsearch.log` +- **Mail log**: `/var/log/mail.log` +- **MySQL error log**: `/var/log/mysql/mysql-error.log` +- **MySQL slow log**: `/var/log/mysql/mysql-slow.log` +- **RabbitMQ log**: `/var/log/rabbitmq/rabbit@host1.log` [hook]: {{page.baseurl}}/cloud/project/project-conf-files_magento-app.html#hooks [configlog]: {{page.baseurl}}/config-guide/cli/logging.html -[slacklog]: {{page.baseurl}}/cloud/env/setup-notifications.html +[slacklog]: {{page.baseurl}}/cloud/env/setup-notifications.html \ No newline at end of file diff --git a/guides/v2.2/cloud/project/new-relic.md b/guides/v2.2/cloud/project/new-relic.md index 6254319e069..a5f8cd4a47e 100644 --- a/guides/v2.2/cloud/project/new-relic.md +++ b/guides/v2.2/cloud/project/new-relic.md @@ -29,19 +29,19 @@ Also, we recommend adding at least one Admin user to your New Relic account to m {:.procedure} To add a user: -1. Using your Project Owner New Relic credentials, log in to [New Relic](https://login.newrelic.com/login). +1. Using your Project Owner New Relic credentials, log in to [New Relic](https://login.newrelic.com/login). -1. From the [account dropdown](https://docs.newrelic.com/docs/using-new-relic/welcome-new-relic/getting-started/glossary#account-dropdown) menu, select **Account settings** > **Account** > **Users and roles**. +1. From the [account dropdown](https://docs.newrelic.com/docs/using-new-relic/welcome-new-relic/getting-started/glossary#account-dropdown) menu, select **Account settings** > **Account** > **Users and roles**. -1. Click **New user**. +1. Click **New user**. -1. Add the name and email address for the account. +1. Add the name and email address for the account. -1. Assign the user role: *Admin*, *User*, or *Restricted*. +1. Assign the user role: *Admin*, *User*, or *Restricted*. -1. Click **Add user**. +1. Click **Add user**. -1. Ask the new user to check their email for a New Relic notification with account information. +1. Ask the new user to check their email for a New Relic notification with account information. See [Accounts](https://docs.newrelic.com/docs/accounts/accounts) in the New Relic documentation for information about user roles, managing user accounts, and changing account ownership. @@ -66,22 +66,22 @@ The {{site.data.var.ece}} Starter plan supports up to three instances of a New R {:.procedure} To find your New Relic license key: -1. Open your [account page](https://accounts.magento.cloud/user/). +1. Open your [account page](https://accounts.magento.cloud/user/). -1. On the _Projects_ tab, find your project. +1. On the _Projects_ tab, find your project. -1. Click **View Details** to see the project plan information. +1. Click **View Details** to see the project plan information. -1. Expand the **NewRelic Service** section to view the license key. +1. Expand the **NewRelic Service** section to view the license key. -1. Copy the license key. +1. Copy the license key. {:.procedure} To add a license key to an environment: -1. Change to the environment that needs the license key. For Starter accounts, you need to use the license key to set a variable in the environment. +1. Change to the environment that needs the license key. For Starter accounts, you need to use the license key to set a variable in the environment. -1. Set the variable. +1. Set the variable. ```bash magento-cloud variable:set php:newrelic.license @@ -90,12 +90,12 @@ To add a license key to an environment: {:.bs-callout .bs-callout-info} Adding a variable to an environment triggers a redeployment to update the environment variables and values. See [Working with variables]({{page.baseurl}}/cloud/env/working-with-variables.html). -1. Log in to your New Relic account and verify it is receiving data. +1. Log in to your New Relic account and verify it is receiving data. {:.procedure} To remove a license key from an environment: -1. List environment variables. +1. List environment variables. ```bash magento-cloud vget @@ -115,7 +115,7 @@ To remove a license key from an environment: {:.bs-callout .bs-callout-warning} If you added the license key as a _project_ variable, you must remove that project-level variable. A project variable adds the license to every environment branch created, which can consume or exceed the license limit. To list project variables: `magento-cloud pvget` -1. Delete a variable. +1. Delete a variable. ```bash magento-cloud variable:delete php:newrelic.license diff --git a/guides/v2.2/cloud/project/project-conf-files_magento-app.md b/guides/v2.2/cloud/project/project-conf-files_magento-app.md index 851baab86d9..07bcc2bd759 100644 --- a/guides/v2.2/cloud/project/project-conf-files_magento-app.md +++ b/guides/v2.2/cloud/project/project-conf-files_magento-app.md @@ -96,8 +96,8 @@ Contrary to standard `.htaccess` approaches that accept a _blacklist_ and allow Our default configuration allows the following: -- From the root (`/`) path, only web and media can be accessed -- From the `~/pub/static` and `~/pub/media` paths, any file can be accessed +- From the root (`/`) path, only web and media can be accessed +- From the `~/pub/static` and `~/pub/media` paths, any file can be accessed The following example shows the default configuration for a set of web-accessible locations associated with an entry in the [`mounts` property](#mounts): @@ -139,7 +139,7 @@ web: ``` {:.bs-callout-info} -This example shows the default web configuration for a Cloud project configured to support a single domain. For a project that requires support for multiple websites or stores, the `web` configuration must be set up to support shared domains. See [Configure locations for shared domains]{{ page.baseurl }}/cloud/project-multi-sites.html#locations). +This example shows the default web configuration for a Cloud project configured to support a single domain. For a project that requires support for multiple websites or stores, the `web` configuration must be set up to support shared domains. See [Configure locations for shared domains]({{ page.baseurl }}/cloud/project/project-multi-sites.html#locations). ### `disk` diff --git a/guides/v2.2/cloud/project/project-conf-files_routes.md b/guides/v2.2/cloud/project/project-conf-files_routes.md index 207d8ac64e1..9a87d0e4236 100644 --- a/guides/v2.2/cloud/project/project-conf-files_routes.md +++ b/guides/v2.2/cloud/project/project-conf-files_routes.md @@ -40,33 +40,33 @@ magento-cloud environment:routes The `routes.yaml` file is a list of templated routes and their configurations. You can use the following placeholders in route templates: -- `{default}` represents the qualified domain name configured as the default for the project. For example, if you have a project with the default domain `example.com`, the route templates `http://www.{default}/` and `https://{default}/blog` resolve to the following URLs in a production environment: +- `{default}` represents the qualified domain name configured as the default for the project. For example, if you have a project with the default domain `example.com`, the route templates `http://www.{default}/` and `https://{default}/blog` resolve to the following URLs in a production environment: - ```text - http://www.example.com/ + ```text + http://www.example.com/ - https://www.example.com/blog - ``` - {: .no-copy} + https://www.example.com/blog + ``` + {: .no-copy} - In a non-production branch, the project ID and environment ID replace the `{default}` placeholder when the project is deployed. + In a non-production branch, the project ID and environment ID replace the `{default}` placeholder when the project is deployed. -- `{all}` represents all the domain names configured for the project. For example, if you have a project with `example.com` and `example1.com` domains, the route templates `http://www.{all}/` and `https://{all}/blog` resolve to routes for all domains in the project: +- `{all}` represents all the domain names configured for the project. For example, if you have a project with `example.com` and `example1.com` domains, the route templates `http://www.{all}/` and `https://{all}/blog` resolve to routes for all domains in the project: - ```text - http://www.example.com/ + ```text + http://www.example.com/ - http://www.example.com/blog + http://www.example.com/blog - https://www.example1.com/ + https://www.example1.com/ - https://www.example1.com/blog - ``` - {: .no-copy} + https://www.example1.com/blog + ``` + {: .no-copy} - The `{all}` placeholder is useful for projects configured for multiple domains. In a non-production branch `{all}` is replaced with the project ID and environment ID for each domain. + The `{all}` placeholder is useful for projects configured for multiple domains. In a non-production branch `{all}` is replaced with the project ID and environment ID for each domain. - If a project does not have any domains configured, which is common during development, the `{all}` placeholder behaves in the same way as the `{default}` placeholder. + If a project does not have any domains configured, which is common during development, the `{all}` placeholder behaves in the same way as the `{default}` placeholder. {{site.data.var.ee}} also generates routes for every active Integration environment. For Integration environments, `{default}` is replaced with the following domain name: @@ -131,10 +131,10 @@ In the first sample, the server responds directly to a request of the form `http {{site.data.var.ece}} supports wildcard routes, so you can map multiple subdomains to the same application. This works for redirect and upstream routes. You prefix the route with an asterisk (\*). For example, the following routes to the same application: -- `*.example.com` -- `www.example.com` -- `blog.example.com` -- `us.example.com` +- `*.example.com` +- `www.example.com` +- `blog.example.com` +- `us.example.com` This functions as a catch-all domain in a live environment. @@ -146,8 +146,8 @@ If you define a `http://www.{default}/` route, the route becomes `http://www.add You can put any subdomain before the dot and the route resolves. In this example, the route is defined as `http://*.{default}/`, so both of the following URLs work: -- `http://foo.add-theme-projectID.us.magentosite.cloud/` -- `http://bar.add-theme-projectID.us.magentosite.cloud/` +- `http://foo.add-theme-projectID.us.magentosite.cloud/` +- `http://bar.add-theme-projectID.us.magentosite.cloud/` If you examine the routes of this sample application, you see: diff --git a/guides/v2.2/cloud/project/project-conf-files_services-elastic.md b/guides/v2.2/cloud/project/project-conf-files_services-elastic.md index d40e113f754..d12e086694a 100644 --- a/guides/v2.2/cloud/project/project-conf-files_services-elastic.md +++ b/guides/v2.2/cloud/project/project-conf-files_services-elastic.md @@ -16,8 +16,8 @@ functional_areas: {% include cloud/service-config-integration-starter.md %} -{: .bs-callout-warning} -Staging and Production environments that are in the same cluster share a single Elasticsearch instance, so you must specify a unique Elasticsearch prefix for each of these environments. +{:.bs-callout-tip} +Magento recommends that you always set up Elasticsearch for your {{ site.data.var.ece }} project even if you plan to configure a third-party search tool for your {{ site.data.var.ee }} application. Setting up Elasticsearch provides a fallback option in the event that the third-party search tool fails. {:.procedure} To enable Elasticsearch: @@ -30,6 +30,9 @@ To enable Elasticsearch: disk: 1024 ``` + {:.bs-callout-info} + For details on determining the correct version to install, see [Elasticsearch software compatibility](#elasticsearch-software-compatibility). + 1. Set the `relationships` property in the `.magento.app.yaml` file. ```yaml @@ -59,11 +62,120 @@ To enable Elasticsearch: bin/magento cache:clean ``` +## Elasticsearch software compatibility + +When you install or upgrade your {{ site.data.var.ece }} project, always check for compatibility between the Elasticsearch service version and the [Elasticsearch PHP](https://github.com/elastic/elasticsearch-php) client for {{ site.data.var.ee }}. + +- **First time setup**–Confirm that the Elasticsearch version specified in the `services.yaml` file is compatible with the Elasticsearch PHP client configured for {{ site.data.var.ee }}. + +- **Project upgrade**–Verify that the Elasticsearch PHP client in the new Magento version is compatible with the Elasticsearch service version installed on the Cloud infrastructure. + +{% include cloud/cloud-elasticsearch-client-compatibility.md %} + +{:.procedure} +To check Elasticsearch software compatibility: + +1. Use SSH to log in to the remote environment. + +1. Check the Composer package version for `elasticsearch/elasticsearch`. + + ```bash + composer show elasticsearch/elasticsearch + ``` + + In the response, check the installed version in the `versions` property. + + ```terminal + name : elasticsearch/elasticsearch + descrip. : PHP Client for Elasticsearch + keywords : client, elasticsearch, search + versions : * v6.7.1 + type : library + license : Apache License 2.0 (Apache-2.0) (OSI approved) https://spdx.org licensesApache-2.0.html#licenseText + source : [git] https://github.com/elastic elasticsearch-php.git7be453dd36d1b141b779f2cb956715f8e04ac2f4 + dist : [zip] https://api.github.com/repos/elastic/elasticsearch-php/zipball/ 7be453dd36d1b141b779f2cb956715f8e04ac2f4 7be453dd36d1b141b779f2cb956715f8e04ac2f4 + path : /app/vendor/elasticsearch/elasticsearch + names : elasticsearch/elasticsearch + ``` + + Also, you can find the Elasticsearch PHP client version in the `composer.lock` file in the environment root directory. + +1. From the command line, retrieve the Elasticsearch service connection details. + + ```bash + vendor/bin/ece-tools env:config:show services + ``` + + In the response, find the IP address for the Elasticsearch service endpoint: + + ```terminal + | elasticsearch: | + +------------------------------------------+----------------------------------------------------------------------+ + | username | null | + | scheme | http | + | service | elasticsearch | + | fragment | null | + | ip | 169.254.220.11 | + | hostname | dzggu33f75wi3sd24lgwtoupxm.elasticsearch.service._.magentosite.cloud | + | public | false | + | cluster | fo3qdoxtla4j4-master-7rqtwti | + | host | elasticsearch.internal | + | rel | elasticsearch | + | query | | + | path | null | + | password | null | + | type | elasticsearch:6.5 | + | port | 9200 | + +------------------------------------------+----------------------------------------------------------------------+ + ``` + +1. Retrieve the installed Elasticsearch service `version:number` from the service endpoint. + + ```bash + curl -XGET :9200/ + ``` + + ```terminal + { + "name" : "-AqGi9D", + "cluster_name" : "elasticsearch", + "cluster_uuid" : "_yze6-ywSEW1MaAF8ZPWyQ", + "version" : { + "number" : "6.5.4", + "build_flavor" : "default", + "build_type" : "deb", + "build_hash" : "82a8aa7", + "build_date" : "2019-01-23T12:07:18.760675Z", + "build_snapshot" : false, + "lucene_version" : "7.5.0", + "minimum_wire_compatibility_version" : "5.6.0", + "minimum_index_compatibility_version" : "5.0.0" + }, + " tagline" : "You Know, for Search" + } + ``` + +1. Check version compatibility between the Elasticsearch service and the PHP client. + + If the versions are incompatible, make one of the following updates to your environment configuration: + + - Change the Elasticsearch service version in the `services.yaml` file to a version that is compatible with the Elasticsearch PHP client. On Pro Staging and Production environments, you must submit a support ticket to change the Elasticsearch service version. + + - [Change the Elasticsearch PHP client]({{ page.baseurl }}/config-guide/elasticsearch/es-downgrade.html) to a version that is compatible with the Elasticsearch service version. + ## Restart the Elasticsearch service If you need to restart the [Elasticsearch](https://www.elastic.co) service, you must contact Magento support. -## Elasticsearch plugins +## Additional search configuration + +- By default, the search configuration for Cloud environments regenerates each time you deploy. You can use the `SEARCH_CONFIGURATION` deploy variable to retain custom search settings between deployments. See [Deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#search_configuration). + +- {{ site.data.var.ece }} projects provisioned with a shared Production and Staging environment use a single Elasticsearch instance, so you must specify a unique _Elasticsearch Index prefix_ for each of these environments. See [Configure Magento to use Elasticsearch]({{ page.baseurl}}/config-guide/elasticsearch/configure-magento.html) in the _Configuration Guide_. + +- After you set up the Elasticsearch service for your project, use the Magento Admin UI to test the Elasticsearch connection and customize Elasticsearch settings for {{ site.data.var.ee }}. + +### Elasticsearch plugins Optionally, you can add Elasticsearch plugins by adding the `configuration:plugins` section to the `.magento/services.yaml` file. For example, the following code enables the ICU analysis plugin and Python script support plugins. @@ -77,4 +189,4 @@ elasticsearch: - lang-python ``` -If you use the ElasticSuite third-party plugin, you must [update the `{{site.data.var.ct}}` package]({{page.baseurl}}/cloud/project/ece-tools-update.html) to version 2002.0.19 or later. \ No newline at end of file +If you use the ElasticSuite third-party plugin, you must [update the `{{site.data.var.ct}}` package]({{page.baseurl}}/cloud/project/ece-tools-update.html) to version 2002.0.19 or later. diff --git a/guides/v2.2/cloud/project/project-conf-files_services-mysql.md b/guides/v2.2/cloud/project/project-conf-files_services-mysql.md index dc2b79960c3..341f0d2cb36 100644 --- a/guides/v2.2/cloud/project/project-conf-files_services-mysql.md +++ b/guides/v2.2/cloud/project/project-conf-files_services-mysql.md @@ -10,20 +10,6 @@ The `mysql` service provides persistent data storage based on [MariaDB](https:// {% include cloud/service-config-integration-starter.md %} -Accessing the MariaDB database directly requires you to use a SSH to log in to the remote server, and connect to the database with the following credentials: - -- For Starter - - ```bash - mysql -h database.internal -u - ``` - -- For Pro, use the db, username, and password from the relationship: - - ```bash - mysql -h -p -u -p - ``` - ## Enable MySQL 1. Add the required name, type, and disk value (in MB) to the `.magento/services.yaml` file. @@ -56,7 +42,7 @@ MySQL errors such as `PDO Exception: MySQL server has gone away` may be a result Optionally, you can set up multiple databases as well as multiple users with different permissions. -An _endpoint_ is a set of credentials (or users) with specific privileges. By default, there is one endpoint named `mysql` that has administrator access to all defined databases. To set up multiple databases and users, you must define multiple endpoints in the services.yaml file and declare the relationships in the .magento.app.yaml file. +An _endpoint_ is a set of credentials (or users) with specific privileges. By default, there is one endpoint named `mysql` that has administrator access to all defined databases. To set up multiple database users, you must define multiple endpoints in the services.yaml file and declare the relationships in the .magento.app.yaml file. {: .bs-callout-warning} You cannot use multiple _databases_ with {{site.data.var.ee}} at this time, but you **can** create multiple endpoints to restrict access to the `main` database. @@ -108,3 +94,60 @@ relationships: {: .bs-callout-info } If you configure one MySQL user, you cannot use the [`DEFINER`](http://dev.mysql.com/doc/refman/5.6/en/show-grants.html) access control mechanism for stored procedures and views. + +## Connect to the database + +Accessing the MariaDB database directly requires you to use a SSH to log in to the remote server, and connect to the database. + +1. Log in to the remote server using SSH. + +1. Retrieve the MySQL login credentials from the `database` and `type` properties in the [$MAGENTO_CLOUD_RELATIONSHIPS]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html#relationships) variable. + + ```bash + echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp + ``` + + or + + ```bash + php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));' + ``` + + In the response, find the MySQL information, for example: + + ```json + { + "database" : [ + { + "password" : "", + "rel" : "mysql", + "hostname" : "nnnnnnnn.mysql.service._.magentosite.cloud", + "service" : "mysql", + "host" : "database.internal", + "ip" : "###.###.###.###", + "port" : 3306, + "path" : "main", + "cluster" : "projectid-integration-id", + "query" : { + "is_master" : true + }, + "type" : "mysql:10.0", + "username" : "user", + "scheme" : "mysql" + } + ], + ``` + +1. Connect to the database: + + - For Starter, use the following command: + + ```bash + mysql -h database.internal -u + ``` + + - For Pro, use the following command with db, username, and password retrieved from the `$MAGENTO_CLOUD_RELATIONSHIPS` variable. + + ```bash + mysql -h -p -u -p + ``` diff --git a/guides/v2.2/cloud/project/project-conf-files_services.md b/guides/v2.2/cloud/project/project-conf-files_services.md index be334dbec78..937b5861c1c 100644 --- a/guides/v2.2/cloud/project/project-conf-files_services.md +++ b/guides/v2.2/cloud/project/project-conf-files_services.md @@ -135,7 +135,6 @@ To verify relationships in local environment: type: 'mysql:10.0' port: 3306 ``` - {:.no-copy} {:.procedure} To verify relationships in remote environments: @@ -170,3 +169,6 @@ Service | Magento 2.3 | Magento 2.2 `rabbitmq`| 3.5, 3.7 | 3.5 `redis` | 3.2, 4.0, 5.0 | 3.2, 4.0, 5.0 `varnish` | Magento 2.3.3 and later—4.0, 5.0, 6.2
Magento 2.3.0 to 2.3.2—4.0, 5.0 | 4.0, 5.0 + +{:.bs-callout-info} +When you set up the Elasticsearch service, check to ensure that you use a version that is compatible with the installed [Elasticsearch PHP](https://github.com/elastic/elasticsearch-php) client. See [Check Elasticsearch software compatibility]({{ page.baseurl }}/cloud/project/project-conf-files_services-elastic.html#elasticsearch-software-compatibility). \ No newline at end of file diff --git a/guides/v2.2/cloud/project/project-patch.md b/guides/v2.2/cloud/project/project-patch.md index 8ec9bd98625..74d6364ca44 100644 --- a/guides/v2.2/cloud/project/project-patch.md +++ b/guides/v2.2/cloud/project/project-patch.md @@ -14,32 +14,32 @@ To apply and test a custom patch: You can only apply patches during the build phase of redeployment. -1. On your local workstation, create a branch based on the `integration` branch. +1. On your local workstation, create a branch based on the `integration` branch. ```bash magento-cloud environment:branch ``` -1. Copy the patch file to the `/m2-hotfixes` directory. +1. Copy the patch file to the `/m2-hotfixes` directory. -1. Add, commit, and push your code changes. +1. Add, commit, and push your code changes. ```bash git add -A && git commit -m "Apply patch" && git push origin ``` -1. After test validation, merge this branch with the `integration` branch. +1. After test validation, merge this branch with the `integration` branch. {:.procedure} To test if a patch can be applied using your local workstation: -1. From the project root, apply the patch. +1. From the project root, apply the patch. ```bash git apply ./m2-hotfixes/ ``` -1. Clear the Magento cache. +1. Clear the Magento cache. ```bash php ./bin/magento cache:clean @@ -47,4 +47,4 @@ To test if a patch can be applied using your local workstation: You can also clean the cache using the [Magento Admin Cache Management](http://docs.magento.com/m2/ee/user_guide/system/cache-management.html). -1. Test the patch, make any necessary changes. \ No newline at end of file +1. Test the patch, make any necessary changes. diff --git a/guides/v2.2/cloud/project/project-routes-more-cache.md b/guides/v2.2/cloud/project/project-routes-more-cache.md index 47eee0a2134..0dcc47434f8 100644 --- a/guides/v2.2/cloud/project/project-routes-more-cache.md +++ b/guides/v2.2/cloud/project/project-routes-more-cache.md @@ -51,14 +51,14 @@ http://{default}/path/more/: The preceding example caches the following routes: -- `http://{default}/` -- `http://{default}/path/more/` -- `http://{default}/path/more/etc/` +- `http://{default}/` +- `http://{default}/path/more/` +- `http://{default}/path/more/etc/` And the following routes are **not** cached: -- `http://{default}/path/` -- `http://{default}/path/etc/` +- `http://{default}/path/` +- `http://{default}/path/etc/` {:.bs-callout-info} Regular expressions in routes are **not** supported. @@ -87,10 +87,10 @@ cache: We support the following attributes: -- [`enabled`](#cloud-cache-attrib-en) -- [`headers`](#cloud-cache-attrib-head) -- [`cookies`](#cloud-cache-attrib-cook) -- [`default_ttl`](#cloud-cache-attrib-ttl) +- [`enabled`](#cloud-cache-attrib-en) +- [`headers`](#cloud-cache-attrib-head) +- [`cookies`](#cloud-cache-attrib-cook) +- [`default_ttl`](#cloud-cache-attrib-ttl) ### `enabled` {#cloud-cache-attrib-en} @@ -131,8 +131,8 @@ You can't use wildcards in the cookie name. You must either use a precise cookie Magento cookies have the following restrictions: -- You can set maximum of **50 cookies** in the system. Otherwise, Magento will throw an `Unable to send the cookie. Maximum number of cookies would be exceeded` exception. -- A maximum cookie size is **4096 bytes**. Otherwise, Magento will throw an `Unable to send the cookie. Size of '%name' is %size bytes` exception. +- You can set maximum of **50 cookies** in the system. Otherwise, Magento will throw an `Unable to send the cookie. Maximum number of cookies would be exceeded` exception. +- A maximum cookie size is **4096 bytes**. Otherwise, Magento will throw an `Unable to send the cookie. Size of '%name' is %size bytes` exception. ### `default_ttl` {#cloud-cache-attrib-ttl} diff --git a/guides/v2.2/cloud/project/project-routes-more-redir.md b/guides/v2.2/cloud/project/project-routes-more-redir.md index 542f0a69f50..b580ab0c770 100644 --- a/guides/v2.2/cloud/project/project-routes-more-redir.md +++ b/guides/v2.2/cloud/project/project-routes-more-redir.md @@ -39,22 +39,22 @@ Partial redirects work with any type of route, including routes served directly Two keys are available under `redirects`: -- **expires**—Optional, specifies the amount of time to cache the redirect in the browser. Examples of valid values include `3600s`, `1d`, `2w`, `3m`. +- **expires**—Optional, specifies the amount of time to cache the redirect in the browser. Examples of valid values include `3600s`, `1d`, `2w`, `3m`. -- **paths**—One or more key-value pairs that specify the configuration for partial-route redirect rules. +- **paths**—One or more key-value pairs that specify the configuration for partial-route redirect rules. - For each redirect rule, the key is an expression to filter request paths for redirection. The value is an object that specifies the target destination for the redirect and options for processing the redirect. + For each redirect rule, the key is an expression to filter request paths for redirection. The value is an object that specifies the target destination for the redirect and options for processing the redirect. - The value object has the following properties: + The value object has the following properties: - Property | Description - ----------| ----------- - `to` | Required, a partial absolute path, URL with protocol and host, or pattern that specifies the target destination for the redirect rule. - `regexp`| Optional, defaults to `false`. Specifies whether the path key should be interpreted as a PCRE regular expression. - `prefix` | Specifies whether the redirect applies to both the path and all its children, or just the path itself. Defaults to `true`. This value is not supported if `regexp` is `true`. - `append_suffix`| Determines if the suffix is carried over with the redirect. Defaults to `true`. This value is not supported if the `regexp` key is `true` *or* if the `prefix` key is `false`. - `code` | Specifies the HTTP status code. Valid status codes are [`301` (Moved Permanently)](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2), [`302`](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3), [`307`](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8), and [`308`](https://tools.ietf.org/html/rfc7238). Defaults to `302`. - `expires`| Optional, specifies the amount of time to cache the redirect in the browser. Defaults to the `expires` value defined directly under the `redirects` key, but at this level you can fine-tune the cache expiration for individual partial redirects. + Property | Description + ----------| ----------- + `to` | Required, a partial absolute path, URL with protocol and host, or pattern that specifies the target destination for the redirect rule. + `regexp`| Optional, defaults to `false`. Specifies whether the path key should be interpreted as a PCRE regular expression. + `prefix` | Specifies whether the redirect applies to both the path and all its children, or just the path itself. Defaults to `true`. This value is not supported if `regexp` is `true`. + `append_suffix`| Determines if the suffix is carried over with the redirect. Defaults to `true`. This value is not supported if the `regexp` key is `true` *or* if the `prefix` key is `false`. + `code` | Specifies the HTTP status code. Valid status codes are [`301` (Moved Permanently)](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2), [`302`](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3), [`307`](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.8), and [`308`](https://tools.ietf.org/html/rfc7238). Defaults to `302`. + `expires`| Optional, specifies the amount of time to cache the redirect in the browser. Defaults to the `expires` value defined directly under the `redirects` key, but at this level you can fine-tune the cache expiration for individual partial redirects. ### Examples @@ -88,11 +88,11 @@ http://{default}/: This configuration works as follows: -- Redirects requests that match the pattern `/from` to the path `http://{default}/to`. +- Redirects requests that match the pattern `/from` to the path `http://{default}/to`. -- Redirects requests that match the pattern `/from/another/path` to `https://{default}/to/another/path`. +- Redirects requests that match the pattern `/from/another/path` to `https://{default}/to/another/path`. -- If you change the `prefix` property to `false`, requests that match the pattern `/from` trigger a redirect, but requests that match the pattern `/from/another/path` does not. +- If you change the `prefix` property to `false`, requests that match the pattern `/from` trigger a redirect, but requests that match the pattern `/from/another/path` does not. #### Suffix pattern matching {#redirect-with-suffix} @@ -107,13 +107,13 @@ http://{default}/: This configuration works as follows: -- Redirects requests that match the pattern `/from/path/suffix` to the path `https://{default}/to`. +- Redirects requests that match the pattern `/from/path/suffix` to the path `https://{default}/to`. -- If you change the `append_suffix` property to `true`, then requests that match `/from/path/suffix` redirect to the path `https://{default}/to/path/suffix`. +- If you change the `append_suffix` property to `true`, then requests that match `/from/path/suffix` redirect to the path `https://{default}/to/path/suffix`. #### Path-specific cache configuration {#redirect-with-custom-cache} - Use the following format to customize the time to cache a redirect from a specific path: +Use the following format to customize the time to cache a redirect from a specific path: ```yaml http://{default}/: @@ -127,6 +127,6 @@ http://{default}/: This configuration works as follows: -- Redirects from the first path (`/from`) are cached for 1 day. +- Redirects from the first path (`/from`) are cached for 1 day. -- Redirects from the second path (`/here`) are cached for 2 weeks. +- Redirects from the second path (`/here`) are cached for 2 weeks. diff --git a/guides/v2.2/cloud/project/project-webint-basic.md b/guides/v2.2/cloud/project/project-webint-basic.md index abffa37defe..34b232b9622 100644 --- a/guides/v2.2/cloud/project/project-webint-basic.md +++ b/guides/v2.2/cloud/project/project-webint-basic.md @@ -12,12 +12,12 @@ functional_areas: The {{site.data.var.ece}} [Project Web Interface](https://accounts.magento.cloud) enables you to do the following for all Starter and Pro environments: -- [Access projects](#project-access) -- Create and manage projects -- Access active environments and branches using SSH, CLI, and URLs -- Configure environment settings, environment variables, and routes -- [Create and manage users]({{ page.baseurl }}/cloud/project/user-admin.html) -- [Manage Git branches]({{ page.baseurl }}/cloud/project/project-webint-branch.html) +- [Access projects](#project-access) +- Create and manage projects +- Access active environments and branches using SSH, CLI, and URLs +- Configure environment settings, environment variables, and routes +- [Create and manage users]({{ page.baseurl }}/cloud/project/user-admin.html) +- [Manage Git branches]({{ page.baseurl }}/cloud/project/project-webint-branch.html) As you make changes to these settings, the branch redeploys to the environment. You can make these setting changes for all Starter and Pro environments. @@ -25,9 +25,9 @@ As you make changes to these settings, the branch redeploys to the environment. The Project Web Interface provides several ways to access your project and environments: -- Storefront URL for each active environment -- Secure Shell (SSH) link for SSH access via terminal application -- Clone the project using the Magento Cloud CLI or Git +- Storefront URL for each active environment +- Secure Shell (SSH) link for SSH access via terminal application +- Clone the project using the Magento Cloud CLI or Git To access projects and environments through the Project Web Interface: @@ -149,10 +149,10 @@ Routes allow you to set redirects or upstream settings for applications for your An environment's history includes: -- Initial creation -- Snapshots -- Syncs and merges -- Code pushes +- Initial creation +- Snapshots +- Syncs and merges +- Code pushes To view the history for an environment, log in to your project and select the environment. The page displays a general history of actions completed on the page. For a detailed list of completed actions during build and deployment, we recommend reviewing logs directly on the servers. See [Log locations]({{page.baseurl}}/cloud/project/log-locations.html). @@ -162,11 +162,11 @@ The following figure shows a sample history. The history shows, from oldest to newest: -- Environment branched from `FeatureX` -- Environment synced with the parent -- Environment snapshot created +- Environment branched from `FeatureX` +- Environment synced with the parent +- Environment snapshot created We recommend [creating a snapshot]({{ page.baseurl }}/cloud/project/project-webint-snap.html) before you make any code changes. -- Environment variable added -- Environment snapshot created +- Environment variable added +- Environment snapshot created diff --git a/guides/v2.2/cloud/project/project-webint-branch.md b/guides/v2.2/cloud/project/project-webint-branch.md index 3d08c0a2a02..198237d9afe 100644 --- a/guides/v2.2/cloud/project/project-webint-branch.md +++ b/guides/v2.2/cloud/project/project-webint-branch.md @@ -14,9 +14,9 @@ For more information about managing environments using the CLI, see [Manage bran This topic discusses how to use the Project Web Interface to: -- Add or delete an environment. You cannot add or delete the `master` branch for Pro plan Staging and Production. You can branch from Start plan Master. -- Sync (`git pull`) from the environment's parent -- Merge (`git push`) to the environment's parent +- Add or delete an environment. You cannot add or delete the `master` branch for Pro plan Staging and Production. You can branch from Start plan Master. +- Sync (`git pull`) from the environment's parent +- Merge (`git push`) to the environment's parent {:.bs-callout .bs-callout-info} You cannot create branches from Pro plan Staging and Production `master`. These environments include `master` branches that you deploy updated Git code to from Integration `master`. @@ -25,8 +25,8 @@ You cannot create branches from Pro plan Staging and Production `master`. These Complete development of code and added extensions in a branch and, when complete, merge (`git push`) the branch with its parent or master. -- For Starter, we recommend you create a `staging` branch from Master, then branch from `staging` for development. -- For Pro, create a development branch from the Integration environment. +- For Starter, we recommend you create a `staging` branch from Master, then branch from `staging` for development. +- For Pro, create a development branch from the Integration environment. For branching strategies, review [Starter]({{ page.baseurl }}/cloud/basic-information/starter-architecture.html) and [Pro]({{ page.baseurl }}/cloud/basic-information/starter-develop-deploy-workflow.html) architecture overviews. @@ -42,6 +42,7 @@ To add a branch: 1. In the left navigation bar, click the name of the parent environment. Your new branch is cloned from this environment. Choose a parent environment that is similar to the environment you're about to create. + 1. Click ![Create a branch]({{ site.baseurl }}/common/images/cloud_branch-icon.png){:width="30px"}. 1. In the provided field, enter a branch name. In many cases, the environment name is the same as its ID. @@ -62,8 +63,8 @@ To add a branch: 1. Continue with one of the following: - - [Get started with an environment]({{ page.baseurl }}/cloud/env/environments-start.html) - - [How tos and tutorials]({{ page.baseurl }}/cloud/howtos/how-to.html) + - [Get started with an environment]({{ page.baseurl }}/cloud/env/environments-start.html) + - [How tos and tutorials]({{ page.baseurl }}/cloud/howtos/how-to.html) ## Delete to make a branch inactive {#inactive} @@ -109,9 +110,9 @@ Merging an environment is the same as `git push origin`. You merge to push updat To merge an environment with its parent: 1. [Log in to your project]({{ page.baseurl }}/cloud/project/project-webint-basic.html#project-access). -2. In the left pane, click the name of the branch you want to merge. -3. Click ![Merge an environment]({{ site.baseurl }}/common/images/cloud_environment-merge.png){:width="30px"} (merge). -4. Click **Merge** to confirm the action. +1. In the left pane, click the name of the branch you want to merge. +1. Click ![Merge an environment]({{ site.baseurl }}/common/images/cloud_environment-merge.png){:width="30px"} (merge). +1. Click **Merge** to confirm the action. ## View logs {#logs} @@ -121,14 +122,14 @@ For **Starter** environments, you can review build and deploy logs and the deplo For **Pro** environments, you can review the following logs per environment: -- Integration–Build and deploy and deployment history -- Staging–Build logs and deployment history. You need to SSH into the server to view deploy logs. -- Production–Build logs and deployment history. You need to SSH into the server to view deploy logs. +- Integration–Build and deploy and deployment history +- Staging–Build logs and deployment history. You need to SSH into the server to view deploy logs. +- Production–Build logs and deployment history. You need to SSH into the server to view deploy logs. 1. [Log in to your project]({{ page.baseurl }}/cloud/project/project-webint-basic.html#project-access). -2. In the left pane, click an environment to review logs for. -3. The right pane provides a deployment history of one entry per action attempted including syncs, merges, branches, snapshots, and more. -4. To view the build log, select the Success or Failure link per deployment record on the account. +1. In the left pane, click an environment to review logs for. +1. The right pane provides a deployment history of one entry per action attempted including syncs, merges, branches, snapshots, and more. +1. To view the build log, select the Success or Failure link per deployment record on the account. ## Pull code from a private Git repository {#private} diff --git a/guides/v2.2/cloud/project/project-webint-snap.md b/guides/v2.2/cloud/project/project-webint-snap.md index 5e5527e245c..c48e56f7651 100644 --- a/guides/v2.2/cloud/project/project-webint-snap.md +++ b/guides/v2.2/cloud/project/project-webint-snap.md @@ -16,8 +16,8 @@ You have up to **7 days** to _restore_ a snapshot. We provide two methods for creating and managing snapshots: -- Magento Web Interface -- Magento CLI +- Magento Web Interface +- Magento CLI ## Create a snapshot {#create-snapshot} @@ -123,9 +123,9 @@ To create a database dump: 1. [SSH into the environment]({{ page.baseurl }}/cloud/env/environments-ssh.html) that contains the database you want to copy: - - **Staging:** `ssh -A _stg@.ent.magento.cloud` - - **Production:** `ssh -A @.ent.magento.cloud` - - To SSH into the `master` branch of your Integration environment: + - **Staging:** `ssh -A _stg@.ent.magento.cloud` + - **Production:** `ssh -A @.ent.magento.cloud` + - To SSH into the `master` branch of your Integration environment: ```bash magento-cloud environment:ssh @@ -139,10 +139,10 @@ To create a database dump: {: .bs-callout-info } -- We recommend putting the application in maintenance mode before doing a database dump in Production environments. -- The command creates an archive in your local project directory called `dump-.sql.gz`. -- If an error occurs during the dump, the command deletes the dump file to conserve disk space. Review the logs for details (`var/log/cloud.log`). -- For Pro Production environments, this command dumps only from one of three high-availability nodes, so production data written to a different node during the dump may not be copied. It generates a `var/dbdump.lock` file to prevent running the command on more than one node. +- We recommend putting the application in maintenance mode before doing a database dump in Production environments. +- The command creates an archive in your local project directory called `dump-.sql.gz`. +- If an error occurs during the dump, the command deletes the dump file to conserve disk space. Review the logs for details (`var/log/cloud.log`). +- For Pro Production environments, this command dumps only from one of three high-availability nodes, so production data written to a different node during the dump may not be copied. It generates a `var/dbdump.lock` file to prevent running the command on more than one node. {: .bs-callout-tip } If you want to push this data into an environment, see [Migrate data and static files]({{ page.baseurl }}/cloud/live/stage-prod-migrate.html). diff --git a/guides/v2.2/cloud/project/projects.md b/guides/v2.2/cloud/project/projects.md index 9552bcecc2f..fa7027c6a7e 100644 --- a/guides/v2.2/cloud/project/projects.md +++ b/guides/v2.2/cloud/project/projects.md @@ -11,28 +11,28 @@ We provide a Project Web Interface and CLI commands to fully manage all aspects To manage your project, environment, and branches, see: -- [Configure your project]({{ page.baseurl }}/cloud/project/project-webint-basic.html) -- [Project structure]({{ page.baseurl }}/cloud/project/project-start.html) -- [Create and manage users]({{ page.baseurl }}/cloud/project/user-admin.html) -- Manage branches with the [Project Web Interface]({{ page.baseurl }}/cloud/project/project-webint-branch.html) or [CLI commands]({{ page.baseurl }}/cloud/env/environments-start.html) -- [Snapshots and backup management]({{ page.baseurl }}/cloud/project/project-webint-snap.html) +- [Configure your project]({{ page.baseurl }}/cloud/project/project-webint-basic.html) +- [Project structure]({{ page.baseurl }}/cloud/project/project-start.html) +- [Create and manage users]({{ page.baseurl }}/cloud/project/user-admin.html) +- Manage branches with the [Project Web Interface]({{ page.baseurl }}/cloud/project/project-webint-branch.html) or [CLI commands]({{ page.baseurl }}/cloud/env/environments-start.html) +- [Snapshots and backup management]({{ page.baseurl }}/cloud/project/project-webint-snap.html) ### Project and environment variables {#variables} The following sections detail more about project and environment variables: -- [Overview of environment variables]({{ page.baseurl }}/cloud/env/variables-intro.html) -- [{{site.data.var.ece}} environment variables]({{ page.baseurl }}/cloud/env/environment-vars_cloud.html) -- [Magento application environment variables]({{ page.baseurl }}/cloud/env/environment-vars_magento.html) -- [Configuration management]({{ page.baseurl }}/cloud/live/sens-data-over.html) -- [Example of configuration management]({{ page.baseurl }}/cloud/live/sens-data-initial.html) +- [Overview of environment variables]({{ page.baseurl }}/cloud/env/variables-intro.html) +- [{{site.data.var.ece}} environment variables]({{ page.baseurl }}/cloud/env/environment-vars_cloud.html) +- [Magento application environment variables]({{ page.baseurl }}/cloud/env/environment-vars_magento.html) +- [Configuration management]({{ page.baseurl }}/cloud/live/sens-data-over.html) +- [Example of configuration management]({{ page.baseurl }}/cloud/live/sens-data-initial.html) ### Upgrade and patch {#upgrade} To upgrade and patch Magento, see: -- [Upgrade and test Magento Commerce]({{ page.baseurl }}/cloud/project/project-upgrade.html) -- [Patch and test Magento Commerce]({{ page.baseurl }}/cloud/project/project-patch.html) +- [Upgrade and test Magento Commerce]({{ page.baseurl }}/cloud/project/project-upgrade.html) +- [Patch and test Magento Commerce]({{ page.baseurl }}/cloud/project/project-patch.html) ## Access the Project Web Interface {#login} @@ -44,11 +44,11 @@ With your {{site.data.var.ece}} account created, you can log into the Project We Your project includes [Fastly]({{ page.baseurl }}/cloud/cdn/cloud-fastly.html), [New Relic]({{ page.baseurl }}/cloud/project/new-relic.html), and [Blackfire]({{ page.baseurl }}/cloud/project/project-integrate-blackfire.html) services. The project details display information for your project plan and important licenses and tokens for these integrations. Only the Account Owner has initial access to the credentials and services. You should provide these credentials to technical and developer resources as needed. -- [Fastly](https://https://www.fastly.com/) provides content delivery (CDN), image optimization, and security services (DDoS and WAF) for your {{ site.data.var.ece }} projects. See [Get Fastly credentials]({{ page.baseurl }}/cloud/cdn/configure-fastly.html). +- [Fastly](https://www.fastly.com/) provides content delivery (CDN), image optimization, and security services (DDoS and WAF) for your {{ site.data.var.ece }} projects. See [Get Fastly credentials]({{ page.baseurl }}/cloud/cdn/configure-fastly.html). -- [Blackfire.io Profiler](https://blackfire.io/magento) provides tools for reviewing and optimizing Magento and your store in your environments. The profiler checks every method and call, determining what occurs with performance metrics per step. +- [Blackfire.io Profiler](https://blackfire.io/magento) provides tools for reviewing and optimizing Magento and your store in your environments. The profiler checks every method and call, determining what occurs with performance metrics per step. -- [New Relic](https://newrelic.com) provides application metrics and performance information for Staging and Production environments. +- [New Relic](https://newrelic.com) provides application metrics and performance information for Staging and Production environments. {:.procedure} To review your integration tokens, IDs, and more: @@ -96,10 +96,10 @@ To access an environment store and admin, select a branch and click **Access Sit The Pro plan Production environment includes three nodes that you can access using the following links: -- Load balancer URL: `http[s]://.c..ent.magento.cloud` -- Direct access to one of the three redundant servers: `http[s]://.{1|2|3}..ent.magento.cloud` +- Load balancer URL: `http[s]://.c..ent.magento.cloud` +- Direct access to one of the three redundant servers: `http[s]://.{1|2|3}..ent.magento.cloud` - The production URL is used by the content delivery network (CDN). + The production URL is used by the content delivery network (CDN). If you have inactive Git branches of code, you can toggle displaying the branches in the hierarchy. diff --git a/guides/v2.2/cloud/reference/cli-ref-topic.md b/guides/v2.2/cloud/reference/cli-ref-topic.md index 2db2240da9d..8844e585503 100644 --- a/guides/v2.2/cloud/reference/cli-ref-topic.md +++ b/guides/v2.2/cloud/reference/cli-ref-topic.md @@ -9,8 +9,8 @@ The Magento Cloud CLI is the utility for managing Magento Cloud projects and env You can install the Magento Cloud CLI when setting up your local environment for development: -* [Install Magento prerequisites]({{ page.baseurl }}/cloud/before/before-workspace-magento-prereqs.html) -* [Enable SSH keys]({{ page.baseurl }}/cloud/before/before-workspace-ssh.html) +* [Install Magento prerequisites]({{ page.baseurl }}/cloud/before/before-workspace-magento-prereqs.html) +* [Enable SSH keys]({{ page.baseurl }}/cloud/before/before-workspace-ssh.html) ## Common commands diff --git a/guides/v2.2/cloud/reference/discover-deploy.md b/guides/v2.2/cloud/reference/discover-deploy.md index 45f2c85eaed..7744c48d75f 100644 --- a/guides/v2.2/cloud/reference/discover-deploy.md +++ b/guides/v2.2/cloud/reference/discover-deploy.md @@ -8,21 +8,22 @@ functional_areas: - Deploy --- -Every time you push code from your local workstation to the remote environment or merge code to a base environment branch, such as a merge from the Integration environment to the Staging environment, this activates the build and deploy scripts. These scripts generate new Magento code and provision configured services to the remote environment. +Build and deploy scripts activate when you merge code to a remote environment. These scripts use the environment configuration files and application code to prepare data and configurations to provision Cloud infrastructure and services, and to install or update the {{ site.var.data.ee }} application and third-party and custom extensions in the Cloud environment. The build and deploy process is slightly different for each plan: -- **Starter plans**—For the Integration environment, every active branch build and deploys to a full environment for access and testing. Fully test your code after merging to the `staging` branch. To go live, push `staging` to `master` to deploy to Production. You have full access to all branches through the Project Web Interface and the CLI commands. -- **Pro plans**—For the Integration environment, every _active_ branch builds and deploys to a full environment for access and testing. You must merge your code to the `integration` branch before you can merge to the Staging environment and then the Production environment. You can only merge to Staging and Production using CLI commands with SSH or using the Project Web Interface. +- **Starter plans**—For the Integration environment, every active branch builds and deploys to a full environment for access and testing. Fully test your code after merging to the `staging` branch. To go live, push `staging` to `master` to deploy to the Production environment. You have full access to all branches through the Project Web Interface and the CLI commands. -{:.bs-callout .bs-callout-info} -Verify the code for your site and stores is in the {{site.data.var.ece}} branch. If you point, or include hooks, to code in other branches, such as a private branch, you may encounter problems with the build and deploy process. For example, if you include a theme from a private repo in your branch, the theme will not build with the Magento code. +- **Pro plans**—For the Integration environment, every _active_ branch builds and deploys to a full environment for access and testing. You must merge your code to the `integration` branch before you can merge to the Staging environment and then the Production environment. You can merge to the Staging and Production environments using the Project Web Interface or using SSH and Magento Cloud CLI commands. ## Track the process {#track} -You can track build and deploy actions in real-time using the terminal or the Project Web Interface. The status displays in-progress, pending, success, or failed. You can view the logs in the interface. +You can track build and deploy actions in real-time using the terminal or the Project Web UI Status messages—`in-progress`, `pending`, `success`, or `failed`—display during the deployment process. You can view details in the log files. See [Log locations]({{ page.baseurl }}/cloud/project/log-locations.html). -If you are using external GitHub repositories, the log of the operations does not display in the GitHub session. You can still follow activity in their interface and in the {{site.data.var.ece}} Project Web Interface. +If you are using external GitHub repositories, the log of operations does not display in the GitHub session. However, you can still follow activity in the interface for the external repository and the Project Web Interface. See [Integrations]({{ page.baseurl }}/cloud/integrations/cloud-integrations.html). + +{:.bs-callout-info} +In Integration environments, you cannot view the deploy logs from the Project Web Interface. This feature is available only for Production and Staging environments. However, you can view logs for every phase of the deployment in any environment using the Magento [build and deploy]({{ page.baseurl }}/cloud/project/log-locations.html#build-and-deploy-logs) logs. ## Project configuration {#cloud-deploy-conf} @@ -31,33 +32,106 @@ A set of YAML configuration files located in the project root directory define y For all Starter environments and Pro Integration environments, pushing your Git branch updates all settings and configurations dependent on these files. - [`.magento.app.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html)—defines how to build and deploy Magento, including services, hooks, cron jobs, and more. -- [`.magento.env.yaml`]({{ page.baseurl }}/cloud/project/magento-env-yaml.html)—centralizes the management of build and deploy actions across all of your environments, including Pro Staging and Production, using environment variables. +- [`.magento.env.yaml`]({{ page.baseurl }}/cloud/project/magento-env-yaml.html)—centralizes the management of build and deploy actions across all of your environments, including Pro Staging and Production, using environment variables. - [`.magento/routes.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_routes.html)—defines how Magento processes an incoming URL. - [`.magento/services.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_services.html)—defines the services Magento uses by name and version. For example, this file may include versions of MySQL, PHP extensions, and Elasticsearch. These are referred to as *services*. - [`app/etc/config.php`]({{ site.baseurl }}/guides/v2.2/cloud/live/sens-data-over.html)—defines the [system-specific settings]({{ site.baseurl }}/guides/v2.2/cloud/live/sens-data-over.html#cloud-clp-settings) Magento uses to configure your store. Magento auto-generates this file if it does not detect it during the build phase and includes a list of modules and extensions. If the file exists, the build phase continues as normal, compresses static files using `gzip`, and deploys the files. If you follow [Configuration Management]({{ site.baseurl }}/guides/v2.2/cloud/live/sens-data-over.html) at a later time, the commands update the file without requiring additional steps. - {:.bs-callout .bs-callout-info} - The `app/etc/config.php` file includes a _scopes_ setting that defines how static files deploy during the build phase. By default, the scope is [quick]({{ site.baseurl }}/guides/v2.2/config-guide/cli/config-cli-subcommands-static-deploy-strategies.html#static-file-quick). Static file deployment takes a long time to complete, so doing it during the build phase reduces deployment and site downtime. - ## Required files for your Git branch {#requiredfiles} Your Git branch must have the following files for building and deploying in your local environment and to Integration, Staging, and Production environments: -- `auth.json`—in the root Magento directory. This file includes the Magento Authentication keys entered when creating the project. The file is generated as part of autoprovisioning a new project using a blank template. If you need to verify the file and settings, see [Troubleshoot deployment]({{ page.baseurl }}/cloud/trouble/troubleshoot-deployment.html). +- `auth.json`—in the root Magento directory. This file includes the Magento Authentication keys entered when creating the project. The file is generated as part of autoprovisioning a new project using a blank template. If you need to verify the file and settings, see [Troubleshooting deployment]({{ page.baseurl }}/cloud/trouble/troubleshoot-deployment.html). - [`app/etc/config.php`]({{ site.baseurl }}/guides/v2.2/cloud/live/sens-data-over.html)—auto-generates during the build phase if it does not exist. - [`.magento.app.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html)—updates and saves to the root directory. -- [`.magento/services.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_services.html)—updates and saves `magento/`. -- [`.magento/routes.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_routes.html)—updates and saves to `magento/`. +- [`.magento/services.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_services.html)—updates and saves to the `magento/` directory. +- [`.magento/routes.yaml`]({{ page.baseurl }}/cloud/project/project-conf-files_routes.html)—updates and saves to the `magento/` directory. ## Best practices for builds and deployment {#best-practices} We highly recommend the following best practices and considerations for your deployment process: -- **Always follow the deployment process** to ensure your code is THE SAME in Integration, Staging, and Production. This is vital. Pushing code from Integration environments may become important or needed for upgrades, patches, and configurations. This deployment overwrites Production and any differences in code in that environment. -- **Always add new extensions, integrations, and code in iterated branches** to then build and deploy using the process. Some extensions and integrations must be enabled and configured in a specific order due to dependencies. Adding these in groups can make your build and deploy process much easier and help determine where issues occur. -- **Enter the same variables environment-to-environment.** The values for these [variables]({{ page.baseurl }}/cloud/env/variables-intro.html) may differ across environments, but the variables may be required for your code. -- **Keep sensitive configuration values and data in environment-specific variables.** This includes an `env.php` file, CLI-entered variables, and Project Web Interface-entered variables. The values can differ, but having the variables is important. -- **Test your build and deploy locally and in Staging before deploying to Production.** Extensions and custom code work great in development. Some users push to production only to have failures and issues. Staging gives you an opportunity to fully test your code and implementation in a production environment without extended downtime if something goes wrong in Production. +- **Ensure that you are running the most current version of the `{{site.data.var.ct}}` package**–See [Release notes for {{site.data.var.ct}}]({{ page.baseurl }}/cloud/release-notes/cloud-tools.html). + +- **Follow the build and deploy process**–Ensure that you have the correct code in each environment to avoid overwriting configurations when merging code between environments. For example, to make configuration changes that apply to all environments, modify and test the changes in the local environment before deploying to Integration, and then deploy and test the changes in Staging before deploying to Production. When you merge from one environment to another, the deployment overwrites all code in the remote environment, except environment-specific configuration and settings. See [Build and deploy full steps](#steps). + +- **Use the same variables across environments**–The values for these variables may differ across environments; however, you usually need the same variables in each environment. See [Configuration management for store settings]({{ page.baseurl }}/cloud/live/sens-data-over.html). + +- **Keep sensitive configuration values and data in environment-specific variables**–This includes variables specified using the Magento Cloud CLI, the Project Web interface, or added to the `env.php` file. See [Working with environment variables]({{ page.baseurl }}/cloud/env/working-with-variables.html). + +- **Ensure that all code is available in the environment branch**–If you point to or include hooks to code in other branches, such as a private branch, you may encounter problems with the build and deploy process. For example, if you include a theme from a private repository in your branch, the theme will not build with the Magento code. + +- **Add new extensions, integrations, and code in iterated branches**–Make and test changes locally, push to Integration, then to Staging and Production. Test and resolve issues in each environment before merging the updates to the next environment. Some extensions and integrations must be enabled and configured in a specific order due to dependencies. Adding these in groups can make your build and deploy process much easier and help determine where issues occur. + +- **Verify service versions and relationships and the ability to connect**–Verify the services that are available to your application and ensure you are using the most current, compatible version. See [Service versions]({{ page.baseurl }}/cloud/project/project-conf-files_services.html#service-versions) and [Service relationships]({{ page.baseurl }}/cloud/project/project-conf-files_services.html#service-relationships). + + {:.bs-callout-warning} + If your project uses a shared Staging environment, be aware that changes to the Elasticsearch installation in the Staging environment affect the Production environment. + +- **Test locally and in the Integration environment before deploying to Staging and Production**–Identify and fix issues in your local and Integration environments to prevent extended downtime when you deploy to Staging and Production environments. + + - Use the `magento-cloud local:build` command to test the build in your local environment. Identify and fix any issues related to composer dependencies and environment and application configuration before deploying to a remote environment. See [Test build your code locally before deployment]({{ page.baseurl }}/cloud/live/live-sanity-check.html#test-build). + + - Run the {{ site.data.var.ece }} smart wizard to ensure that your Cloud project configuration follows best practices for build and deployment including static content deployment (SCD) strategy. See [Smart wizard]({{ page.baseurl }}/cloud/deploy/smart-wizards.html). + +- **After completing testing in local and Integration environments, deploy and test in the Staging environment**–See [Deploy code to Staging and Production]({{ page.baseurl }}/cloud/live/stage-prod-migrate.html#code). + +- **Check Production environment configuration**–Before deploying to Production, complete the following tasks: + + - Ensure that you can connect to all three nodes in the Production environment using [SSH]({{ page.baseurl }}/cloud/env/environments-ssh.html#ssh). + + - Verify that Indexers are set to _Update on Schedule_. See [Indexing modes]({{ page.baseurl }}/extension-dev-guide/indexing.html) in the _Extension Developer Guide_. + + - Prepare the environment by updating any environment-specific variables in the Production code, verifying service availability and compatibility, and making any other required configuration changes. + +- **Monitor the deploy process**–Review the deployment status messages and mitigate issues as needed. Review the Cloud [logs]({{page.baseurl}}/cloud/project/log-locations.html) for detailed log messages. + +## Best practices for upgrading your project + +Follow best practices for builds and deployment, and use the [Upgrades and patches]({{ page.baseurl }}/cloud/project/project-upgrade-parent.html) workflow to upgrade your project and environments. Use the following guidelines to plan your upgrade and post-upgrade work: + +- **Backup your project**–Before upgrading the {{ site.data.var.ee }} and any third-party or custom extensions, back up the database in Integration, Staging, and Production environments. See [Back up the database]({{ page.baseurl }}/cloud/project/project-upgrade.html#back-up-the-database). + +- **Check for compatibility issues**– + + - Ensure that any custom themes are compatible with the new {{ site.data.var.ee }} version + + - After upgrading third party and custom extensions, use the `magento-cloud local:build` command to validate composer dependencies before deploying. + + - Review the {{ site.data.var.ee }} release notes and extension documentation to ensure that you have implemented any workarounds or configuration changes required to address known functional issues and bugs related to the upgraded Magento version and extensions. + + - Ensure that the installed service versions are compatible with the new {{ site.data.var.ee }} version, and upgrade services as needed. See [Services]({{ page.baseurl }}/cloud/project/project-conf-files_services.html). + + - Test your database to address any issues introduced by the updates to the Magento version and extensions. + + - Make any required updates to environment-specific settings before deploying to the remote environment. + + - Ensure that the Elasticsearch service version is compatible with the Elasticsearch PHP client version. See [Set up Elasticsearch]({{ page.baseurl }}/cloud/project/project-conf-files_services-elastic.html). + +- **Check database connectivity and available storage in remote environments**– + + - Use SSH to log in to the remote server and verify the connection to the MySQL database. See [Connect to the database]({{ page.baseurl }}/cloud/project/project-conf-files_services-mysql.html#connect-to-the-database). + + - Verify available storage in the remote environment–Use the `disk free` command to view and manage available disk space on your Cloud environments. See [Manage disk space]({{ page.baseurl }}/cloud/project/manage-disk-space.html). + + - Check the size of the upgraded database and verify that the `services.yaml` file has enough disk space allocated. + + - Free up disk space–Clear the cache, and clean the `/log` and `/tmp` directories before deploying. + +- **Plan and perform a successful upgrade on local and Integration environments, before deploying to Staging**–After upgrade, test your deployment and resolve any issues. See [Build and deploy on local]({{ page.baseurl }}/cloud/live/live-sanity-check.html). + +- **Merge code to Staging, and then to Production**–Test and resolve any issues in the Staging environment before pushing changes to the Production environment. See [Prepare to deploy to Staging and Production]({{ page.baseurl }}/cloud/live/stage-prod-migrate-prereq.html). + +- **Complete Post upgrade tasks**– + + - Use SSH to log in to the remote server and verify the following: + + - Check indexer status and reindex as needed. See [Manage the indexers]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-index.html). + + - Check the `cron` logs and the `cron_schedule` table in the Magento database to verify cron status, and rerun cron jobs as needed. + See [Logging]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-cron.html#logging) in the _Configuration Guide_. + + - Complete post-upgrade User Acceptance Testing UAT on Staging and Production environments and fix any issues related to third-party and custom extension upgrades. See [User Acceptance Testing (UAT)]({{ page.baseurl}}/cloud/live/stage-prod-test.html). ## Five phases of Integration build and deployment {#cloud-deploy-over-phases} @@ -66,17 +140,22 @@ The following phases occur in your local development environment and the Integra Integration build and deployment consists of the following phases: [Phase 1: Configuration validation and code retrieval](#cloud-deploy-over-phases-conf) + [Phase 2: Build](#cloud-deploy-over-phases-build) + [Phase 3: Prepare slug](#cloud-deploy-over-phases-slug) + [Phase 4: Deploy slugs and cluster](#cloud-deploy-over-phases-slugclus) + [Phase 5: Deployment hooks](#cloud-deploy-over-phases-hook) + [Post-deployment: configure routing](#cloud-deploy-over-phases-route) For detailed instructions, see [Build and deploy full steps](#steps). ### Phase 1: Code and configuration validation {#cloud-deploy-over-phases-conf} -When you initially set up a project from a template, we retrieve the code from [the {{site.data.var.ee}} template](https://github.com/magento/magento-cloud). This code repo is cloned to your project as the `master` branch. +When you initially set up a project from a template, we retrieve the code from [the {{site.data.var.ece}} template](https://github.com/magento/magento-cloud). This code repo is cloned to your project as the `master` branch. - **For Starter**—`master` branch is your Production environment. - **For Pro**—`master` begins as origin branch for the Integration environment. @@ -91,7 +170,7 @@ This phase also runs `composer install` to retrieve dependencies. ### Phase 2: Build {#cloud-deploy-over-phases-build} -{:.bs-callout .bs-callout-info} +{:.bs-callout-info} During the build phase, the site is not in maintenance mode and will not be brought down if errors or issues occur. We build only what has changed since the last build. This phase builds the codebase and runs hooks in the `build` section of `.magento.app.yaml`. The default Magento build hook is the `php ./vendor/bin/ece-tools` command and performs the following: @@ -100,10 +179,7 @@ This phase builds the codebase and runs hooks in the `build` section of `.magent - Regenerates code and the [dependency injection](https://glossary.magento.com/dependency-injection) configuration (that is, the Magento `generated/` directory, which includes `generated/code` and `generated/metapackage`) using `bin/magento setup:di:compile`. - Checks if the [`app/etc/config.php`]({{ page.baseurl }}/cloud/live/sens-data-over.html) file exists in the codebase. Magento auto-generates this file if it does not detect it during the build phase and includes a list of modules and extensions. If it exists, the build phase continues as normal, compresses static files using `gzip`, and deploys the files, which reduces downtime in the deployment phase. Refer to [Magento build options]({{ site.baseurl }}/guides/v2.2/cloud/env/variables-build.html) to learn about customizing or disabling file compression. - {:.bs-callout .bs-callout-info} - The `app/etc/config.php` file includes a _scopes_ setting that defines how static files deploy during the build phase. By default, the scope is [`quick`]({{ site.baseurl }}/guides/v2.2/config-guide/cli/config-cli-subcommands-static-deploy-strategies.html#static-file-quick). Static file deployment takes a long time to complete, so initiating it during the build phase helps to reduce deployment and site downtime. - -{:.bs-callout .bs-callout-warning} +{:.bs-callout-warning} At this point, the cluster has not been created yet, so you should not try to connect to a database or assume anything was daemonized. After the application builds, it is mounted on a **read-only file system**. You can configure specific mount points that are going to be read/write. You cannot FTP to the server and add modules. Instead, you must add code to your local repository and run `git push`, which builds and deploys the environment. For the project structure, see [Local project directory structure]({{ page.baseurl }}/cloud/project/project-start.html). @@ -132,19 +208,19 @@ Now we provision your applications and all of the [backend](https://glossary.mag - Mounts the read-write file system (mounted on a highly available distributed storage grid) - Configures the network so Magento services can "see" each other (and only each other) -{:.bs-callout .bs-callout-info} +{:.bs-callout-info} Make your changes in a Git branch after all build and deployment completes and push again. All environment file systems are _read-only_. A read-only system guarantees deterministic deployments and dramatically improves your site security because no process can write to the file system. It also works to ensure your code is identical in the Integration, Staging, and Production environments. ### Phase 5: Deployment hooks {#cloud-deploy-over-phases-hook} -{:.bs-callout .bs-callout-info} +{:.bs-callout-info} This phase puts the application in maintenance mode until deployment is complete. The last step runs a deployment script, which you can use to anonymize data in development environments, clear caches, and ping external, continuous integration tools. When this script runs, you have access to all the services in your environment, such as Redis. If the `app/etc/config.php` file does not exist in the codebase, static files are compressed using `gzip` and deployed during this phase. This increases the length of your deploy phase and site maintenance. -{:.bs-callout .bs-callout-info} +{:.bs-callout-info} Refer to [Magento deploy variables]({{ site.baseurl }}/guides/v2.2/cloud/env/variables-deploy.html) to learn about customizing or disabling file compression. There are two default deploy hooks. The `pre-deploy.php` hook completes necessary cleanup and retrieval of resources and code generated in the build hook. The `php ./vendor/bin/m2-ece-deploy` hook runs a series of commands and scripts: @@ -157,7 +233,7 @@ There are two default deploy hooks. The `pre-deploy.php` hook completes necessar - Uses scopes (`-s` flag in build scripts) with a default setting of `quick` for static content deployment strategy. You can customize the strategy using the environment variable [`SCD_STRATEGY`]({{ site.baseurl }}/guides/v2.2/cloud/env/environment-vars_magento.html). For details on these options and features, see [Static files deployment strategies]({{ site.baseurl }}/guides/v2.2/config-guide/cli/config-cli-subcommands-static-deploy-strategies.html) and the `-s` flag for [Deploy static view files]({{ site.baseurl }}/guides/v2.2/config-guide/cli/config-cli-subcommands-static-view.html). -{:.bs-callout .bs-callout-info} +{:.bs-callout-info} Our deploy script uses the values defined by configuration files in the `.magento` directory, then the script deletes the directory and its contents. Your local development environment is not affected. ### Post-deployment: configure routing {#cloud-deploy-over-phases-route} diff --git a/guides/v2.2/cloud/reference/git-integration.md b/guides/v2.2/cloud/reference/git-integration.md index aef86c0afc2..fe0a020d5c9 100644 --- a/guides/v2.2/cloud/reference/git-integration.md +++ b/guides/v2.2/cloud/reference/git-integration.md @@ -8,15 +8,15 @@ redirect_from: Git is the center of all code management, build, and deployment for your {{site.data.var.ece}} stores and sites. We use Git to provide source control for your code: -* Git supports branch development that merges upstream (or to a parent branch) before deploying across your environments. Multiple developers can work together on small to large code updates through Git branch management. -* When you push Git branches, we automatically kick off build and deploy scripts to completely build and verify your code, generate and update a virtual environment, and deploy to the environment for ease of testing. -* Every active Git branch has an associated environment. We use specific .yaml files in {{site.data.var.ece}} code with your customizations to define environment configurations, services, database, and more. +* Git supports branch development that merges upstream (or to a parent branch) before deploying across your environments. Multiple developers can work together on small to large code updates through Git branch management. +* When you push Git branches, we automatically kick off build and deploy scripts to completely build and verify your code, generate and update a virtual environment, and deploy to the environment for ease of testing. +* Every active Git branch has an associated environment. We use specific .yaml files in {{site.data.var.ece}} code with your customizations to define environment configurations, services, database, and more. If you need help understand Git, you can review the following resources: -* [Git documentation](https://git-scm.com/documentation) and [videos](https://git-scm.com/videos) from the makers of Git -* [Git cheatsheet](http://rogerdudler.github.io/git-guide/files/git_cheat_sheet.pdf) and [quick guide](http://rogerdudler.github.io/git-guide/) from Roger Dudler -* [Git video](https://www.youtube.com/watch?v=8KCQe9Pm1kg) with DevForge to understand how people use the repo and commands with a fun story +* [Git documentation](https://git-scm.com/documentation) and [videos](https://git-scm.com/videos) from the makers of Git +* [Git cheatsheet](http://rogerdudler.github.io/git-guide/files/git_cheat_sheet.pdf) and [quick guide](http://rogerdudler.github.io/git-guide/) from Roger Dudler +* [Git video](https://www.youtube.com/watch?v=8KCQe9Pm1kg) with DevForge to understand how people use the repo and commands with a fun story ## Git CLI and clients {#clients} You can interact with Git using [CLI commands](https://git-scm.com/documentation) or using a Git client. Git provides a [Git client](https://git-scm.com/downloads) option, or you can use other clients such as installed on your computer to be able to interact with {{site.data.var.ece}}. @@ -27,15 +27,15 @@ Not everyone remembers [Git](https://git-scm.com/docs) commands with ease. If yo In addition to Git's requirements for [valid branch names](https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html), {{site.data.var.ece}} adds two additional requirements: -* The `/` character isn't allowed in a branch name. -* Branch names must be case-insensitively unique. In other words, the names must be entirely unique regardless of the case you use. For example, if you have a branch named `Sprint`, you cannot create another branch named `sprint`. A branch name of `Sprint2` and `sprint2` are just fine. +* The `/` character isn't allowed in a branch name. +* Branch names must be case-insensitively unique. In other words, the names must be entirely unique regardless of the case you use. For example, if you have a branch named `Sprint`, you cannot create another branch named `sprint`. A branch name of `Sprint2` and `sprint2` are just fine. ## Git branching {#branching} For specifics on creating Git branches, see the following topics: -* [Manage branches with the Project Web Interface]({{ page.baseurl }}/cloud/project/project-webint-branch.html) -* [Manage branches with the CLI]({{ page.baseurl }}/cloud/env/environments-start.html) +* [Manage branches with the Project Web Interface]({{ page.baseurl }}/cloud/project/project-webint-branch.html) +* [Manage branches with the CLI]({{ page.baseurl }}/cloud/env/environments-start.html) ## .gitignore file {#gitignore} Depending on your {{site.data.var.ece}} version, you may need different information added to or commented out in your `.gitignore` file. Git uses this file to determine which files and directories to ignore, before you make a commit to your branches. A .gitignore file should be committed into your root Magento in the repository, in order to share the ignore rules with any other users that clone the repository. diff --git a/guides/v2.2/cloud/release-notes/cloud-release-archive.md b/guides/v2.2/cloud/release-notes/cloud-release-archive.md index c335f286a76..ecbdb1effed 100644 --- a/guides/v2.2/cloud/release-notes/cloud-release-archive.md +++ b/guides/v2.2/cloud/release-notes/cloud-release-archive.md @@ -12,137 +12,139 @@ We merged [`vendor/magento/ece-patches`]({{ site.baseurl }}/guides/v2.2/cloud/co **New features** -- **Improved logging** - - We improved log messaging to provide better explanations when the build or deploy process overrides an environment variable. - - You can now view installation and upgrade progress in real time. Tail the `install_update.log` file to view progress. For example, +- **Improved logging** + - We improved log messaging to provide better explanations when the build or deploy process overrides an environment variable. + - You can now view installation and upgrade progress in real time. Tail the `install_update.log` file to view progress. For example, - tail -f var/log/install_upgrade.log + ```bash + tail -f var/log/install_upgrade.log + ``` -- **New cron command**—You can now unlock specific stuck cron jobs instead of stopping and re-launching all of them with the [`cron:unlock`]({{ site.baseurl }}/guides/v2.2/cloud/trouble/reset-cron-jobs.html) command. Not available in 2.1. +- **New cron command**—You can now unlock specific stuck cron jobs instead of stopping and re-launching all of them with the [`cron:unlock`]({{ site.baseurl }}/guides/v2.2/cloud/trouble/reset-cron-jobs.html) command. Not available in 2.1. -- **Unified configuration file**—You can now configure build and deploy stages using a [`.magento.env.yaml`]({{ site.baseurl }}/guides/v2.2/cloud/project/magento-env-yaml.html) file. +- **Unified configuration file**—You can now configure build and deploy stages using a [`.magento.env.yaml`]({{ site.baseurl }}/guides/v2.2/cloud/project/magento-env-yaml.html) file. -- **Backup configuration files**—The deployment process now automatically creates a backup of the `app/etc/env.php` and `app/etc/config.php` configuration files after deployment. We also added a [new CLI command]({{ site.baseurl }}/guides/v2.2/cloud/trouble/restore-configuration-files.html) to restore these configuration files from a backup. +- **Backup configuration files**—The deployment process now automatically creates a backup of the `app/etc/env.php` and `app/etc/config.php` configuration files after deployment. We also added a [new CLI command]({{ site.baseurl }}/guides/v2.2/cloud/trouble/restore-configuration-files.html) to restore these configuration files from a backup. -- **Troubleshooting validation errors**—We changed the command you must use to resolve validation errors when `config.php` does not contain enough data for static content deployment. Previously, the error message instructed you to run `bin/magento app:config:dump`. Now, you must run `php ./vendor/bin/ece-tools config:dump`. +- **Troubleshooting validation errors**—We changed the command you must use to resolve validation errors when `config.php` does not contain enough data for static content deployment. Previously, the error message instructed you to run `bin/magento app:config:dump`. Now, you must run `php ./vendor/bin/ece-tools config:dump`. -- **New environment variables**—You can now use environment variables to connect custom [search]({{ page.baseurl }}/cloud/env/variables-deploy.html#search_configuration) and [AMQP-based]({{ page.baseurl }}/cloud/env/variables-deploy.html#queue_configuration) services to your site. +- **New environment variables**—You can now use environment variables to connect custom [search]({{ page.baseurl }}/cloud/env/variables-deploy.html#search_configuration) and [AMQP-based]({{ page.baseurl }}/cloud/env/variables-deploy.html#queue_configuration) services to your site. -- We implemented smart patching. Now the package applies patches based not on {{site.data.var.ece}} version, but on patched package version. +- We implemented smart patching. Now the package applies patches based not on {{site.data.var.ece}} version, but on patched package version. **Resolved issues** -- We fixed a logging issue that was causing build errors. +- We fixed a logging issue that was causing build errors. -- We fixed an issue that was causing timeout exceptions when running deployments in interactive mode. +- We fixed an issue that was causing timeout exceptions when running deployments in interactive mode. -- We fixed an issue that was causing errors when using the compact strategy for static content generation. Not available in 2.1. +- We fixed an issue that was causing errors when using the compact strategy for static content generation. Not available in 2.1. -- We fixed an issue that was preventing the deployment script from properly identifying staging and production environments. +- We fixed an issue that was preventing the deployment script from properly identifying staging and production environments. -- We fixed an issue that was causing network issues to disrupt database connections and cause failures during the installation and upgrade process. +- We fixed an issue that was causing network issues to disrupt database connections and cause failures during the installation and upgrade process. -- We fixed an issue preventing you from exporting the configuration files using `app:config:dump` more than once. Not available in 2.1. +- We fixed an issue preventing you from exporting the configuration files using `app:config:dump` more than once. Not available in 2.1. -- We fixed a Redis session _locking_ issue that caused an _Admin_ login delay. Not available in 2.1. +- We fixed a Redis session _locking_ issue that caused an _Admin_ login delay. Not available in 2.1. -- We fixed an implementation issue related to versioning that was causing a conflict with other Composer-based patching modules. +- We fixed an implementation issue related to versioning that was causing a conflict with other Composer-based patching modules. -- We fixed an issue that was causing PHP memory issues during import. +- We fixed an issue that was causing PHP memory issues during import. -- Removed patch; fixing bug in `colinmollenhour/credis` v1.6 to enable support for {{site.data.var.ece}} 2.2.1. Not available in 2.1. +- Removed patch; fixing bug in `colinmollenhour/credis` v1.6 to enable support for {{site.data.var.ece}} 2.2.1. Not available in 2.1. ## v2002.0.7 **Resolved issues** -- We removed `var/view_preprocessed` symlinking to fix an issue that was causing JavaScript minification conflicts. +- We removed `var/view_preprocessed` symlinking to fix an issue that was causing JavaScript minification conflicts. ## v2002.0.6 **Resolved issues** -- We fixed an issue that was causing `gzip` errors when a file or directory name contains spaces. +- We fixed an issue that was causing `gzip` errors when a file or directory name contains spaces. -- We fixed an issue that was preventing deployment scripts from properly recognizing and enabling module dependencies. +- We fixed an issue that was preventing deployment scripts from properly recognizing and enabling module dependencies. ## v2002.0.5 **New features** -- **Configure a cron consumer with an environment variable**—You can now configure cron consumers using the new `CRON_CONSUMERS_RUNNER` environment variable. +- **Configure a cron consumer with an environment variable**—You can now configure cron consumers using the new `CRON_CONSUMERS_RUNNER` environment variable. -- **Configuration scanning**—We now scan for critical components during the build/deploy process and halt the process if the scan fails, which prevents unnecessary downtime due to the site being in maintenance mode. +- **Configuration scanning**—We now scan for critical components during the build/deploy process and halt the process if the scan fails, which prevents unnecessary downtime due to the site being in maintenance mode. -- **Build/deploy notifications**—We added a configuration file that you can use to [set up Slack and/or email notifications]({{ site.baseurl }}/guides/v2.2/cloud/env/setup-notifications.html) for build/deploy actions in all your environments. +- **Build/deploy notifications**—We added a configuration file that you can use to [set up Slack and/or email notifications]({{ site.baseurl }}/guides/v2.2/cloud/env/setup-notifications.html) for build/deploy actions in all your environments. -- **Static content compression**—We now compress static content using [gzip](https://www.gnu.org/software/gzip/) during the build and deploy phases. This compression, coupled with Fastly compression, helps reduce the size of your store and increase deployment speed. If necessary, you can disable compression using a [build option]({{ site.baseurl }}/guides/v2.2/cloud/env/variables-build.html) or [deploy variable]({{ site.baseurl }}/guides/v2.2/cloud/env/variables-deploy.html). See the following topics for more information: +- **Static content compression**—We now compress static content using [gzip](https://www.gnu.org/software/gzip/) during the build and deploy phases. This compression, coupled with Fastly compression, helps reduce the size of your store and increase deployment speed. If necessary, you can disable compression using a [build option]({{ site.baseurl }}/guides/v2.2/cloud/env/variables-build.html) or [deploy variable]({{ site.baseurl }}/guides/v2.2/cloud/env/variables-deploy.html). See the following topics for more information: - - [Magento application environment variables]({{ site.baseurl }}/guides/v2.2/cloud/env/environment-vars_magento.html) - - [Static content deployment performance]({{ site.baseurl }}/guides/v2.2/cloud/live/sens-data-over.html#cloud-confman-scd-over) - - [Deployment process]({{ site.baseurl }}/guides/v2.2/cloud/reference/discover-deploy.html) + - [Magento application environment variables]({{ site.baseurl }}/guides/v2.2/cloud/env/environment-vars_magento.html) + - [Static content deployment performance]({{ site.baseurl }}/guides/v2.2/cloud/live/sens-data-over.html#cloud-confman-scd-over) + - [Deployment process]({{ site.baseurl }}/guides/v2.2/cloud/reference/discover-deploy.html) -- **Configuration management**—We now auto-generate an `app/etc/config.php` file in your Git repository during the build phase if it does not already exist. The auto-generated file includes only a list of modules and extensions. If the file already exists, the build phase continues as normal. If you follow [Configuration Management]({{ site.baseurl }}/guides/v2.2/cloud/live/sens-data-over.html) at a later time, the commands update the file without requiring additional steps. Refer to [Deployment process]({{ site.baseurl }}/guides/v2.2/cloud/reference/discover-deploy.html) for more information. +- **Configuration management**—We now auto-generate an `app/etc/config.php` file in your Git repository during the build phase if it does not already exist. The auto-generated file includes only a list of modules and extensions. If the file already exists, the build phase continues as normal. If you follow [Configuration Management]({{ site.baseurl }}/guides/v2.2/cloud/live/sens-data-over.html) at a later time, the commands update the file without requiring additional steps. Refer to [Deployment process]({{ site.baseurl }}/guides/v2.2/cloud/reference/discover-deploy.html) for more information. -- **Database dumps**—We added a `magento/ece-tools` CLI command for creating database dumps in all environments. For Pro plan Production environments, this command only dumps from one of three high-availability nodes, so production data written to a different node during the dump may not be copied. We recommend putting the application in maintenance mode before doing a database dump in Production environments. See [Snapshots and backup management]({{ site.baseurl }}/guides/v2.2/cloud/project/project-webint-snap.html#db-dump) for more information. +- **Database dumps**—We added a `magento/ece-tools` CLI command for creating database dumps in all environments. For Pro plan Production environments, this command only dumps from one of three high-availability nodes, so production data written to a different node during the dump may not be copied. We recommend putting the application in maintenance mode before doing a database dump in Production environments. See [Snapshots and backup management]({{ site.baseurl }}/guides/v2.2/cloud/project/project-webint-snap.html#db-dump) for more information. -- **Cron interval limitations lifted**—The default cron interval for all environments provisioned in the us-3, eu-3, and ap-3 regions is 1 minute. The default cron interval in all other regions is 5 minutes for Pro Integration environments and 1 minute for Pro Staging and Production environments. To modify your existing cron jobs, edit your settings in `.magento.app.yaml` or create a support ticket for Production/Staging environments. Refer to [Set up cron jobs]({{ site.baseurl }}/guides/v2.2/cloud/configure/setup-cron-jobs.html) for more information. +- **Cron interval limitations lifted**—The default cron interval for all environments provisioned in the us-3, eu-3, and ap-3 regions is 1 minute. The default cron interval in all other regions is 5 minutes for Pro Integration environments and 1 minute for Pro Staging and Production environments. To modify your existing cron jobs, edit your settings in `.magento.app.yaml` or create a support ticket for Production/Staging environments. Refer to [Set up cron jobs]({{ site.baseurl }}/guides/v2.2/cloud/configure/setup-cron-jobs.html) for more information. **Resolved issues** -- We fixed an issue that was causing long deploy times due to the deploy process invoking the `cache-clean` operation before static content deployment. +- We fixed an issue that was causing long deploy times due to the deploy process invoking the `cache-clean` operation before static content deployment. -- We fixed an issue causing errors during the static content generation step of deployment on Production environments. +- We fixed an issue causing errors during the static content generation step of deployment on Production environments. -- We fixed an issue preventing some `magento/ece-tools` commands from logging output to `stderr`. +- We fixed an issue preventing some `magento/ece-tools` commands from logging output to `stderr`. -- We fixed an issue preventing base URL values in `env.php` from being updated in forked branches. +- We fixed an issue preventing base URL values in `env.php` from being updated in forked branches. -- We fixed an issue causing the `magento setup:install` command to add an unsecure prefix (`http://`) to secure base URLs. +- We fixed an issue causing the `magento setup:install` command to add an unsecure prefix (`http://`) to secure base URLs. -- We fixed an issue preventing patch errors from causing deployment failures. +- We fixed an issue preventing patch errors from causing deployment failures. -- We fixed an issue preventing `{{site.data.var.ct}}` from halting execution and throwing an exception if no patches can be applied. +- We fixed an issue preventing `{{site.data.var.ct}}` from halting execution and throwing an exception if no patches can be applied. -- We fixed an issue causing errors when loading the storefront after enabling HTML minification in the Magento Admin. +- We fixed an issue causing errors when loading the storefront after enabling HTML minification in the Magento Admin. ## v2002.0.4 **Resolved issues** -- You can now [manually reset stuck Magento cron jobs]({{ site.baseurl }}/guides/v2.2/cloud/trouble/reset-cron-jobs.html) using a CLI command in all environments via SSH access. The deployment process automatically resets cron jobs. +- You can now [manually reset stuck Magento cron jobs]({{ site.baseurl }}/guides/v2.2/cloud/trouble/reset-cron-jobs.html) using a CLI command in all environments via SSH access. The deployment process automatically resets cron jobs. ## v2002.0.3 **Resolved issues** -- We fixed an issue that was causing pages to time out because Redis was taking too long to read/write. You can now use the `disable_locking` parameter in Redis configurations to prevent this issue. +- We fixed an issue that was causing pages to time out because Redis was taking too long to read/write. You can now use the `disable_locking` parameter in Redis configurations to prevent this issue. ## v2002.0.2 **Resolved issues** -- The RabbitMQ configuration process now obtains all required parameters automatically. +- The RabbitMQ configuration process now obtains all required parameters automatically. ## v2002.0.1 **New features** -- {{site.data.var.ece}} now supports scopes and [static content deployment strategies]({{ site.baseurl }}/guides/v2.2/config-guide/cli/config-cli-subcommands-static-deploy-strategies.html). We have added the `–s` parameter with a default setting of `quick` for the static content deployment strategy. You can use the environment variable [SCD_STRATEGY]({{ site.baseurl }}/guides/v2.2/cloud/env/variables-deploy.html) to customize and use these strategies with your build and deploy actions. This variable supports the options `standard`, `quick`, or `compact`. If you select `compact`, we override the `STATIC_CONTENT_THREADS` value with `1`, which can slow deployment, especially in production environments. Not available in 2.1. +- {{site.data.var.ece}} now supports scopes and [static content deployment strategies]({{ site.baseurl }}/guides/v2.2/config-guide/cli/config-cli-subcommands-static-deploy-strategies.html). We have added the `–s` parameter with a default setting of `quick` for the static content deployment strategy. You can use the environment variable [SCD_STRATEGY]({{ site.baseurl }}/guides/v2.2/cloud/env/variables-deploy.html) to customize and use these strategies with your build and deploy actions. This variable supports the options `standard`, `quick`, or `compact`. If you select `compact`, we override the `STATIC_CONTENT_THREADS` value with `1`, which can slow deployment, especially in production environments. Not available in 2.1. -- We have created a log file on environments to capture and compile build and deploy actions. The file is located in the `var/log/cloud.log` file inside the Magento root application directory. +- We have created a log file on environments to capture and compile build and deploy actions. The file is located in the `var/log/cloud.log` file inside the Magento root application directory. **Resolved issues** -- Refactored the `{{site.data.var.ct}}` package to make it compatible with {{site.data.var.ece}} 2.2.0 and higher. +- Refactored the `{{site.data.var.ct}}` package to make it compatible with {{site.data.var.ece}} 2.2.0 and higher. -- We fixed an issue that was preventing `{{site.data.var.ct}}` from halting execution and throwing an exception if no patches can be applied. +- We fixed an issue that was preventing `{{site.data.var.ct}}` from halting execution and throwing an exception if no patches can be applied. -- We fixed an issue that was causing exceptions to be thrown when dependency injection (di) compilation is skipped during builds. +- We fixed an issue that was causing exceptions to be thrown when dependency injection (di) compilation is skipped during builds. -- We fixed an issue that was causing the deploy process to overwrite custom Redis configurations in the `env.php` file. +- We fixed an issue that was causing the deploy process to overwrite custom Redis configurations in the `env.php` file. -- We fixed an issue that was causing redirect loops due to disabled by default secure admin. +- We fixed an issue that was causing redirect loops due to disabled by default secure admin. ## v2002.0.0 diff --git a/guides/v2.2/cloud/release-notes/cloud-tools.md b/guides/v2.2/cloud/release-notes/cloud-tools.md index 8c601354628..eeb18bc9318 100644 --- a/guides/v2.2/cloud/release-notes/cloud-tools.md +++ b/guides/v2.2/cloud/release-notes/cloud-tools.md @@ -14,501 +14,500 @@ The following updates describe the latest improvements to the `{{site.data.var.c The release notes include: -- {:.new}New features -- {:.fix}Fixes and improvements +- {:.new}New features +- {:.fix}Fixes and improvements ## v2002.0.21 -- {:.new}**Docker updates**— +- {:.new}**Docker updates**— - - {:.new}**New Docker Images**—Supported by Magento versions 2.3.3 and later + - {:.new}**New Docker Images**—Supported by Magento versions 2.3.3 and later - - PHP version 7.3. + - PHP version 7.3. - - Varnish Cache 6.2.0 + - Varnish Cache 6.2.0 - - {:.new}Added support to apply custom hook configuration specified in `.magento.app.yaml` in the Docker environment. Previously, the Docker environment supported only the default hook configuration. + - {:.new}Added support to apply custom hook configuration specified in `.magento.app.yaml` in the Docker environment. Previously, the Docker environment supported only the default hook configuration. - - {:.new}Docker ENV files are no longer generated during the Docker build, and the `docker:config:convert` command is deprecated. The corresponding data is now stored in the `docker-compose.yml` file. + - {:.new}Docker ENV files are no longer generated during the Docker build, and the `docker:config:convert` command is deprecated. The corresponding data is now stored in the `docker-compose.yml` file. - - {:.new}**Updated PHP image**–Added Node.js to the PHP Docker image to support node, npm, and grunt-cli capabilities. + - {:.new}**Updated PHP image**–Added Node.js to the PHP Docker image to support node, npm, and grunt-cli capabilities. -- {:.new}**Environment variable updates**– +- {:.new}**Environment variable updates**– - - {:.new}Added the **LOCK_PROVIDER** deploy variable to configure the lock provider which prevents the launch of duplicate cron jobs and cron groups. See the variable description in the [deploy variables]({{page.baseurl}}/cloud/env/variables-deploy.html#lock_provider) topic. + - {:.new}Added the **LOCK_PROVIDER** deploy variable to configure the lock provider which prevents the launch of duplicate cron jobs and cron groups. See the variable description in the [deploy variables]({{page.baseurl}}/cloud/env/variables-deploy.html#lock_provider) topic. - - {:.new}Added the **CONSUMERS_WAIT_FOR_MAX_MESSAGES** environment variable to configure how consumers process messages from the message queue when using the `CRON_CONSUMERS_RUNNER` environment variable to manage cron jobs. See the variable description in the [deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#consumers_wait_for_max_messages) topic. + - {:.new}Added the **CONSUMERS_WAIT_FOR_MAX_MESSAGES** environment variable to configure how consumers process messages from the message queue when using the `CRON_CONSUMERS_RUNNER` environment variable to manage cron jobs. See the variable description in the [deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#consumers_wait_for_max_messages) topic. - - {:.fix}Fixed an issue that can cause database deadlock errors when the `consumers_runner` cron job starts multiple instances of the same consumer on different nodes. Now, if you have enabled the [**CRON_CONSUMERS_RUNNER**]({{ page.baseurl }}/cloud/env/variables-deploy.html#cron_consumers_runner) deploy variable in your environment, the `consumers_runner` job uses the `single-thread` option to start one instance of each consumer on only one node. + - {:.fix}Fixed an issue that can cause database deadlock errors when the `consumers_runner` cron job starts multiple instances of the same consumer on different nodes. Now, if you have enabled the [**CRON_CONSUMERS_RUNNER**]({{ page.baseurl }}/cloud/env/variables-deploy.html#cron_consumers_runner) deploy variable in your environment, the `consumers_runner` job uses the `single-thread` option to start one instance of each consumer on only one node. - - {:.fix}Fixed an issue affecting [**WARM_UP_PAGES**]({{ page.baseurl }}/cloud/env/variables-post-deploy.html#warm_up_pages) functionality that uses a default store URL. Now, if the `config:show:default-url` command cannot fetch a base URL, then the URL from the MAGENTO_CLOUD_ROUTES variable is used. + - {:.fix}Fixed an issue affecting [**WARM_UP_PAGES**]({{ page.baseurl }}/cloud/env/variables-post-deploy.html#warm_up_pages) functionality that uses a default store URL. Now, if the `config:show:default-url` command cannot fetch a base URL, then the URL from the MAGENTO_CLOUD_ROUTES variable is used. -- {:.new}Updated the logging information returned by the `module:refresh` command. Now, you can see a detailed list of enabled modules in the `cloud.log` file. +- {:.new}Updated the logging information returned by the `module:refresh` command. Now, you can see a detailed list of enabled modules in the `cloud.log` file. -- {:.new}Improved version compatibility validation and warning notifications for compatibility issues between Magento version and installed services, such as Elasticsearch, RabbitMq, Redis, and DB. +- {:.new}Improved version compatibility validation and warning notifications for compatibility issues between Magento version and installed services, such as Elasticsearch, RabbitMq, Redis, and DB. -- {:.new}Updated interactive validations for service compatibility to reflect supported versions for the new {{ site.data.var.ee }} 2.3.3 and 2.2.10 releases. See [Service versions]({{ page.baseurl }}/cloud/project/project-conf-files_services.html#service-versions). +- {:.new}Updated interactive validations for service compatibility to reflect supported versions for the new {{ site.data.var.ee }} 2.3.3 and 2.2.10 releases. See [Service versions]({{ page.baseurl }}/cloud/project/project-conf-files_services.html#service-versions). -- {:.fix}Improved the log message returned when the cron job management process in the deploy phase tries to stop a cron job that has already finished to clarify that this issue is not an error. Changed the log level from `INFO` to `DEBUG`. +- {:.fix}Improved the log message returned when the cron job management process in the deploy phase tries to stop a cron job that has already finished to clarify that this issue is not an error. Changed the log level from `INFO` to `DEBUG`. -- {:.fix}Fixed an issue when running the `setup:upgrade` command that did not interrupt the deployment process when a failure occurred during the `app:config:import` task. +- {:.fix}Fixed an issue when running the `setup:upgrade` command that did not interrupt the deployment process when a failure occurred during the `app:config:import` task. -- {:.new}Changed the default log level for the file handler to `debug` to reduce the amount of detail in the log displayed in the Project Web Interface, while still providing detailed information for debugging. +- {:.new}Changed the default log level for the file handler to `debug` to reduce the amount of detail in the log displayed in the Project Web Interface, while still providing detailed information for debugging. -- {:.fix}Fixed an issue that caused an error with static content deployment during build. After a Magento installation and `{{site.data.var.ct}}` config dump, an error occurred if there was no locale specified for the admin user in the `config.php` file. Now, there is a default locale for the admin user in the `config.php` file. +- {:.fix}Fixed an issue that caused an error with static content deployment during build. After a Magento installation and `{{site.data.var.ct}}` config dump, an error occurred if there was no locale specified for the admin user in the `config.php` file. Now, there is a default locale for the admin user in the `config.php` file. -- {:.fix}Fixed an `Undefined index error` that occurs when a Magento Cloud CLI command fails in an environment that is not configured with a secure URL (https). Now, the ece-tools package uses the base URL (http) if the secure URL is not available. +- {:.fix}Fixed an `Undefined index error` that occurs when a Magento Cloud CLI command fails in an environment that is not configured with a secure URL (https). Now, the ece-tools package uses the base URL (http) if the secure URL is not available. ## v2002.0.20 -- {:.new}**Docker Updates**— +- {:.new}**Docker Updates**— - - {:.new}You can now perform functional testing using the + - {:.new}You can now perform functional testing using the `{{site.data.var.ct}}` package in the Docker environment. See[Functional testing in Docker]({{page.baseurl}}/cloud/docker/docker-development-testing.html). - - {:.new}Added support for configuring PHP modules using the `.magento.app.yaml` file. Any [PHP Extensions specified in the `.magento.app.yaml` file]({{page.baseurl}}/cloud/project/project-conf-files_magento-app.html#php-extensions) become available in the Docker PHP containers. + - {:.new}Added support for configuring PHP modules using the `.magento.app.yaml` file. Any [PHP Extensions specified in the `.magento.app.yaml` file]({{page.baseurl}}/cloud/project/project-conf-files_magento-app.html#php-extensions) become available in the Docker PHP containers. - - {:.new}There are new commands available to improve the Docker command line experience. See the [`bin/docker` section of the Docker reference]({{page.baseurl}}/cloud/docker/docker-quick-reference.html#bindocker). + - {:.new}There are new commands available to improve the Docker command line experience. See the [`bin/docker` section of the Docker reference]({{page.baseurl}}/cloud/docker/docker-quick-reference.html#bindocker). - - {:.new}Added the ability to use Mutagen.io to synchronize files during development between the local host and Docker. See [Docker prerequisites]({{page.baseurl}}/cloud/docker/docker-config.html#prerequisites). + - {:.new}Added the ability to use Mutagen.io to synchronize files during development between the local host and Docker. See [Docker prerequisites]({{page.baseurl}}/cloud/docker/docker-config.html#prerequisites). - - {:.fix}Corrected the default path when using the Docker environment. Now, when you use SSH to log in to the Docker container, you are at the Magento root in the `/app` directory, as expected. + - {:.fix}Corrected the default path when using the Docker environment. Now, when you use SSH to log in to the Docker container, you are at the Magento root in the `/app` directory, as expected. - - {:.fix}Updated the Sodium library from version 1.0.11 to version 1.0.18, and updated the Sodium PHP extension. + - {:.fix}Updated the Sodium library from version 1.0.11 to version 1.0.18, and updated the Sodium PHP extension. - {:.bs-callout-warning} - {{site.data.var.ece}} customers must submit a support ticket to upgrade the libsodium package on Pro Production and Staging environments prior to upgrading to {{site.data.var.ee}} 2.3.2. Currently, you cannot upgrade Starter environments to {{site.data.var.ee}} 2.3.2. + {:.bs-callout-warning} + {{site.data.var.ece}} customers must submit a support ticket to upgrade the libsodium package on Pro Production and Staging environments prior to upgrading to {{site.data.var.ee}} 2.3.2. Currently, you cannot upgrade Starter environments to {{site.data.var.ee}} 2.3.2. - - {:.fix}Added the `analysis-icu` and the `analysis-phonetic` Elasticsearch plugins to all Docker images. + - {:.fix}Added the `analysis-icu` and the `analysis-phonetic` Elasticsearch plugins to all Docker images. - - {:.fix}Improved validations: When using options for the `docker:build` command, you must provide a value when using an option. Also, added validation for the Node version when using the `docker:build run` command. + - {:.fix}Improved validations: When using options for the `docker:build` command, you must provide a value when using an option. Also, added validation for the Node version when using the `docker:build run` command. -- {:.new}**Environment variable updates**— +- {:.new}**Environment variable updates**— - - {:.new}Added support for database table prefixes using the [DATABASE_CONFIGURATION environment variable]({{page.baseurl}}/cloud/env/variables-deploy.html#database_configuration). + - {:.new}Added support for database table prefixes using the [DATABASE_CONFIGURATION environment variable]({{page.baseurl}}/cloud/env/variables-deploy.html#database_configuration). - - {:.new}Added the **FORCE_UPDATE_URLS** deploy variable to update Magento base URLs when deploying to Pro and Starter production and staging environments. See the definition in the [deploy variables]({{page.baseurl}}/cloud/env/variables-deploy.html#force_update_urls) content. + - {:.new}Added the **FORCE_UPDATE_URLS** deploy variable to update Magento base URLs when deploying to Pro and Starter production and staging environments. See the definition in the [deploy variables]({{page.baseurl}}/cloud/env/variables-deploy.html#force_update_urls) content. - - {:.new}Added the **TTFB_TESTED_PAGES** post-deploy variable to configure _Time to First Byte_ page tests to check Magento Commerce application performance on sites deployed to Cloud infrastructure. See the variable description in [post-deploy variables]({{ page.baseurl }}/cloud/env/variables-post-deploy.html). + - {:.new}Added the **TTFB_TESTED_PAGES** post-deploy variable to configure _Time to First Byte_ page tests to check Magento Commerce application performance on sites deployed to Cloud infrastructure. See the variable description in [post-deploy variables]({{ page.baseurl }}/cloud/env/variables-post-deploy.html). - - {:.fix}Fixed an issue with multi-threaded SCD, which caused random failures in static content deployment. The workaround involved setting the **SCD_THREADS** variable to `1`. You can now increase the count as needed. See the definitions in the [deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#scd_threads) and the [build variables]({{ page.baseurl }}/cloud/env/variables-build.html#scd_threads). + - {:.fix}Fixed an issue with multi-threaded SCD, which caused random failures in static content deployment. The workaround involved setting the **SCD_THREADS** variable to `1`. You can now increase the count as needed. See the definitions in the [deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#scd_threads) and the [build variables]({{ page.baseurl }}/cloud/env/variables-build.html#scd_threads). - - {:.fix}You can configure the **WARM_UP_PAGES** environment variable to cache single pages, multiple domains, and multiple pages. See the expanded definition in the [post-deploy variables]({{page.baseurl}}/cloud/env/variables-post-deploy.html#warm_up_pages) content. + - {:.fix}You can configure the **WARM_UP_PAGES** environment variable to cache single pages, multiple domains, and multiple pages. See the expanded definition in the [post-deploy variables]({{page.baseurl}}/cloud/env/variables-post-deploy.html#warm_up_pages) content. -- {:.fix}Added the `pub/static/.htaccess` file to the exclude list. [Fix submitted by Björn Kraus of PHOENIX MEDIA GmbH](https://github.com/magento/ece-tools/pull/455). +- {:.fix}Added the `pub/static/.htaccess` file to the exclude list. [Fix submitted by Björn Kraus of PHOENIX MEDIA GmbH](https://github.com/magento/ece-tools/pull/455). -- {:.fix}Fixed an error when all validation messages were showing as `Critical` if at least one critical level validator returned an error. +- {:.fix}Fixed an error when all validation messages were showing as `Critical` if at least one critical level validator returned an error. -- {:.fix}Fixed an issue that caused a deployment failure if the Magento base URL did not exist in the database. +- {:.fix}Fixed an issue that caused a deployment failure if the Magento base URL did not exist in the database. -- {:.new}Added a new **`env:config:show` command** to the `{{site.data.var.ct}}` package that displays environment services, routes, or variables. See [Services, routes, and variables]({{page.baseurl}}/cloud/reference/ece-tools-reference.html#services-routes-and-variables). [Feature submitted by Vladimir Kerkhoff](https://github.com/magento/ece-tools/pull/486). +- {:.new}Added a new **`env:config:show` command** to the `{{site.data.var.ct}}` package that displays environment services, routes, or variables. See [Services, routes, and variables]({{page.baseurl}}/cloud/reference/ece-tools-reference.html#services-routes-and-variables). [Feature submitted by Vladimir Kerkhoff](https://github.com/magento/ece-tools/pull/486). -- {:.fix}Fixed an issue that caused a critical error when attempting to install Magento 2.2.6 or earlier with `{{site.data.var.ct}}` develop after shell refactoring. +- {:.fix}Fixed an issue that caused a critical error when attempting to install Magento 2.2.6 or earlier with `{{site.data.var.ct}}` develop after shell refactoring. -- {:.fix}Fixed an issue that caused Magento 2.1.x and 2.2.x installations to fail with a warning about using a deprecated version of Carbon. +- {:.fix}Fixed an issue that caused Magento 2.1.x and 2.2.x installations to fail with a warning about using a deprecated version of Carbon. -- {:.fix}Decreased the `cloud.log` log level for shell output from `info` to `debug`. +- {:.fix}Decreased the `cloud.log` log level for shell output from `info` to `debug`. -- {:.fix}Added the `--remove-definers (-d)` option to the `ece-tools db-dump` command to remove definers from the dump file. +- {:.fix}Added the `--remove-definers (-d)` option to the `ece-tools db-dump` command to remove definers from the dump file. ## v2002.0.19 -- {:.fix}Fixed an issue that overwrites the `env.php` file during a deploy, resulting in a loss of custom configurations. This update ensures that {{site.data.var.ece}} updates the `env.php` file with every deployment, while preserving custom configurations. +- {:.fix}Fixed an issue that overwrites the `env.php` file during a deploy, resulting in a loss of custom configurations. This update ensures that {{site.data.var.ece}} updates the `env.php` file with every deployment, while preserving custom configurations. ## v2002.0.18 -- {:.new}**Docker Updates**— +- {:.new}**Docker Updates**— - - {:.new}Now, the Docker environment supports the cron configuration defined in the [crons property of the .magento.app.yaml file]({{page.baseurl}}/cloud/project/project-conf-files_magento-app.html#crons). + - {:.new}Now, the Docker environment supports the cron configuration defined in the [crons property of the .magento.app.yaml file]({{page.baseurl}}/cloud/project/project-conf-files_magento-app.html#crons). - - {:.new}**New Docker Container**—Added a [TLS termination proxy container]({{page.baseurl}}/cloud/docker/docker-development.html#varnish-container) to facilitate the Varnish SSL termination over HTTPS. + - {:.new}**New Docker Container**—Added a [TLS termination proxy container]({{page.baseurl}}/cloud/docker/docker-development.html#varnish-container) to facilitate the Varnish SSL termination over HTTPS. - - {:.new}**New Docker Image**—Added a Node.js image to support Gulp and other capabilities, such as Jasmine JS Unit Testing. + - {:.new}**New Docker Image**—Added a Node.js image to support Gulp and other capabilities, such as Jasmine JS Unit Testing. - - {:.new}**Docker build modes**—Now you can choose to launch the Docker environment in [Production mode or Developer mode]({{page.baseurl}}/cloud/docker/docker-config.html#launch-modes). Developer mode supports active development with full, writable filesystem permissions. + - {:.new}**Docker build modes**—Now you can choose to launch the Docker environment in [Production mode or Developer mode]({{page.baseurl}}/cloud/docker/docker-config.html#launch-modes). Developer mode supports active development with full, writable filesystem permissions. - - {:.fix}Fixed an issue that caused Docker deploy to fail with a `Name or service not known` error if the cache is configured for a service that is not available. Now, you can remove a service from the [`.magento/services.yaml` file]({{page.baseurl}}/cloud/project/project-conf-files_services.html). The Docker configuration generator updates the service in the `docker/config.php.dist` file automatically. + - {:.fix}Fixed an issue that caused Docker deploy to fail with a `Name or service not known` error if the cache is configured for a service that is not available. Now, you can remove a service from the [`.magento/services.yaml` file]({{page.baseurl}}/cloud/project/project-conf-files_services.html). The Docker configuration generator updates the service in the `docker/config.php.dist` file automatically. - - {:.new}Added interactive validations for service compatibility. Now, if a requested service is incompatible with the Magento version or other services, the _interactive mode_ prompts the user with a message and a choice to continue. See the [Service versions]({{page.baseurl}}/cloud/docker/docker-config.html#service-versions) available for Docker. Use the `-n` option to skip the interactivity for CICD purposes. + - {:.new}Added interactive validations for service compatibility. Now, if a requested service is incompatible with the Magento version or other services, the _interactive mode_ prompts the user with a message and a choice to continue. See the [Service versions]({{page.baseurl}}/cloud/docker/docker-config.html#service-versions) available for Docker. Use the `-n` option to skip the interactivity for CICD purposes. - - {:.fix}Fixed an issue with the Docker compose `db-dump` command that erased existing dumps. + - {:.fix}Fixed an issue with the Docker compose `db-dump` command that erased existing dumps. -- {:.fix}Fixed an issue that assigned Redis `session`, `default`, and `page_cache` cache storage to the same database ID. +- {:.fix}Fixed an issue that assigned Redis `session`, `default`, and `page_cache` cache storage to the same database ID. -- {:.new}**Environment variable updates**— +- {:.new}**Environment variable updates**— - - {:.new}The new **ELASTICSUITE\_CONFIGURATION** environment variable retains your customized service settings between deployments. See the definition in the [deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#elasticsuite_configuration) content. + - {:.new}The new **ELASTICSUITE\_CONFIGURATION** environment variable retains your customized service settings between deployments. See the definition in the [deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#elasticsuite_configuration) content. - - {:.new}Added the **SCD_MAX_EXECUTION_TIMEOUT** environment variable so you can increase the time to complete the static content deployment from the `.magento.env.yaml` file. See the definition in the [deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#scd_max_execution_time), the [build variables]({{ page.baseurl }}/cloud/env/variables-build.html#scd_max_execution_time), and the [global variables]({{ page.baseurl }}/cloud/env/variables-global.html#scd_max_execution_time). + - {:.new}Added the **SCD_MAX_EXECUTION_TIMEOUT** environment variable so you can increase the time to complete the static content deployment from the `.magento.env.yaml` file. See the definition in the [deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#scd_max_execution_time), the [build variables]({{ page.baseurl }}/cloud/env/variables-build.html#scd_max_execution_time), and the [global variables]({{ page.baseurl }}/cloud/env/variables-global.html#scd_max_execution_time). - - {:.new}Added the **MAGENTO_CLOUD_LOCKS_DIR** environment variable to configure the path to the mount point for the lock provider on the cloud infrastructure. The lock provider prevents the launch of duplicate cron jobs and cron groups. This variable is supported on {{ site.data.var.ee }} version 2.2.5 and later and automatically configured. See the definition in [Cloud variables]({{ page.baseurl }}/cloud/env/variables-cloud.html). + - {:.new}Added the **MAGENTO_CLOUD_LOCKS_DIR** environment variable to configure the path to the mount point for the lock provider on the cloud infrastructure. The lock provider prevents the launch of duplicate cron jobs and cron groups. This variable is supported on {{ site.data.var.ee }} version 2.2.5 and later and automatically configured. See the definition in [Cloud variables]({{ page.baseurl }}/cloud/env/variables-cloud.html). - - {:.fix}Changed the **SCD_THREADS** environment variable default values to automatically determine the optimal value based on the detected CPU thread count. See the updated definitions in the [deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#scd_threads) and the [build variables]({{ page.baseurl }}/cloud/env/variables-build.html#scd_threads). + - {:.fix}Changed the **SCD_THREADS** environment variable default values to automatically determine the optimal value based on the detected CPU thread count. See the updated definitions in the [deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#scd_threads) and the [build variables]({{ page.baseurl }}/cloud/env/variables-build.html#scd_threads). -- {:.fix}Fixed an issue with a patch for DB Isolation Mechanism that caused an error when upgrading to {{site.data.var.ece}} version 2002.0.16. +- {:.fix}Fixed an issue with a patch for DB Isolation Mechanism that caused an error when upgrading to {{site.data.var.ece}} version 2002.0.16. -- {:.fix}Added a patch that replaces _Google Image Charts_ with _Image-Charts_. See the DevBlog article [Google Image Charts deprecation and update for M1](https://community.magento.com/t5/Magento-DevBlog/Google-Image-Charts-deprecation-and-update-for-M1/ba-p/125006). +- {:.fix}Added a patch that replaces _Google Image Charts_ with _Image-Charts_. See the DevBlog article [Google Image Charts deprecation and update for M1](https://community.magento.com/t5/Magento-DevBlog/Google-Image-Charts-deprecation-and-update-for-M1/ba-p/125006). -- {:.fix}Added validation for the [SEARCH_CONFIGURATION variable]({{ page.baseurl }}/cloud/env/variables-deploy.html#search_configuration). Deploy fails when the 'engine' option is not set and `_merge` is not required. +- {:.fix}Added validation for the [SEARCH_CONFIGURATION variable]({{ page.baseurl }}/cloud/env/variables-deploy.html#search_configuration). Deploy fails when the 'engine' option is not set and `_merge` is not required. -- {:.fix}Fixed an issue that exposed sensitive data after an exception occurs. Now the sensitive information is masked appropriately. +- {:.fix}Fixed an issue that exposed sensitive data after an exception occurs. Now the sensitive information is masked appropriately. -- {:.fix}Improved the fault-tolerant settings of the {{site.data.var.ce}} package. In the case when Magento 2 cannot read data from the Redis `slave` instance, a reading is made from the Redis `master` instance. See [REDIS_USE_SLAVE_CONNECTION]({{ page.baseurl }}/cloud/env/variables-deploy.html#redis_use_slave_connection). +- {:.fix}Improved the fault-tolerant settings of the {{site.data.var.ce}} package. In the case when Magento 2 cannot read data from the Redis `slave` instance, a reading is made from the Redis `master` instance. See [REDIS_USE_SLAVE_CONNECTION]({{ page.baseurl }}/cloud/env/variables-deploy.html#redis_use_slave_connection). ## v2002.0.17 {:.bs-callout .bs-callout-info} The `{{site.data.var.ct}}` version 2002.0.17 includes an important security patch. See [Tech Resources: Magento Open Source Patches](https://magento.com/tech-resources/download#download2288). -- {:.new}**Service updates**—Supported by Magento versions 2.2.8 and later 2.2.x versions. +- {:.new}**Service updates**—Supported by Magento versions 2.2.8 and later 2.2.x versions. - - Added support for Elasticsearch version 6.x. + - Added support for Elasticsearch version 6.x. - - Added support for Redis version 5.0. + - Added support for Redis version 5.0. -- {:.new}**New Docker images**—Added the following services to the Docker build: +- {:.new}**New Docker images**—Added the following services to the Docker build: - - Elasticsearch 6.5 + - Elasticsearch 6.5 - - Redis 5.0 + - Redis 5.0 -- {:.new}**New environment variable**—Previously, there was a hard-coded timeout for SCD compression. Now you can configure the SCD compression timeout using the **SCD_COMPRESSION_TIMEOUT** environment variable. See the definitions in the [build variables]({{page.baseurl}}/cloud/env/variables-build.html#scd_compression_timeout) and the [deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#scd_compression_timeout) content. +- {:.new}**New environment variable**—Previously, there was a hard-coded timeout for SCD compression. Now you can configure the SCD compression timeout using the **SCD_COMPRESSION_TIMEOUT** environment variable. See the definitions in the [build variables]({{page.baseurl}}/cloud/env/variables-build.html#scd_compression_timeout) and the [deploy variables]({{ page.baseurl }}/cloud/env/variables-deploy.html#scd_compression_timeout) content. -- {:.fix}Added the `--use-rewrites` option to the Magento install command so that it uses web server rewrites for generated links in the storefront and Admin access to improve security and customer experience. +- {:.fix}Added the `--use-rewrites` option to the Magento install command so that it uses web server rewrites for generated links in the storefront and Admin access to improve security and customer experience. -- {:.fix}Added timestamps to the `var/log/install_upgrade.log` file so that it shows dates for the Magento installation and upgrade events. +- {:.fix}Added timestamps to the `var/log/install_upgrade.log` file so that it shows dates for the Magento installation and upgrade events. ## v2002.0.16 -- {:.new}**Docker updates**— +- {:.new}**Docker updates**— - - Now, the default service configuration generated in the Docker environment is the same as the default configuration in the Cloud template. + - Now, the default service configuration generated in the Docker environment is the same as the default configuration in the Cloud template. - - You can send mail from your Docker environment using the [`sendmail` service]({{page.baseurl}}/cloud/docker/docker-development.html#sendmail-service). + - You can send mail from your Docker environment using the [`sendmail` service]({{page.baseurl}}/cloud/docker/docker-development.html#sendmail-service). - - Added the ability to [configure Xdebug]({{page.baseurl}}/cloud/docker/docker-development-debug.html) to debug in the Cloud Docker environment. + - Added the ability to [configure Xdebug]({{page.baseurl}}/cloud/docker/docker-development-debug.html) to debug in the Cloud Docker environment. - - Fixed an issue with web service permissions when generating the `docker-compose.yml` file. + - Fixed an issue with web service permissions when generating the `docker-compose.yml` file. -- {:.new}**Upgrade improvement**—Added validation to confirm that the `autoload` property in the `composer.json` file contains required configuration changes before upgrading to {{ site.data.var.ee }} v2.3. See [Upgrade Magento version]({{site.baseurl }}/guides/v2.3/cloud/project/project-upgrade.html). +- {:.new}**Upgrade improvement**—Added validation to confirm that the `autoload` property in the `composer.json` file contains required configuration changes before upgrading to {{ site.data.var.ee }} v2.3. See [Upgrade Magento version]({{site.baseurl }}/guides/v2.3/cloud/project/project-upgrade.html). -- {:.new}The compression process in deploying static content now includes all assets—natively generated or customized—and occurs during the build phase at the beginning of the [`build:transfer` section]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html#hooks). Previously, the compression process occurred before applying custom minification and bundling of static assets. [Fix submitted by Rafael Garcia Lepper from Tryzens Limited](https://github.com/magento/ece-tools/pull/413). +- {:.new}The compression process in deploying static content now includes all assets—natively generated or customized—and occurs during the build phase at the beginning of the [`build:transfer` section]({{ page.baseurl }}/cloud/project/project-conf-files_magento-app.html#hooks). Previously, the compression process occurred before applying custom minification and bundling of static assets. [Fix submitted by Rafael Garcia Lepper from Tryzens Limited](https://github.com/magento/ece-tools/pull/413). -- {:.fix}Fixed a database connection error that occurred during deployment immediately after configuring an additional database and service relationship. Also, this fix addresses an issue that occurred during the configuration process of MBI for Starter. For Starter, this upgrade is a "must have" for using MBI. +- {:.fix}Fixed a database connection error that occurred during deployment immediately after configuring an additional database and service relationship. Also, this fix addresses an issue that occurred during the configuration process of MBI for Starter. For Starter, this upgrade is a "must have" for using MBI. -- {:.fix}Fixed a validation issue with the database configuration that caused the deploy process to fail. +- {:.fix}Fixed a validation issue with the database configuration that caused the deploy process to fail. -- {:.fix}Updated the constraint with the appropriate version of the `symfony/yaml` package to use with [PHP constants]({{page.baseurl}}/cloud/project/magento-env-yaml.html#php-constants). Constant parsing does not work when using a `symfony/yaml` package version earlier than 3.2. [Fix submitted by Vladimir Kerkhoff](https://github.com/magento/ece-tools/pull/404). +- {:.fix}Updated the constraint with the appropriate version of the `symfony/yaml` package to use with [PHP constants]({{page.baseurl}}/cloud/project/magento-env-yaml.html#php-constants). Constant parsing does not work when using a `symfony/yaml` package version earlier than 3.2. [Fix submitted by Vladimir Kerkhoff](https://github.com/magento/ece-tools/pull/404). -- {:.new}**Environment configuration check**—Added validation to check the PHP version and warn users if they are not using the latest recommended version. +- {:.new}**Environment configuration check**—Added validation to check the PHP version and warn users if they are not using the latest recommended version. -- {:.fix}Fixed an issue with processing malformed JSON variables. Now, if a JSON variable causes a syntax error, a warning appears in the `cloud.log` file and deployment continues using the default variable. +- {:.fix}Fixed an issue with processing malformed JSON variables. Now, if a JSON variable causes a syntax error, a warning appears in the `cloud.log` file and deployment continues using the default variable. -- {:.fix}Fixed a connection error that occurred during deployment immediately after disabling the Redis service. +- {:.fix}Fixed a connection error that occurred during deployment immediately after disabling the Redis service. -- {:.new}**Logging changes**—Updated the [log level]({{ page.baseurl }}/cloud/env/log-handlers.html#log-levels) from `Info` to `Notice` for the following build and deploy process events: +- {:.new}**Logging changes**—Updated the [log level]({{ page.baseurl }}/cloud/env/log-handlers.html#log-levels) from `Info` to `Notice` for the following build and deploy process events: - - Begin and end of the process for reconciling installed modules in `composer.json` with shared configuration settings in the `app/etc/config.php` file + - Begin and end of the process for reconciling installed modules in `composer.json` with shared configuration settings in the `app/etc/config.php` file - - Begin and end of the configuration validation process + - Begin and end of the configuration validation process - - Begin and end of the `setup:di:compile` process for generating classes + - Begin and end of the `setup:di:compile` process for generating classes -- {:.new}**New environment variables**— +- {:.new}**New environment variables**— - - **[RESOURCE_CONFIGURATION deploy variable]({{page.baseurl}}/cloud/env/variables-deploy.html#resource_configuration)**—Use this variable to map a resource name to a database connection. + - **[RESOURCE_CONFIGURATION deploy variable]({{page.baseurl}}/cloud/env/variables-deploy.html#resource_configuration)**—Use this variable to map a resource name to a database connection. - - **[X_FRAME_CONFIGURATION global variable]({{ page.baseurl }}/cloud/env/variables-global.html#x_frame_configuration)**—Use this variable to change the `X-Frame-Options` header configuration for rendering a {{ site.data.var.ee }} page in a ``, `