搭建lamp环境真的是学习linux最好的实践了。从去年9月开始,我搭建lamp环境应该有十多次了,第一次是在windows下分别搭建的php,mysql和apache。手改配置文件,居然也没出什么错误。之后是因为作业要求,在linux下用包管理器搭建环境。在ubuntu虚拟机、kali虚拟机和自己的云服务器以及帮同学搭建都算上,大概有5次左右。之后受老师要求,在一台年久失修的服务器上把原本的php和apache卸载,安装最新的php和apache。那次是纯源码编译安装。只记得从12点弄到了凌晨5点多。之后信安协会的作业又apt搭建一次,纯源码搭建一次。只不过那次是寒假,源码搭建的最后连接数据库有点问题也没去管。再再之后,就没干过手工搭建的事了。phpstudy和宝塔一键,真香。
废话说多了,这里记录的是我最近在腾讯云的ubuntu学生机上用apt搭建lamp环境的过程,不出意料的,不管之前搭建过多少次,每次还是会遇到一大堆坑。不过之前不写博客,现在这里记录一下过程,希望以后踩坑的时候有自己的博客可以查(如果之前搭建的10多次都有过程记录该多好。。。):
以下命令全部使用root执行,如果不用root记得sudo
#apt update
更新一下可用软件包列表
#apt upgrade
更新已安装的软件包
#apt install apache2
安装apache2
#systemctl start apache2
启动apache
#apt install mysql-client mysql-server
安装mysql
#mysql -uroot
登陆mysql
mysql>use mysql;
进入mysql表
mysql>update user set authentication_string=password(“123456”) where user=“root”;
设置数据库root的密码
mysql>update user set plugin=“mysql_native_password”;
这一步是启用密码登陆的作用,不然设置的密码是无效的,任意密码都能登陆
mysql>flush privileges;
使设置生效
mysql>quit
退出mysql
#apt install php
安装php,腾讯云给我装的是php7.2
#vim /var/www/html/index.php
在web根目录下创建index.php文件,里面是用mysqli连接数据库的语句
<?php
include("../db_config.php");
$conn=mysqli_connect($mysql_name,$mysql_username,$mysql_password);
if($conn == false)
{
die(mysqli_connect_error());
}else
{
echo("数据库连接成功!<br>");
}
?>
#vim /var/www/html/phpinfo.php
在web根目录下创建phpinfo
<?php phpinfo();?>
#apt install php-mysql
#apt install php-mbstring
#apt install php-gettext
安装扩展,有一些是phpmyadmin用到的
#vim /etc/php/7.2/apache2/php.ini
编辑php.ini文件
#extension_dir="./"
#extension=mysqli
#extension=mbstring
#extension=pdo_mysql
将上面的注释#去掉
display_errors=On
开启debug模式方便定位错误
#systemctl restart apache2
重启apache
这里遇到一个坑,卡了我好久,就是mysqli怎么也连不上数据库,错误提示找不到mysqli这个扩展。看phpinfo里也确实没有,并且是什么和数据库相关的扩展都没有,mysql,mysqli,mysqlnd,pdo……都没有。查了好久怎么安装扩展……
后来发现其实之前apt install php-mysql就应该是安装好了的,用
#find / |grep mysqli
命令找到mysqli.so文件在下面目录
/usr/lib/php/20170718/mysqli.so
想到应该是扩展没有引用进来
#vim /etc/php/7.2/apache2/php.ini
再次编辑php.ini
extension_dir="/usr/lib/php/20170718/"
更改了扩展的目录位置
#systemctl restart apache2
重启服务器
#vim /etc/apache2/apache2.conf
(vim /etc/httpd/conf/httpd.conf #CentOS)
编辑apache配置文件隐藏服务器报错页面的版本号和敏感信息
添加
ServerTokens Prod
ServerSignature Off
#systemctl restart apache2
(systemctl apache2 restart #SystemD)
重启服务器