LNMP介绍

LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。

LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

先更新服务器

1
2
3
sudo apt-get update # 获取最新资源包
sudo apt-get upgrade # 本机软件全部更新
sudo apt-get dist-upgrade # 本机系统软件更新

安装数据库-MySQL

安装mysql最新版

1
2
apt install mysql-server
apt install mysql-client

安装完后我们直接以空密码登录mysql,如果在安装过程中提示输入密码则使用安装过程中设置的密码。

1
mysql -uroot -p

若提示 ERROR 1698 (28000): Access denied for user 'root'@'localhost',请看这篇文章

Mysql ERROR 1698 (28000) 解决 - 黑猫警长的怨念

更改mysql数据库root用户的密码。

1
2
3
4
5
use mysql;
update mysql.user set authentication_string=password('admin123') where user='root' and Host ='localhost';
update user set plugin="mysql_native_password";
flush privileges;
quit;

开启远程登录

找到mysql的配置文件,/etc/mysql/mysql.conf.d/mysqld.cnf,找到下面这个,在前面加个#号把它注释掉,然后重启mysql服务service mysql restart

1
#bind-address		= 127.0.0.1

注意:以前mysql的配置文件为/etc/mysql/my.cnf,新版的配置文件变成了是/etc/mysql/mysql.conf.d/mysqld.cnf

另外离线安装mysql,可看这篇文章,这样的话可以安装指定的版本,而不是最新版。

https://www.cnblogs.com/JasonTech0713/p/6690949.html

安装phpmyadmin

1
2
3
apt-get install phpmyadmin
ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
#建立软连接

安装Nginx

1
apt-get install nginx

编辑Nginx 默认的配置文件/etc/nginx/sites-enabled/default,做如下修改 。

image-20191204121649483

1
/etc/init.d/nginx restart  #重启Nginx服务

安装php

1
apt-get install php-mysql php-fpm php-curl php-xml php-gd php-mbstring php-memcached php-zip php-gettext

编辑配置文件/etc/php/7.2/fpm/php-fpm.conf,在最后面加上这句

1
listen = /run/php/php7.2-fpm.sock

再编辑配置文件/etc/php/7.2/fpm/php.ini,搜索以下值,改成跟下面一样。

1
2
3
display_errors = On
short_open_tag = On
;cgi.fix_pathinfo=0

然后重启服务

1
service php7.2-fpm restart

测试

写个phpinfo来测试一下

1
echo "<?php phpinfo();?>" > /var/www/html/phpinfo.php

打开浏览器,访问这个文件 http://ip/phpinfo.php,可以看到phpinfo信息显示正常就没有问题了,然后记得删掉这个文件rm /var/www/html/phpinfo.php

这里记录一下我使用的 LANP 版本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root@0o0:~# uname -a
Linux 0o0 5.0.0-37-generic #40-Ubuntu SMP Thu Nov 14 00:14:01 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

root@0o0:~# mysql --version
mysql Ver 14.14 Distrib 5.7.28, for Linux (x86_64) using EditLine wrapper

root@0o0:~# nginx -v
nginx version: nginx/1.15.9 (Ubuntu)

root@0o0:~# php -v
PHP 7.2.24-0ubuntu0.19.04.1 (cli) (built: Oct 24 2019 11:49:39) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.24-0ubuntu0.19.04.1, Copyright (c) 1999-2018, by Zend Technologies

部署一个网站-dvwa

打开phpmyadmin管理页面,新增一个用户,并创建名为dvwa的数据库,如下:

1575452820455

编辑dvwa源码包中的配置文件config.inc.php

1575453046655

然后把文件上传到服务器/var/www/html/目录中。

再给几个文件改下权限,具体是什么文件,看/dvwa/setup.php页面。

1
2
3
chmod 777 /var/www/html/dvwa/config/
chmod 777 /var/www/html/dvwa/hackable/uploads/
chmod 777 /var/www/html/dvwa/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt

最后访问http://ip/dvwa/,之后按提示操作(创建数据库),更多安装详情,可自行百度。

扩展阅读

Nginx + PHP CGI的一个可能的安全漏洞 - Laruence

Nginx+Php-fpm 运行原理详解 - 子路

Ubuntu18.04新手架设网站全过程 - 帘倦西风

Ubuntu 安装 PhpMyAdmin 管理 MySQL 数据库 - 肖朋伟

渗透测试环境DVWA搭建 - faramita2016