The LAMP stack is a group of open source software used to get web servers up and running. The acronym stands for Linux, Apache, MySQL, and PHP. Arch Linux uses the powerful Pacman installer which can download all of the most recent, required packages for each program with one command.
The steps in this tutorial require the user to have root privileges. You can see how to set that up here in steps 3 and 4.
Apache is a free open source software that runs over 50% of the world’s web servers.
Before installing any of the LAMP programs, we should update the package manager:
sudo pacman -Syu
Once the update is complete, we can install Apache:
sudo pacman -S apache
After Apache is installed, we need to make a couple of changes in the configuration.
Open up the apache configuration file:
sudo nano /etc/httpd/conf/httpd.conf
Comment out the unique_id_module (you can use ctrl w to find it quickly):
#LoadModule unique_id_module modules/mod_unique_id.so
Restart Apache:
sudo systemctl restart httpd
During the apache restart, you may get a notice that says the following:
httpd: apr_sockaddr_info_get() failed for droplet1 httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [DONE]
Although this alert does not interfere with the apache launch, you can easily eliminate it if you like by adding your hostname to your configuration.
Open up the hosts file:
sudo nano /etc/hosts
Add your hostname to the end of the line beginning with 127.0.0.1:
127.0.0.1 localhost.localdomain localhost droplet1
Subsequent restarts of Apache will no longer display that message. With that, Apache is now installed on your server. Directing your browser to your server’s IP address (http://12.34.56.789) will display an auto-index directory. You can quickly try out a sample page by adding an index.html file to Arch’s document root directory, located within “srv/http”:
sudo nano /srv/http/index.html
<html> <title>Welcome</title> <body> <h2>Hello, Welcome to Arch</h2> </body> </html>
You can visit the placeholder page by going to your server’s IP address in your browser.
You can run the following command to reveal your server’s IP address.
curl -s icanhazip.com
MySQL is a powerful database management system used for organizing and retrieving data.
Since March 2013, MariaDB has become the default implementation of MySQL in Arch repositories. Installing the package "mysql" will automatically drop in MariaDB as a replacement. See the original announcement for more details.
To install MySQL, open terminal and type in these commands:
sudo pacman -S mysql
Hit enter if it asks you anything, unless you know you don't want the defaults.
Once you have installed MySQL, start it running
sudo systemctl start mysqld
Finish up by running the MySQL set up script:
sudo mysql_secure_installation
The process will ask you for your current MySQL root password (not to be confused with your server password) and, since it has not yet been set, simply press enter.
When prompted, “Set root password?” type Y, and afterwards enter in your new MySQL root password.
After that it’s easiest just to say Yes to all the options. At the end, MySQL will reload and implement the new changes.
By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y ... Success! By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y ... Success! Cleaning up...
Once you're done installing MySQL, finish the LAMP stack by installing PHP.
PHP is an open source web scripting language that is widely used to build dynamic webpages.
To install PHP, open terminal and type in this command.
sudo pacman -S php php-apache
PHP should also be added to the apache configuration file:
sudo nano /etc/httpd/conf/httpd.conf
Paste in this text block within the config.
# Use for PHP 5.x: LoadModule php5_module modules/libphp5.so AddHandler php5-script php Include conf/extra/php5_module.conf
After LAMP is completely installed, we can take a look and see the PHP details by creating a quick php info page
To set this up, first create a new blank file:
sudo nano /srv/http/info.php
Add in the following line:
<?php phpinfo(); ?>
Then Save and Exit.
Restart apache so that all of the changes take effect:
sudo systemctl restart httpd
Visit your php info page (make sure you replace the example ip address with your correct one): http://12.34.56.789/info.php
Your screen should then look like this:
To close out the LAMP installation, open up the configuration file of Arch’s innitscripts and add the apache server and MySQL daemons to the list of programs that run upon server startup:
sudo systemctl enable mysqld httpd
Congratulations, you have now installed the LAMP server on Arch Linux!
Once LAMP is installed, you have a great base on which to build your site. Check out this tutorial to see how to install Wordpress on Arch
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
On Manjaro (I don’t know if it applies to another Arch distro) when you install MySQL (MariaDB) you cannot directly start the dbms via
sudo systemctl start mysqld
. Previous to do it, you’ll need to runmysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
to create the MySQL tables in the corresponding directory.After that, follow the guide as normal.
As of recent using MariaDb in Arch it is importan to install and initialize MariaDB date directory using
$ sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
before running
sudo mysql_secure_installation
UPDATE for PHP7 In /etc/httpd/conf/httpd.conf, comment the line: #LoadModule mpm_event_module modules/mod_mpm_event.so
and uncomment the line: LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
The above is required, because libphp7.so included with php-apache does not work with mod_mpm_event, but will only work mod_mpm_prefork instead.
Then replace:
Use for PHP 5.x:
LoadModule php5_module modules/libphp5.so AddHandler php5-script php Include conf/extra/php5_module.conf
With
Use for PHP 7.x:
LoadModule php7_module modules/libphp7.so AddHandler php7-script php Include conf/extra/php7_module.conf
REF: https://wiki.archlinux.org/index.php/Apache_HTTP_Server#PHP
In the instalation’s step of mariadb before run the command “sudo systemctl start mysqld” gone need run “mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql” . Tried run without it but no work. I’m using Antergos Linux 64-bit
Thank you!
Hi ,
I installed apache http server and everything going well. I’m using Sublime Text 2 as my text editor.So when i going to save some file after editing it with sublime text it says that "Unable to save file to /svr/http/*** " … I think it happening beacaus of permission problem. I’m using my pc as a normal user (not as the root).how can i solve this.
Thanks !
This comment has been deleted
@mirzalazuardi @asb Having same issue, only difference is:
Comes back clean.
I’ve isolated it to only the line
Edit: Weird so I ran configtest again and I got an error: “Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.” Easy fix:
arch wiki
@mirzalazuardi: Run
apachectl configtest
It should give you an idea of what the issue might be.why my apache wont running after added line?
LoadModule php5_module modules/libphp5.so AddHandler php5-script php Include conf/extra/php5_module.conf
here error messages :
[luckymeerza@hostname ~]$ sudo systemctl restart httpd Job for httpd.service failed. See ‘systemctl status httpd.service’ and ‘journalctl -xn’ for details. [luckymeerza@hostname ~]$ sudo systemctl status httpd ● httpd.service - Apache Web Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled) Active: failed (Result: exit-code) since Thu 2014-08-14 22:48:17 WIB; 7s ago Process: 4009 ExecStop=/usr/bin/apachectl graceful-stop (code=exited, status=1/FAILURE) Process: 4098 ExecStart=/usr/bin/apachectl start (code=exited, status=1/FAILURE) Main PID: 3830 (code=exited, status=0/SUCCESS)
Aug 14 22:48:17 hostname apachectl[4098]: [Thu Aug 14 22:48:17.6360… Aug 14 22:48:17 hostname apachectl[4098]: AH00013: Pre-configuratio… Aug 14 22:48:17 hostname systemd[1]: httpd.service: control proces…1 Aug 14 22:48:17 hostname systemd[1]: Failed to start Apache Web Se… Aug 14 22:48:17 hostname systemd[1]: Unit httpd.service entered fa… Hint: Some lines were ellipsized, use -l to show in full.
if I remove those 3 lines, apache running well, but apache doesnt interpret my php file.
Thanks, hoping for your support