How To Install Linux, Apache, MySQL, PHP (LAMP) Stack on the Omega

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. Since the Omega itself runs OpenWRT, which is a Linux operating system, the linux part is taken care of. Here’s how we install the rest.

Step 1. Expand your storage with USB

Apache as other packages requires a lot of space so first thing You will have to do is to extend your storage with extroot. More information about how to do that can be found at [[Tutorials/Using-USB-Storage-as-Rootfs]].

Step 2. Setting Up Apache

opkg update
opkg install apache

Then edit /etc/apache/httpd.conf:

Find the line that starts with Listen and change it to:

Listen <ip You use to connect to Your console>:<port number other than 80>

Also find the line that starts with ServerName and change it to:

ServerName <name for Your server>:<same port as in Listen>

Then you should find LogLevel debug, and change it into:

LogLevel error

Now we are ready to start the Apache server:

apachectl start

Your webserver can be accessed at: <Onion Console IP adress>:<Your chosen port>.

Step 3. Setting Up PHP

opkg install php5 php5-cgi php5-fastcgi

Next, we will create a symbolic link to allow PHP to handle CGI requests:

ln -s /usr/bin/php-cgi /usr/share/cgi-bin/

We will also need to tell Apache where to send all the CGI requests. To do this, we add the following lines to /etc/apache/httpd.conf:

<Directory "/usr/share/cgi-bin">
    AllowOverride None
    Options FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>

<Directory "/usr/bin">
    AllowOverride None
    Options none
    Order allow,deny
    Allow from all
</Directory>

Find the line ScriptAlias /cgi-bin/ "/usr/share/cgi-bin" and add ScriptAlias /php/ "/usr/bin/" after it:

ScriptAlias /cgi-bin/ "/usr/share/cgi-bin"
ScriptAlias /php/ "/usr/bin/"

Find <IfModule mime_module> section and add the following:

AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi"'

To change the Directory Index, find DirectoryIndex index.html, and change change it to the following:

DirectoryIndex index.php index.html

Next, open up /etc/php.ini and uncomment (or remove) the following lines:

extension  = gd.so
extension = mbstring.so
extension = pdo-mysql.so
extension = pdo_sqlite.so
extension = socket.so

Also do not specify doc_root so change doc_root into doc_root =

After that restart the Apache server to reload the changed configurations:

apachectl restart

Step 4. Setting Up MySQL

opkg install mysql-server php5-mod-mysqli

Create two folders for MySQL:

mkdir -p /mnt/data/mysql
mkdir -p /mnt/data/tmp

Once you have installed MySQL, we should activate it with this command:

mysql_install_db --force

Next step is to create root user (when I installed mysql, table with users was empty, if that’s also Your case use this steps). Execute:

/usr/bin/mysqld --skip-grant-tables --skip-networking &
mysql -u root
use mysql;
FLUSH PRIVILEGES;
INSERT into user (Host, User,Password) values ('localhost','root',' ');
UPDATE user SET Password=PASSWORD('password you want') WHERE User='root';

update user set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y' where user='root';

FLUSH PRIVILEGES;

To start the MySQL server you should type:

/etc/init.d/mysqld start

And that’s it :)

Happy Hacking!

Credits

Thanks for Josip Mlakar for writing this awesome tutorial!