1. Apache
1.1. 安装Apache
1
| sudo apt update && apt install apache2
|
1.2. 启动Apache
任选一条命令启动apache:
1 2 3 4
| apache2ctl -k start systemctl start apache2 service apache2 start /etc/init.d/apache2 start
|
1.3. 验证服务状态
执行curl -I 127.0.0.1
,能看到200状态码则说明服务正在运行。
1.4. 常见问题
- 启动过程若如果遇到配置文件错误的提示,执行下面这条命令可解决大部分相关问题:
1
| source /etc/apache2/envvars
|
- 如果已经安装了Nginx并且正在运行,则还需要修改apache默认监听端口,比如改为81:
1
| sudo sed -i '/^Listen 80/c\#Listen 80\nListen 81' /etc/apache2/ports.conf
|
- 去除AH00558警告:
1
| echo ServerName localhost >> /etc/apache2/apache2.conf
|
注意,这里的localhost并不表示只接受来自本机的访问,而是一个服务器名称,用于给apache服务器构建它自身的url, 比如apache服务器在需要引用自己的时候,将会使用如 http://localhost/ 这样的URL, 并且在日志中记录的也将是localhost,方便更容易地看出哪些请求是由服务器本身发出的。
- 没有索引文件时禁止显示目录结构(目录遍历漏洞):
编辑/etc/apache2/apache2.conf
文件中的<Directory /var/www/>
项,将Options
字段中的Indexes
删除:
1 2
| sudo sed -i 's/Options Indexes FollowSymLinks/Options FollowSymLinks/' /etc/apache2/apache2.conf apache2ctl -k restart
|
- 隐藏Apache版本信息:
1 2
| sudo sed -i '$a ServerTokens Prod' /etc/apache2/apache2.conf sudo apache2ctl -k restart
|
1.5. 常用命令
1 2 3 4 5
| apache2ctl [-k start|restart|graceful-stop|stop] apache2 -k [-k start|restart|graceful-stop|stop] apache2ctl -t apache2 -V apache2ctl -M
|
2. PHP
2.1. 安装PHP
2.2. 验证服务状态
1 2
| echo <?php phpinfo();?> /var/www/html/index.php curl 127.0.0.1/index.php
|
2.3. 修复无法调用PHP
1 2 3 4
| sudo apt install -y libapache2-mod-php apache2ctl -k restart apache2ctl -M | grep php curl 127.0.0.1/index.php
|
3. MySQL
3.1 安装MySQL和phpMyAdmin
1 2 3
| sudo apt install mysql-server sudo apt install phpmyadmin apache2ctl -k restart
|
3.2. 启用phpMyAdmin
1 2
| echo Include /etc/phpmyadmin/apache.conf >> /etc/apache2/apache2.conf apache2ctl -k restart
|
本机浏览器访问127.0.0.1/phpmyadmin
即可看到登录页面。
注意:如果重启Apache2时弹AH00671警告,则需注释掉/etc/apache2/apache2.conf
文件中的Include /etc/phpmyadmin/apache.conf
,重启即可。
3.3. 常见问题
- phpMyAdmin禁止空密码用户登录
编辑/etc/phpmyadmin/config.inc.php
文件,将含AllowNoPassword
的两行取消注释,再回到网页即可使用空密码登录。
- mysql的root用户无法登录
在mysql8.0以后,root用户使用auth_socket插件进行身份验证,此插件不验证登录密码,也就是说,即使给root设置了密码,也不会进行验证,只有本地系统的root用户才能登录mysql的root账户,其他用户必须使用sudo提权至root才可登录。
解决方法有两个,第一个是取消auth_socket验证,改为password验证(不推荐):
1 2 3 4
| select user,host,authentication_string from mysql.user; select user,host,plugin from mysql.user; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
|
第二个方法是创建新用户并赋予全部权限来代替root用户(推荐):
1 2
| CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
|
4. 参考资料
How to install Apache2, Ubuntu
How to install on Debian and Ubuntu, phpMyAdmin
在Ubuntu上安装并配置Apache2 + PHP, 爱拼安小匠
故障分析 | 正确使用 auth_socket 验证插件, 爱可生开源社区