How to Install a LAMP Stack on Arch Linux
- Ubuntu 22.04
- Ubuntu 20.04
- Ubuntu 18.04
- Debian 8
- Debian 11
- Debian 10
- CentOS 8
- CentOS 7
- Deprecated guides:
- Ubuntu 9.10
- Ubuntu 9.04
- Ubuntu 8.04
- Ubuntu 16.04
- Ubuntu 14.04
- Ubuntu 12.04
- Ubuntu 11.10
- Ubuntu 11.04
- Ubuntu 10.10
- Gentoo
- Fedora 20
- Fedora 19
- Fedora 15
- Fedora 14
- Fedora 13
- Fedora 12
- Fedora 11
- Debian 7
- Debian 6
- Debian 5
- CentOS 6
- CentOS 5
Traducciones al EspañolEstamos traduciendo nuestros guías y tutoriales al Español. Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.
A LAMP (Linux, Apache, MySQL, PHP) stack is a common web stack used to prepare servers for hosting web content. This guide shows you how to install a LAMP stack an Arch Linux server.
Since Arch does not come in specific versions, this guide is up-to-date as of the December 2015 Arch update.
sudo. If you’re not familiar with the sudo command, you can check our
Users and Groups guide.Before You Begin
- Ensure that you have followed the Getting Started and Securing Your Server guides, and the Linode’s hostname is set. 
- Update your system: - sudo pacman -Syu
Apache
Install and Configure
- Install Apache 2.4: - sudo pacman -Syu apache
- Edit the - httpd-mpm.confApache configuration file in- /etc/httpd/conf/extra/to adjust the resource use settings. The settings shown below are a good starting point for a Linode 2GB:- Note - Before changing any configuration files, it is advised that you make a backup of the file. To make a backup: - cp /etc/httpd/conf/extra/httpd-mpm.conf ~/httpd-mpm.conf.backup - File: /etc/httpd/conf/extra/httpd-mpm.conf
- 1 2 3 4 5 6 7- <IfModule mpm_prefork_module> StartServers 4 MinSpareServers 20 MaxSpareServers 40 MaxRequestWorkers 200 MaxConnectionsPerChild 4500 </IfModule>
 
- Edit the - httpd-default.conffile to turn KeepAlive off.- File: /etc/httpd/conf/extra/httpd-default.conf
- 1- KeepAlive Off
 
- Set Apache to start at boot: - sudo systemctl enable httpd.service
Add Name-Based Virtual Hosts
Virtual hosting can be configured so that multiple domains (or subdomains) can be hosted on the server. These websites can be controlled by different users, or by a single user, as you prefer. There are different ways to set up virtual hosts; however, we recommend the method below.
- Open - httpd.confand edit the line- DocumentRoot /srv/httpto define the default document root:- File: /etc/httpd/conf/httpd.conf
- 1- DocumentRoot "/srv/http/default"
 
- Uncomment the line that reads - Include conf/extra/httpd-vhosts.confnear the end of the- /etc/httpd/conf/httpd.conffile:- File: /etc/httpd/conf/httpd.conf
- 1- Include conf/extra/httpd-vhosts.conf
 
- Open - httpd-vhosts.conf, under the- extrafolder. Edit the example virtual hosts block to resemble the ones below, replacing- example.comwith your domain.- File: /etc/httpd/conf/extra/httpd-vhosts.conf
- 1 2 3 4 5 6 7 8 9 10 11 12- <VirtualHost *:80> ServerAdmin webmaster@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /srv/http/example.com/public_html/ ErrorLog /srv/http/example.com/logs/error.log CustomLog /srv/http/example.com/logs/access.log combined <Directory /> Order deny,allow Allow from all </Directory> </VirtualHost>
 - Remove the second example in the file, or use it configure a second website. - Note - ErrorLogand- CustomLogentries are suggested for more fine-grained logging, but are not required. If they are defined (as shown above), the- logsdirectories must be created before you restart Apache.
- Create the directories referenced in the configuration above: - sudo mkdir -p /srv/http/default sudo mkdir -p /srv/http/example.com/public_html sudo mkdir -p /srv/http/example.com/logs
- After you’ve set up your virtual hosts, issue the following command to run Apache for the first time: - sudo systemctl start httpd.service- You should now be able to access your website. If no files are uploaded you will see an Index of / page. - Note - Should any additional changes be made to a configuration file restart Apache: - sudo systemctl restart httpd.service 
MariaDB
Install and Configure
By default, Arch Linux provides MariaDB as a relational database solution. MariaDB is an open source drop-in replacement for MySQL, and all system commands that reference mysql are compatible with it.
- Install the - mariadb,- mariadb-clientsand- libmariadbclientpackages:- sudo pacman -Syu mariadb mariadb-clients libmariadbclient
- Install the MariaDB data directory: - sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
- Start MariaDB and set it to run at boot: - sudo systemctl start mysqld.service sudo systemctl enable mysqld.service
- Run - mysql_secure_installation, a program that helps secure MySQL and MariaDB.- mysql_secure_installationgives you the option to set your root password, disable root logins from outside localhost, remove anonymous user accounts, remove the test database and then reload the privilege tables:- mysql_secure_installation
Create a Database
- Log into MariaDB: - mysql -u root -p- -u <user>specifies the user, and- -pwill prompt you for the password.
- You will see the MariaDB prompt. Create a database and create and grant a user permissions on the database: - CREATE DATABASE webdata; GRANT ALL ON webdata.* TO 'webuser' IDENTIFIED BY 'password';- In this example - webdatais the name of the database,- webuseris the username, and- passwordis the user’s password. Note that database usernames and passwords do not correlate to system user accounts.
- Quit MariaDB: - quit
With Apache and MariaDB installed, you are now ready to move on to installing PHP to provide scripting support for your web application.
PHP
PHP makes it possible to produce dynamic and interactive pages using your own scripts and popular web development frameworks. Many popular web applications like WordPress are written in PHP. If you want to develop your websites using PHP, you must first install it.
- Install PHP: - sudo pacman -Syu php php-apache
- Edit - /etc/php/php.inifor better error messages and logs, and upgraded performance. These modifications provide a good starting point for a Linode 2GB:- File: /etc/php/php.ini
- 1 2 3 4 5- error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR log_errors = On error_log = /var/log/php/error.log max_input_time = 30 extension=mysql.so
 - Note Ensure that all lines noted above are uncommented. A commented line begins with a semicolon (;).
- Create the log directory for PHP and give the Apache user ownership: - sudo mkdir /var/log/php sudo chown http /var/log/php
- Enable the PHP module in the - /etc/httpd/conf/httpd.conffile by adding the following lines in the appropriate sections:- File: /etc/httpd/conf/httpd.conf
- 1 2 3 4 5 6 7 8 9 10 11- # Dynamic Shared Object (DSO) Support LoadModule php7_module modules/libphp7.so AddHandler php7-script php # Supplemental configuration # PHP 7 Include conf/extra/php7_module.conf # Located in the <IfModule mime_module> AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
 
- In the same file, comment out the line - LoadModule mpm_event_module modules/mod_mpm_event.soby adding a- #in front, and add the line- LoadModule mpm_prefork_module modules/mod_mpm_prefork.so:- File: /etc/httpd/conf/httpd.conf
- 1 2- #LoadModule mpm_event_module modules/mod_mpm_event.so LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
 
- Restart the Apache: - sudo systemctl restart httpd.service
More Information
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
This page was originally published on