Raspberry Pi 4B LAMP/LNMP配置

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。

posted @ 2020-03-17 19:26  旺得福000  阅读(1071)  评论(0编辑  收藏  举报