LAMP
1.安装Mariadb
在Raspberry Pi中,MySQL无法安装,会自动建议安装Mariadb,它和MySQL同源,具体介绍大家可自行搜索。
$ sudo apt-get install mariadb-server mariadb-client
2. 安装PHP和apache
phpmyadmin会自动把其他相关依赖(包括apapche2)都装好,安装过程要选择和apache协同,还可设置phpmyadmin用户密码,注意要先装前面的数据库,这样设置过程才不会出现数据库连接错误。
$ sudo apt-get install phpmyadmin
$ sudo apt-get install apache2 #实际不需要执行命令,phpmyadmin会附带把apache2装好
$ sudo apt-get install libapache2-mod-php #这个没安装apache可能解析不了php代码,导致页面上直接显示php代码
$ sudo ln -s /usr/share/phpmyadmin/ /var/www/html/ #在apache默认web目录下添加phpmyadmin的软链接,否则后者无法打开
3. 测试php和apache的协同
-
测试apache
-
测试php页面
在默认的网站根目录/var/www/html/下新增php程序phpinfo.php,并添加内容:
<?php phpinfo(); ?>
4. 修改MariaDB数据库配置
$ sudo mysql_secure_installation #设置root密码,是否删除匿名用户,是否只允许localhost连接,是否删除test库,最后更新权限。
之后在终端用root登录数据库
# mysql -u root -p
发现会报错“ERROR 1698 (28000): Access denied for user 'root'@'localhost'”,树莓派4B安装PHP7.3 + Nginx + MySQL 教程给出了解决办法
$ sudo mysql -u root
MariaDB [(none)]> use mysql;
MariaDB [mysql]> update user set plugin='mysql_native_password';
MariaDB [mysql]> flush privileges;
之后重新使用root密码登录,成功。
5.测试数据库连接
- 编写php连接数据库的脚本testdblink.php(我习惯用PDO连接,测试账号root)
<?php
$servername = "localhost";
$dbName = "mysql";
$username = "root";
$password = "此处输入root密码";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbName", $username, $password);
echo "连接成功";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
保存为testdblink.php放在apache的/var/www/html默认目录下测试。
由于安装了phpmyadmin,就可以直接通过web管理数据库了。
登录地址:http://服务器ip地址/phpmyadmin/index.php
6. 修改apache2监听端口
apache2默认监听80端口,如果不希望这个端口被使用,可以尝试修改。
$ cd /etc/apache2/
$ sudo nano ports.conf
$ cd /etc/apache2/sites-enabled/
$ sudo nano 000-default.conf
$ sudo service apache2 restart
LNMP
1. 安装Mariadb
同lamp
2. 安装和配置nginx
$ sudo apt-get install nginx
先前apache已将监听端口修改至8080,将80端口腾出
修改nginx配置文件
$ sudo nano /etc/nginx/sites-available/default
保持80端口监听
手工追加index.php。注意到“root /var/www/html;”,说明nginx的默认根目录是/var/www/html,Web页面文件要放在这个目录下
将
修改为如下:
重启
$ sudo systemctl restart nginx
3. 安装php-fpm
在安装phpmyadmin时,有一步骤是选择配合的web服务器,由于要用nginx,所以此时都不选放空。php很多组件在安装phpmyadmin时组件都装了,nginx需要另外装php-fpm。
$ sudo apt-get install php-fpm
4. 测试
测试php,可以发现Server API和apache的php页面不同
数据库已经安装,直接测试也ok。
有个bug:nginx监听端口是80,apache2的监听端口已经改成了8080,但是直接在浏览器那里输入ip,仍旧是apache的页面,而输入“ip地址/phpinfo.php”时,却能定位到fpm,而不是apache。用命令/etc/init.d/apache2 stop 停止apache2服务,80端口正常8080端口无法打开,说明nginx正常,但是默认页面还是apapche2的。
解决:我同时保留了apache和nginx,经查看/var/www/html/目录发现:目录中有index.html和另一个index.nginx-debian.html,前者是安装apache时默认添加的。直接在浏览器那里输入ip实际默认访问的是ip/index.html。因此要测试nginx的基本页面,应该访问ip/index.nginx-debian.html。