Menu
in ,

How To Install LAMP Stack On Gentoo Linux VPS?.. A Quick Start Guide.

Gentoo LAMP Stack

In this lab, we will try to install LAMP Stack On Gentoo Linux, so our Gentoo VPS/Server can be ready to host web applications or our blogs like WordPress or Drupal CMS.

We will do the following:

  • Configure Our Gentoo Linux Server
  • Install And Configure Apache Web Server
  • Install And Configure PHP
  • Install And Configure Mysql Database Server

we will use demo data like domain name= example.com and public IP-Address=45.79.179.100, etc… but you will need to replace all of the demo data with yours.

Step1: Configure the Gentoo Linux Server

Update Our Gentoo Portage

To sync repositories and update Portage

# emerge --sync
# emerge -1q portage

Set Gentoo Timezone

I will set our server TZ='Europe/Rome' as the following…

# echo "Europe/Rome" > /etc/timezone
# emerge --config sys-libs/timezone-data

Configuring pkg...

 * Found a regular file at /etc/localtime.
 * Some software may expect a symlink instead.
 * You may convert it to a symlink by removing the file and running:
 *   emerge --config sys-libs/timezone-data
 * Copying /usr/share/zoneinfo/Europe/Rome to /etc/localtime.

Set Gentoo Hostname

We need to configure our server hostname, we can use the server as the hostname, and so our FQDN will be: server.example.com

Edit the /etc/conf.d/hostname file and replace localhost with your Gentoo hostname server, or keep the current value if it's OK.

# vim /etc/conf.d/hostname
~~~
#hostname="localhost"
hostname="server"
~~~

Append the FQDN to the /etc/hosts file; our FQDN will be server.example.com, as the server is the hostname, and example.com is our domain name.

And make the FQDN point to your Public IP Address, which in our lab is: 45.79.179.100 (must replace with your public IP address).

Like the following

# vim /etc/hosts
~~~
# IPv4 and IPv6 localhost aliases
127.0.0.1       localhost.localdomain   localhost
::1             localhost.localdomain   localhost
45.79.179.100   server.example.com      server 
#
# Imaginary network.
~~~

And apply the Gentoo hostname for the current session as the following

# hostname server

Declaring USE Flags For The LAMP Stack

Create the file /etc/portage/package.use/lamp and append the following USE Flags into it.

# vim /etc/portage/package.use/lamp
~~~
dev-libs/apr-util mysql
www-servers/apache threads apache2_modules_authn_dbd apache2_modules_dbd apache2_mpms_event
app-eselect/eselect-php apache2 fpm
dev-lang/php apache2 bcmath calendar cgi cjk curl curlwrappers ctype exif ftp fpm gd hash imap intl json mysql mysqli mysqlnd pdo soap sockets sodium spell ssl threads truetype tokenizer unicode wddx xml xmlreader xmlrpc xmlwriter zlib zip
media-gfx/imagemagick hdri jbig jpeg jpeg2k lcms lzma png tiff truetype webp -openmp

~~~

Step2: Install Mysql Server

To compile and Installing the MySql Server 8.0.27, run the following command

# emerge -q dev-db/mysql
~~~~~~~~
 * This version of mysql reorganizes the configuration from a single my.cnf
 * to several files in /etc/mysql/mysql.d.
 * Please backup any changes you made to /etc/mysql/my.cnf
 * and add them as a new file under /etc/mysql/mysql.d with a .cnf extension.
 * You may have as many files as needed and they are read alphabetically.
 * Be sure the options have the appropriate section headers, i.e. [mysqld].
 * You might want to run:
 *   "emerge --config =dev-db/mysql-8.0.27"
 * if this is a new install.

As described in the above output, to configure and initialize the MySql server we need to run the following command and select the caching_sha2_password (1) to set the database root password.

# emerge --config =dev-db/mysql-8.0.27
~~~~
 * Please select default authentication plugin (enter number or plugin name):
 * 1) caching_sha2_password [MySQL 8.0 default]
 * 2) mysql_native_password [MySQL 5.7 default]
~~~~

To tunning and configure your MySql Server, you can edit the config file /etc/mysql/mysql.d/50-distro-server.cnf

Step3: Install Apache 2 Webserver

To Compile and Install The Apache 2 Webserver we need to run the following command

# emerge -q www-servers/apache

To list all shared and enabled Apache modules

# apache2ctl -M
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 mpm_event_module (static)
 actions_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_anon_module (shared)
 authn_core_module (shared)
 authn_dbd_module (shared)
 authn_dbm_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_dbm_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_owner_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgi_module (shared)
 cgid_module (shared)
 dbd_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 expires_module (shared)
 ext_filter_module (shared)
 filter_module (shared)
 headers_module (shared)
 include_module (shared)
 info_module (shared)
 log_config_module (shared)
 logio_module (shared)
 mime_module (shared)
 mime_magic_module (shared)
 negotiation_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 socache_shmcb_module (shared)
 speling_module (shared)
 ssl_module (shared)
 unique_id_module (shared)
 unixd_module (shared)
 usertrack_module (shared)
 vhost_alias_module (shared)

You can detect That mod_rewrite, mod_ssl, mod_deflate, and mod_mpm_prefork are installed and enabled.

To tunning Apache module configs, you can found/create configs files at /etc/apache2/modules.d/ directory.

Step4: Install PHP

To get the currently available PHP version

# emerge -p dev-lang/php
~~~~~
[ebuild  N     ] dev-lang/php-8.0.16-r1  USE="acl apache2 bcmath bzip2 calendar cgi cjk cli ctype curl exif fileinfo filter flatfile fpm ftp gd gdbm iconv imap intl ipv6 jit mysql mysqli nls opcache pdo phar posix readline session simplexml soap sockets sodium spell ssl threads tokenizer truetype unicode xml xmlreader xmlwriter zip zlib -apparmor -argon2 -berkdb -cdb (-coverage) -debug -embed -enchant -ffi (-firebird) -gmp -inifile -iodbc -kerberos -ldap -ldap-sasl -libedit -lmdb -mhash -mssql -oci8-instant-client -odbc -pcntl -phpdbg -postgres -qdbm (-selinux) -session-mm -sharedmem -snmp -sqlite -systemd -sysvipc -test -tidy -tokyocabinet -webp -xpm -xslt"
~~~

We can detect that the PHP version available is PHP8, so we need to append the PHP_TARGETS="php8-0" value to the /etc/portage/make.conf file

# echo "PHP_TARGETS=\"php8-0\"" >> /etc/portage/make.conf

Start to compile and Installing PHP

# emerge -q dev-lang/php
# emerge -q dev-php/pecl-imagick

The php.ini apache config file will be located at /etc/php/apache2-php8.0/php.ini file

Now enable PHP by adding -D PHP to the Apache options

# vim /etc/conf.d/apache2
~~~
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP"
~~~

Step5: Enable Apache And MySQL Auto-Start

# rc-update add mysql default
* service mysql added to runlevel default
# rc-update add apache2 default
* service apache2 added to runlevel default

Reboot your server, and it's all running now

# netstat -puntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2933/sshd: /usr/sbi
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      2582/mysqld
tcp6       0      0 :::22                   :::*                    LISTEN      2933/sshd: /usr/sbi
tcp6       0      0 :::80                   :::*                    LISTEN      2965/apache2
tcp6       0      0 :::443                  :::*                    LISTEN      2965/apache2
tcp6       0      0 :::33060                :::*                    LISTEN      2582/mysqld

Start to build your web application and database

Leave a Reply

Exit mobile version