Sunteți pe pagina 1din 18

Instituto Cientfico del Pacifico

Manual - Install LEMP Server


(Nginx, MySQL or MariaDB, PHP
And phpMyAdmin) On Ubuntu
14.04/13.10
LEMP is a combination of the operating system and open-source software stack. The
acronym LEMP is derived from first letters of Linux, Nginx HTTP Server, MySQL database,
and PHP, Perl or Python. We already have shown you how to install LEMP and LAMP
servers on many platforms.
In this tutorial, let us see how to install Nginx, MySQL or MariaDB, PHP and phpMyAdmin
on Ubuntu 14.04 LTS server. Here, my testbox hostname is server.unixmen.local and
IP address is 192.168.1.250/24. Change these values with your own where it
appropriate.

Install Nginx
Nginx (pronounced engine-x) is a free, open-source, high-performance HTTP server and
reverse proxy, as well as an IMAP/POP3 proxy server written by Igor Sysoev.
To install Nginx enter the following command in your terminal:
Note: If you have already installed apache2 in your system, remove it first to avoid
conflicts. To uninstall apache, run the following commands:
sudo apt-get purge apache2*
sudo apt-get autoremove
Now, install nginx using command:
sudo apt-get install nginx
Start Nginx service using the command:
sudo service nginx start

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico

Test nginx
Open up your web browser and navigate to http://ip-address/ or http://localhost/.
You will see a screen something like below.

Configure Nginx
Open the file /etc/nginx/nginx.conf in any editor:
sudo nano /etc/nginx/nginx.conf
Set the worker_processes (i.e No. of CPUs in your system). To see the no. of CPUs,
use the command lscpu. In my case its 1. So I set this as 1.
worker_processes 1;
Restart Nginx service:
sudo service nginx restart

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico


The

default

vhost(server

block)

is

defined

in

the

/etc/nginx/sites-

available/default file.
Open the file /etc/nginx/sites-available/default in any editor.
sudo nano /etc/nginx/sites-available/default
Under the Server section, set the server FQDN or IP address as shown below.
[...]
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name server.unixmen.local;
[...]
Make sure youve added index.php line.
Here,

listen 80; > listen for ipv4

listen [::]:80 default_server ipv6only=on; > listen for ipv6

root /usr/share/nginx/html; > document root directory.


server_name server.unixmen.local; > Server FQDN.

Now scroll down further and find the section #location ~ \.php$. Uncomment and modify
the following lines as shown below.
location ~ \.php$ {
try_files $uri =404;

---------> Add this line

fastcgi_split_path_info ^(.+\.php)(/.+)$;
#

# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#
#

# With php5-cgi alone:

fastcgi_pass 127.0.0.1:9000;

# With php5-fpm:

fastcgi_pass unix:/var/run/php5-fpm.sock;

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico


fastcgi_index index.php;
include fastcgi_params;
}
Here, I added an extra line try_files $uri =404; to prevent zero day exploits.
Save and exit the file.

Test nginx configuration


Test the nginx configuration for any syntax errors using command:
sudo nginx -t
Sample output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Finally restart nginx service
sudo service nginx restart

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico

Install MySQL
MySQL is a relational database management system (RDBMS) that runs as a server
providing multi-user access to a number of databases, though SQLite probably has more
total embedded deployments
sudo apt-get install mysql-server mysql-client
During installation, youll be asked to setup the MySQL root user password. Enter the
password and click Ok.

Re-enter the password.

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico

Now MySQL server has been installed.


You can verify the MySQL server status using command:
sudo service mysql status
Sample output:
mysql start/running, process 5671
Note: If you want to use MariaDB instead of MySQL, then follow the below steps.

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico

Install MariaDB
MariaDB is a drop in replacement for MySQL. It is a robust, scalable and reliable SQL
server that comes rich set of enhancements.
First you have to remove existing MySQL packages if any. To completely uninstall MySQL
with configuration files, enter the following command:
sudo apt-get purge mysql*
Run the following command to remove unwanted packages.
sudo apt-get autoremove
Now add MariaDB PPA to install it. Run the following commands to add PPA.
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a
1bb943db
sudo add-apt-repository 'deb http://mirrors.scie.in/mariadb/repo/5.5/ubuntu trust
y main'
Update the software sources list and install MariaDB using following commands:
sudo apt-get update
sudo apt-get install mariadb-server mariadb-client -y
During installation you will be asked to set database root user password.

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico

Re-enter
password:

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico


Click Yes to migrate to MariaDB. Note that youll not be asked this question if you install
MariaDB before MySQL.

You can check the MariaDB version using command:


sudo mysql -v -u root -p
Sample output:
Welcome to the MariaDB monitor.

Commands end with ; or \g.

Your MariaDB connection id is 37


Server version: 5.5.37-MariaDB-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico


Reading history-file /home/sk/.mysql_history
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
Check if mariadb is running or not, using the following command:
sudo service mysql status
Sample output:
* /usr/bin/mysqladmin
686

Ver 9.0 Distrib 5.5.37-MariaDB, for debian-linux-gnu on i

Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.

Server version
Protocol version
Connection

5.5.37-MariaDB-0ubuntu0.14.04.1
10
Localhost via UNIX socket

UNIX socket

/var/run/mysqld/mysqld.sock

Uptime:

3 min 34 sec

Threads: 1 Questions: 568 Slow queries: 0


bles: 22 Queries per second avg: 2.654

Opens: 338

Flush tables: 4

Open ta

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico

Install PHP
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely used open-source
general purpose scripting language that is especially suited for web development and can
be embedded into HTML.
Install PHP with following command:
sudo apt-get install php5 php5-fpm php5-mysql

Configure PHP
Open php.ini file in any editor:
sudo nano /etc/php5/fpm/php.ini
Find the line cgi.fix_pathinfo=1, uncomment it and change the value 1 to 0.
cgi.fix_pathinfo=0
Now restart php-fpm service.
sudo service php5-fpm restart

Test PHP
Create a sample testphp.php file in nginx document root folder.
sudo nano /usr/share/nginx/html/testphp.php
Add the following lines in it.
<?php
phpinfo();
?>
Save and exit the file.
Navigate to

http://server-ip-address/testphp.php. It will display all the details

about php such as version, build date and commands etc.

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico

PHP-FPM listens on the socket /var/run/php5-fpm.sock by default. If you want to


make PHP-FPM use a TCP connection, open the file /etc/php5/fpm/pool.d/www.conf,
sudo nano /etc/php5/fpm/pool.d/www.conf
Find the line listen = /var/run/php5-fpm.sock,
;listen = /var/run/php5-fpm.sock
and modify it to listen = 127.0.0.1:9000.
listen = 127.0.0.1:9000
Save and exit the file. Restart php5-fpm service.
sudo service php5-fpm restart
Now open the nginx configuration file:
sudo nano /etc/nginx/sites-available/default

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico


Find

the

line

fastcgi_pass

unix:/var/run/php5-fpm.sock;

and

change

to fastcgi_pass 127.0.0.1:9000; as shown below.


location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#

# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

#
#

# With php5-cgi alone:

fastcgi_pass 127.0.0.1:9000;
#
#

# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_index index.php;
include fastcgi_params;
}
Save and exit the file. Finally restart nginx service.
sudo service nginx restart

Hans Caballero Maguia rea de Sistemas

it

Instituto Cientfico del Pacifico

Manage
MySQL
Databases
phpMyAdmin (Optional)

Using

phpMyAdmin is a free open-source web interface tool used to manage your MySQL
databases.

Install phpMyAdmin
It is available in the Official Debian repositories. So install it with command:
sudo apt-get install phpmyadmin
Select any webserver. By default, nginx will not be displayed here. So, select apache or
lighttpd and let us link phpmyadmin to work with nginx webserver later.

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico


Select Yes to configure database for phpmyadmin with dbconfig-common.

Enter password of the databases administrative user.

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico


Enter MySQL application password phpmyadmin.

Re-enter the password.

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico


The phpMyAdmin installation has been completed.
Create a symbolic link between phpMyAdmin and the website root directory. Here our
website root document directory is /usr/share/nginx/html/.
sudo ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html
Restart nginx server.
sudo service nginx restart

Access phpMyAdmin Web Console


Now you can access the phpmyadmin console by navigating to http://server-ipaddress/phpmyadmin/ from your browser.
Enter your MySQL username and password which you have given in previous steps. In
my case its root and ubuntu.

You will be redirected to PhpMyAdmin main web interface.

Hans Caballero Maguia rea de Sistemas

Instituto Cientfico del Pacifico

Now you can manage your MySQL databases from phpMyAdmin web interface.
Thats it. Your LEMP server is up and running now.

Hans Caballero Maguia rea de Sistemas

S-ar putea să vă placă și