Update installation dependencies
Introduction to Magento installation dependencies
We now use Composer to resolve dependencies before you install the Magento software and extensions.
Composer is a separate application that manages PHP dependencies. Before you can install the Magento software, you must perform the following tasks in the order shown:
- Install the Composer software.
- Create the Magento file system owner so Composer writes files to the web server docroot as the correct user.
-
Run the
composer install
command from your Magento root directory (for example,/var/www/magento2/
).The Magento root directory is a subdirectory of your web server’s docroot. Need help locating the docroot? Click here.
If the following error displays, see troubleshooting:
file_get_contents(app/etc/NonComposerComponentRegistration.php): failed to open stream: No such file or directory
For you to be able to run the Magento application, make sure you perform all tasks as a user with privileges to write to the web server docroot. One way to do this is to log in as or switch to the >switch to the Magento file system owner.
Run composer install
to update dependencies
Update installation dependencies as follows:
- Log in to your Magento server as the Magento file system owner or switch to that user.
-
Change to the Magento installation directory and run
composer install
. Examples:CentOS:
cd /var/www/html/magento2 && composer install
Ubuntu:
cd /var/www/magento2 && composer install
This command updates package dependencies and can take a few minutes to complete.
The following error might display:
[Composer\Downloader\TransportException] The "https://repo.magento.com/archives/magento/composer/magento-composer-1.0.2.0.zip" file could not be downloaded (HTTP/1.1 404 Not Found)
If so, create
auth.json
in the Magento file system owner’s<home>/.composer
directory and runcomposer install
again.
Set pre-installation file system ownership and permissions
This topic discusses how to set read-write permissions for the web server group before you install the Magento software. This is necessary so the Setup Wizard or command line can write files to the Magento file system.
The procedure you use is different, depending on whether you use shared hosting and have one user or if you use a private server and have two users.
If you're using a Magento version earlier than 2.0.6, see Appendix—Magento file system ownership and appendix (legacy) instead.
Set permissions for shared hosting (one user)
This section discusses how to set pre-installation permissions if 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.
To set permissions before you install the Magento software:
- Log in to your Magento server.
-
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
-
If you have command-line access, enter the following commands in the order shown:
cd <your Magento install dir> 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
To optionally enter all commands on one line, enter the following assuming Magento is installed in
/var/www/html/magento2
: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:
-
After you have set file system ownership and permissions, continue with any of the following:
To further restrict permissions after installing the Magento software, you configure a Magento umask.
Set ownership and permissions for two users
This section discusses how to set ownership and permissions for your own server or a private hosting setup. In this type of setup, 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.
Complete the following tasks in the order shown:
- About the shared group
- Step 1: Create the Magento file system owner and give the user a strong password
- Step 2: Find the web server group
- Step 3: Put the Magento file system owner in the web server’s group
- Step 4: Get the Magento software
- Step 5: Set ownership and permissions for the shared group
About the shared group
To enable the web server to write files and directories in the Magento file system but to also maintain ownership by the Magento file system owner, both users must be in the same group. This is necessary so both users can share access to Magento files (including files created using the Magento Admin or other web-based utilities).
This section discusses how to create a new Magento file system owner and put that user in the web server’s group. You can use an existing user account if you wish; we recommend the user have a strong password for security reasons.
Step 1: Create the Magento file system owner and give the user a strong password
This section discusses how to create the Magento file system owner. (Magento file system owner is another term for the command-line user.)
To create a user on CentOS or Ubuntu, enter the following command as a user with root
privileges:
adduser <username>
To give the user a password, enter the following command as a user with root
privileges:
passwd <username>
Follow the prompts on your screen to create a password for the user.
If you don't have root
privileges on your Magento server, you can use another local user account. Make sure the user has a strong password and continue with Put the Magento file system owner in the web server group.
For example, to create a user named magento_user
and give the user a password, enter:
sudo adduser magento_user
sudo passwd magento_user
Because the point of creating this user is to provide added security, make sure you create a strong password.
Step 2: Find the web server user’s group
To find the web server user’s group:
-
CentOS:
egrep -i '^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, thengroups <apache user>
to find the groupTypically, the user name and the group name are both
www-data
Step 3: Put the Magento file system owner in the web server’s group
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 <username>
- Ubuntu:
usermod -a -G www-data <username>
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 to ensure members of a shared group only have access to certain files.
For example, to add apache
as a secondary group to user magento_user
on CentOS:
sudo usermod -a -G apache magento_user
To confirm your Magento user is a member of the web server group, enter the following command:
groups magento_user
The following sample result shows the user’s primary (magento
) and secondary (apache
) groups.
magento_user : magento_user apache
Typically, the user name and primary group name are the same.
To complete the task, restart the web server:
- Ubuntu:
service apache2 restart
- CentOS:
service httpd restart
Step 4: Get the Magento software
If you haven’t done so already, get the Magento software in one of the following ways:
Step 5: Set ownership and permissions for the shared group
To set ownership and permissions before you install the Magento software:
- Log in to your Magento server as, or switch to, the Magento file system owner.
-
Enter the following commands in the order shown:
cd <your Magento install dir> find var vendor pub/static pub/media app/etc -type f -exec chmod g+w {} \; find var vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} \; sudo chown -R :<web server group> . 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
and the web server group name is apache
:
cd /var/www/html/magento2 && find var vendor pub/static pub/media app/etc -type f -exec chmod g+w {} \; && find var vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} \; && chown -R :apache . && chmod u+x bin/magento
In the event file system permissions are set improperly and can’t be changed by the Magento file system owner, you can enter the command as a user with root
privileges:
cd /var/www/html/magento2 && sudo find var vendor pub/static pub/media app/etc -type f -exec chmod g+w {} \; && sudo find var vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} \; && sudo chown -R :apache . && sudo chmod u+x bin/magento
Next step
After you have set file system ownership and permissions, continue with any of the following:
Switch to the Magento file system owner
After you’ve performed the other tasks in this topic, enter one of the following commands to switch to that user:
- Ubuntu:
su <username>
- CentOS:
su - <username>
For example,
su magento_user
Next step
Install the Magento software: