0%

在树莓派3B上安装PHP 7.3 + Nginx + Mariadb

在树莓派3B上搭建网站服务器环境:PHP7.3 + Nginx + Mariadb。数据库Mariadb是MySQL的一个分支,API和命令行兼容MySQL。

安装PHP 7.3

  1. 添加apt源。编辑apt源配置文件:
    sudo vi /etc/apt/sources.list.d/raspi.list
    在后面加入一行:
    deb http://mirrordirector.raspbian.org/raspbian/ buster main contrib non-free rpi
  2. 更新软件包列表:
    sudo apt update
  3. 安装PHP7.3:
    sudo apt install -y -t buster php7.3-fpm php7.3-curl php7.3-gd php7.3-intl php7.3-mbstring php7.3-mysql php7.3-imap php7.3-opcache php7.3-sqlite3 php7.3-xml php7.3-xmlrpc php7.3-zip
    安装过程中会提示某些服务需要重启,选择Yes即可。
  4. 测试是否安装成功:
    php -v
    如果显示php版本号,则安装成功,如下:

    PHP 7.3.2-3 (cli) (built: Feb 8 2019 15:05:54) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.3.2, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.2-3, Copyright (c) 1999-2018, by Zend Technologies

安装Nginx

  1. 安装nginx:
    sudo apt-get install nginx
  2. 安装完成后,网站根目录在/var/www/html, 编辑该目录下的index.nginx-debian.html文件,写入Hello, Nginx!
  3. 测试是否安装成功:打开浏览器输入http://127.0.0.1,能看到刚刚编辑的Hello, Nginx!说明安装成功。或者使用命令行: curl 127.0.0.1 ,也能够输出Hello, Nginx!

配置Nginx解析PHP

  1. 编辑Nginx配置文件sudo vi /etc/nginx/sites-enabled/default, 找到# pass PHP scripts to FastCGI server, 在后面加入以下代码:

     location ~ \.php$ {   
         include snippets/fastcgi-php.conf;        
         fastcgi_pass unix:/run/php/php7.3-fpm.sock;    
    }       

    然后在index指令后面加上index.php,修改后文件内容如下:

  2. 修改配置后需要重新加载Nginx配置才能生效:
    sudo nginx -s reload

  3. 测试解析PHP。创建一个文件/var/www/html/index.php,写入php代码:

     <?php  
     echo time();

    保存后执行命令curl 127.0.0.1,返回时间戳即说明Nginx成功解析了php。

安装Mariadb数据库

  1. 安装数据库:
    sudo apt-get install mariadb-server mariadb-client

  2. 执行数据库初始化安装:
    sudo mysql_secure_installation
    根据提示设置root密码等信息。

  3. 尝试登录数据库:
    mysql -u root -p
    输入上一步设置的密码,发现无法登录,错误提示如下:

    ERROR 1698 (28000): Access denied for user 'root'@'localhost'  

    原因: 数据库默认使用系统用户登录,需要修改为使用密码登录。
    解决方案: sudo mysql -u root ,登入数据库后,依次执行以下代码:
    use mysql #切换到mysql数据库
    update user set plugin='mysql_native_password'; #修改plugin字段
    flush privileges; #刷新权限
    exit; #退出数据库

    再次使用mysql -u root -p即可通过密码登录数据库,无需root权限执行。