Tagged: MariaDB

LAMP Stack on Gentoo Linux

There aren't many sites showing how to configure LAMP (Linux, Apache, MariaDB, PHP) stack on Gentoo. Since I'm new to Gentoo and in need of configuring LAMP stack, I compiled the steps.

Disclaimer:
The information in this site is the result of my researches in the Internet and of my experiences. This information below is solely used for my purpose and may not be suitable for others.

Apache:

Web Server. Install apache with the threads support.# echo "www-servers/apache threads" > /etc/portage/package.use/apache # emerge --ask www-servers/apache

Then, enable global apache2 support for other applications.# nvim /etc/portage/make.conf ========== .... USE="... apache2"

Once the USE variable in /etc/portage/make.conf is modified, update the system so the changes take effect.# emerge --ask --changed-use --deep @world

Start the apache2 process and make it so that it automatically restarts after each reboot.# /etc/init.d/apache2 start # rc-update add apache2 default

Apache - Virtual Hosts

Apache Virtual Hosts allows to run multiple instances of websites using a single IP address. This is a good option for me when I work on a few websites at the same time. Create a conf file under /etc/apache2/vhosts.d/ for each website.# nvim /etc/apache2/vhosts.d/site1.conf ========== <VirtualHost *:80> ServerAdmin email@localhost DocumentRoot /home/ubyt3m3/www/site1 ServerName site1 ErrorLog /var/log/apache2/site1.err CustomLog /var/log/apache2/site1.log combined <Directory "/home/ubyt3m3/www/site1"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> # nvim /etc/apache2/vhosts.d/site2.conf ========== <VirtualHost *:80> ServerAdmin email@localhost DocumentRoot /home/ubyt3m3/www/site2 ServerName site2 ErrorLog /var/log/apache2/site2.err CustomLog /var/log/apache2/site2.log combined <Directory "/home/ubyt3m3/www/site2"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>

Restart the apache2 process to reload the config file(s).# /etc/init.d/apache2 reload

Maria DB

MariaDB is a community-developed, open source relational database management system (RDBMS). It's a fork from MySQL which's owned by Oracle. # emerge --ask dev-db/mariadb

Auto start mysql after each reboot. # rc-update add mysql default

Now, it's time to configure MariaDB. With Gentoo, this can be done with emerge --config. # emerge --config dev-db/mariadb

This will create a database and set permissions. You will set a root password during this process.

Start the mysql process.# rc-service mysql start

PHP

Set USE flags for PHP and install it.# echo "dev-lang/php cgi cjk curl exif gd mysql mysqli pdo postgres threads xslt" > /etc/portage/package.use/php # emerge --ask dev-lang/php

Then, configure apache for PHP by updating /etc/conf.d/apache2.# nvim /etc/conf.d/apache2 ========== ... APACHE2_OPTS="... -D PHP" ...

Restart the apache2 process.# /etc/init.d/apache2 restart

Verify if PHP works with Apache$ nvim /home/ubyt3m3/www/site1/index.php ========== <html> <body> <?php phpinfo(); ?> </body> </html>

It works!

Troubleshooting 403 Fobidden Error

If the steps are followed, it's not the types of errors you get, but it's good to know how to approach when it happens.

  • Check to see if the directory and file permissions are properly set.

    Directory: 0755
    File: 0644

  • The default directory index page is there. It is defined in the DirectoryIndex directive in apache's modules.d/70_mod_php.conf file.

    DirectoryIndex index.php index.html

  • The Apache website mentions that the index of a directory is handled by mod_dir. In Gentoo, its config file is in modules.d/00_default_settings.conf. Add index.php in front of index.html should allow index.php loaded automatically.

    <IfModule dir_module>
    DirectoryIndex index.php index.html index.html.var
    </IfModule dir_module>

  • Make sure the correct directory permissions are set in the Directory directive in the apache's config file.

    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted

  • Check the error file for some hints.

    tail -f [path_to_apache_error_file]

That's all!
-gibb

Resetting MariaDB “root” Password on Termux

I just started learning Laravel framework for my self-interest and wanted to play with it on my Galaxy Note 8 since I already had Termux installed on it. A tutorial I found from Google search uses mySQL so I installed MariaDB with the following command:$ pkg install mariadb

The installation was successful, but when I tried to log in as root with no password, it failed with ERROR 1698 (28000): Access denied for user 'root'@'localhost'. I tried various passwords but none was successful. So, I searched for a solution.

Disclaimer: The information described here is from Termux Wiki. This information below is solely used for my purpose and may not be suitable for others.

Post Installation Tasks:

After the first login attempt, I realized that it was not connecting to mysql server because of the following error message:$ mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/data/com.termux/files/usr/tmp/mysqld.sock' (2)

Was mysql server not running...? $ ps -aux | grep mysql xxx 8451 0.2 1.4 560836 79496 ? S

It looks to me, it's running fine. Is mysqld.sock file missing from the directory?:$ ls ../usr/tmp/ $

Ok, the directory was empty. So, I manually started mysql daemon with the following command:$ mysqld_safe -u root & [1] 8379 191029 20:48:14 mysqld_safe Logging to '/data/data/com.termux/files/usr/var/lib/mysql/localhost.err'. 191029 20:48:14 mysqld_safe Starting mysqld daemon with databases from /data/data/com.termux/files/usr/var/lib/mysql

After this, mysqld.sock was created.$ ls ../usr/tmp mysqld.sock $

Resetting root Password:

According to the wiki, the mariadb installation initializes the database with 2 all-privilege accounts, root and my Termux local user. With this local user, I can reset the root password. (But is there a point of resetting the root password at this point since my local user also has all privileges?)$ mysql -u $(whoami) Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.4.6-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> use mysql; MariaDB [(mysql)]> set password for 'root'@'localhost' = password('YOUR_ROOT_PASSWORD_HERE'); MariaDB [(mysql)]> flush privileges; MariaDB [(mysql)]> quit;

Now, I can log in as root.$ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.4.6-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

That's all!
-gibb

Debian Wheezy (7.5): LAMP (Linux, Apache, MariaDB, and PHP)

LAMP used to refer to Linux, Apache, MySQL, and PHP but nowadays the trend is transitioning from MySQL to MySQL's drop-in replacement MariaDB. The Slackware project switched the default database to MariaDB back in March 2013 for the version 14.1 and forward.

I was a little concerned about this change and wasn't sure if my web sites would work with Mhttp://blog.ataboydesign.com/wp-admin/post.php?post=959&action=editariaDB. However, my worry was trivial. MariaDB uses the same files as MySQL so this makes migration a lot easier.

So it's natural for me to try MariaDB on my new Debian Wheezy (7.5) system.

Disclaimer:
The information in this site is the result of my researches in the Internet and of my experiences. It is solely used for my purpose and may not be suitable for others. I will NOT take any responsibility of end result after following these steps (although I will try to help if you send me your questions/problems).

Installing Apache2

Firts, make sure the system is up-to-date: # apt-get update && apt-get upgrade -y

Then, install apache2: # apt-get install apache2

Add apache2 to system start up and start it up now: # update-rc.d apache2 enable update-rc.d: using depndency based boot sequencing # service apache2 start [ ok ] Starting web server: apache2.

If you open a web browser and point it to http://localhost, you'll see the message It works!

Installing php5

Next, install php5 along with the apache php5 module, MySQL(MariaDB) php module, and other modules: # apt-get install php5-curl php5-xmlrpc php5-gd php5-intl libapache2-mod-php5 php5 php5-common php5-dev php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy

Restart the web server: # apache2 restart

Test the php support by creating a php file (phpinfo.php) in the default document root, /var/www: # vim /var/www/phpinfo.php -------------------------------------------- < ?php phpinfo(); ?>

With successful installation/configuration, below page should be loaded:
debian_lamp_install_phpinfo

Installing MariaDB

To properly install and configure MariaDB, I need to know the version/codename of this Debian. I already know its Wheezy but to check, type the following command: # lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 7.5 (wheezy) Release: 7.5 Codename: wheezy

Now, open a web browser and go to MariaDB's download page to get the repository information for MariaDB: debian_lamp_install_mariadb_config

Above selection produces below repository info:
debian_lamp_install_mariadb_repo

Create a file called mariadb.list under /etc/apt/sources.list.d and copy & paste the repository info: # vim /etc/apt/sources.list.d/mariadb.list -------------------------------------------- # MariaDB 10.0 repository list - created 2014-05-10 06:44 UTC # http://mariadb.org/mariadb/repositories/ deb http://mirror.jmu.edu/pub/mariadb/repo/10.0/debian wheezy main deb-src http://mirror.jmu.edu/pub/mariadb/repo/10.0/debian wheezy main

Add MariaDB to the system: # apt-get install python-software-properties # apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db # apt-get update # apt-get install mariadb-server

Follow the on-screen instructions to set up a root password for MariaDB server.

Let's see if MariaDB server was successfully installed: # mysql -u root -p Enter password: Welcome to the MariaDB monitor. Command end with ; or \g. Your MariaDB connection id is 38 Server version: 10.0.10-MariaDB-1~wheezy mariadb.org binary distribution Copyright (c) 2000, 2014 Oracle, SkySQL Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

VoilĂ ! With above steps, I have successfully installed LAMP stack on my Debian Wheezy server.

If you are interested, take a look at my post on VirtualHost: Name-Based Web Sites on a Single IP Address

That's all!
-gibb