Ubuntu 安装Apache+Mysql+PHP

1、Ubuntu16.04 安装Apache服务

首先更新源,如果更新过了就不用更新了

$ sudo apt-get update

下载Apache服务

$ sudo apt-get install apache2

查看Apache服务状态

$  sudo service apache2 status

 

开启Apache服务:

$ sudo /etc/init.d/apache2 start

停止Apache服务

$ sudo /etc/init.d/apache2 stop

Apache服务的默认根路径在:/var/www

html页面存放在:/var/www/html 路径下

 

1.1 修改PHP与Apache配置文件来显示报错信息

Apache服务安装完后,默认是不会在页面上显示报错信息的

需要修改PHP和Apache的配置文件

PHP的配置文件分别是:php.ini、httpd.conf

(1)修改PHP配置文件

配置文件位于 /etc/php/7.0/apache2/php.ini 或者是 /etc/php5/apache2/php.ini ,修改内容如下

#然后这个是新加上去的
error_reporting = E_ALL | E_STRICT 
#把默认的OFF改成On
display_errors = On 

 我这个display_errors是出现在462行,具体还是使用“/ str”来搜索

 

(2)修改Apache配置文件

修改 /etc/apache2/httpd.conf 文件,默认是这个文件是空的,如果没有就创建,添加内容如下

php_flag display_errors        on 
php_value error_reporting       2039 

 

1.2 Apache 安装插件记录POST请求数据

我们都知道,Apache默认情况下日志只能记录GET参数,无法记录POST参数,那么我们就需要通过一些操作来记录请求体和响应体

可以通过ModSecurity来查看POST数据

在Ubuntu上安装

sudo apt install libapache2-mod-security2

使用推荐的配置文件

#修改文件名称
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

 然后修改 modsecurity.conf 配置文件

修改以下两行对应的值为On

SecRuleEngine On
SecAuditEngine On

重新加载,重新启动

sudo service apache2 reload
sudo service apache2 restart

 然后我们就能在/var/log/apache2/modsec_audit.log下看到请求文本和响应文本了。

参考博客:http://www.la0t0ng.top/archives/418

 

1.3 排查Apache日志信息是否存在SQL注入

排查GET、POST请求数据包是否存在SQL注入请求,命令如下,可以对关键字select进行修改:

#排查GET请求数据,是否存在SQL注入请求
cat /var/log/apache2/access.log |grep -a -i select
awk '{print $0}' /var/log/apache2/access.log |grep -a -i select

#排查POST请求数据,是否存在SQL注入请求
cat /var/log/apache2/modsec_audit.log |grep -a -i select

 效果如下,可以看到很多带有SQL注入的数据:

2、Ubuntu安装Mysql服务

下载Mysql服务:

sudo apt-get install mysql-server

安装完后,使用root用户登录,发现使用空密码、root密码都登录不进去了,

所以这里我使用默认的debian账号、密码登录进去,然后对重置root密码(这个Debian账号、密码是Mysql安装完后自带的)

sudo cat debian.cnf

 

登进mysql后,使用下面的SQL语句,对mysql的root用户进行修改

use mysql
update user set authentication_string=password('akshansh') where USER='root';
FLUSH PRIVILEGES;
exit;

退出后,使用普通用户登录进去后,如果显示没有权限的话,可以在前面加个sudo即可登录进去,

比如显示:[ERROR 1698 (28000): Access denied for user 'root'@'localhost']

如果也想普通用户也能登录进去的话,需要再次进入mysql,然后输入下面的sql语句,对配置进行修改,

修改完后退出,重启mysql服务,之后使用普通用户登进去即可

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
​
$ sudo service mysql restart

如果还不行,就使用第二种方式:

mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;
​
$ sudo service mysql restart

普通用户也可以使用mysql的root用户登录了

 

参考博客:https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost

3、PHP安装并配置Apache

安装php,安装php依赖

#安装php
sudo apt-get install php
#安装php依赖,用于Apache解析php
sudo apt-get install libapache2-mod-php php
#安装php连接Mysql插件
sudo apt-get install php-mysql
dpkg-reconfigure php5-mysql
sudo /etc/init.d/mysql restart
sudo /etc/init.d/apache2 restart

以上两条命令执行完后,就会自动安装比较新的php版本,并且配置会自动在Apache配置好php解析环境

查看了一下,/etc/apache2/apache2.confApache的配置文件,看到了如下配置信息,顿时明白了

 

只要是/etc/apache2/mods-available下所有带有load、conf为后缀的文件都会被加载到配置文件中去

所以只有该文件夹下存在php的配置文件即可不用做任何改动,如下所示:

 

参考博客连接:https://blog.csdn.net/pang040328/article/details/12143095 ,http://blog.sina.com.cn/s/blog_6b8bea470100qrdw.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冒险岛_0_

您的打赏是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值