树莓派安装PHP环境LNMP

😂 这篇文章最后更新于1453天前,您需要注意相关的内容是否还可用。
目录导航
  • 安装PHP7.3
  • 安装Nginx
  • 配置nginx解析php
  • 测试Nginx+PHP
    • Nginx启动问题
  • 安装MySQL
    • 操作MySQL
    • 开启远程访问
  • 安装PHP7.3

    万事先更新

    sudo apt-get update

    安装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

    查看版本号确定是否成功

    php -v

    显示如下就成功了

    pi@raspberrypi:~ $ php -v
    PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies

    查看php.ini配置文件位置

    pi@raspberrypi:~ $ php -i|grep "Loaded Configuration File"
    Loaded Configuration File => /etc/php/7.3/cli/php.ini

    输出显示配置文件在/etc/php/7.3/cli/php.ini。注意,实际上配置文件有两个,另外一个在/etc/php/7.3/fpm/php.ini。通过命令行调用php时,会使用第一个配置文件;通过fpm调用php(例如nginx)会使用第二个配置文件。

    php-fpm常用管理命令: 开启php-fpm: sudo systemctl start php7.3-fpm 关闭php-fpm: sudo systemctl stop php7.3-fpm 重启php-fpm: sudo systemctl restart php7.3-fpm 编辑php-fpm配置文件: vi /etc/php/7.3/fpm/php-fpm.ini

    安装Nginx

    安装nginx:

    sudo apt-get install nginx

    安装完成后,会自动开启nginx。在浏览器输入树莓派的IP地址,可以看到“Welcome to nginx!”。 或者使用命令行(输出HTML就ok了):

    curl 127.0.0.1

    默认的网站根目录:/var/www/html nginx配置文件目录:/etc/nginx/ nginx主配置文件位置:/etc/nginx/nginx.conf

    nginx常用管理命令: 

    启动nginx: sudo systemctl start nginx 

    关闭nginx:sudo systemctl stop nginx 

    设置nginx开机启动:sudo systemctl enable nginx

    取消开机自启动:sudo systemctl disable nginx

    配置nginx解析php

    编辑配置nginx文件(此文件为ln的链接文件,也可直接编辑原始文件):

    sudo nano /etc/nginx/sites-enabled/default

    找到index指令,添加index.php。修改后:

    index index.php index.html index.htm index.nginx-debian.html;

    找到# pass PHP scripts to FastCGI server后面的location,删除注释。修改后如下:

    location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    #
    # # With php-fpm (or other unix sockets):
    fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    # # With php-cgi (or other tcp sockets):
    #fastcgi_pass 127.0.0.1:9000;
    }

    保存后重启nginx:

    sudo systemctl restart nginx

    ps: 图方便的话可以把配置文件中 /var/www/html/ 路径改成 /home/pi/www/html ,然后再在pi文件夹里建相应文件夹,重启nginx,如果安装的树莓派系统为桌面版,可直接右键html文件夹属性把“更改内容”属性设置为“任何人”以让你可以在桌面系统更方便操作web文件

    测试Nginx+PHP

    新建index.php文件

    sudo nano /var/www/html/index.php

    编辑输入

    <?php
    phpinfo();

    访问树莓派IP地址显示phpInfo页面就ok了

    Nginx启动问题

    启动nginx服务时如果遇到这个错误 Job for nginx.service failed because the control process exited with error code. See “systemctl stat 可能原因如下: 1.nginx配置文件有错误

    运行下面命令查看修改

    nginx -t

    之前配置解析php时始终不能成功,只因为default文件最后一行缺少一个“}”

    2.已经启动nginx或者配置文件中的端口号被占用,检查端口是否被占用

    netstat -tnlp

    如果端口已经被占用,自己权衡一下是换个端口还是把占用端口的进程杀掉,检查nginx是否已经启动

    ps -aux | grep nginx

    如果已经启动使用下面命令干掉即可

    pkill -9 nginx

    安装MySQL

    这里使用的是MySql分支mariadb:

    sudo apt-get install mariadb-server mariadb-client

    执行数据库初始化安装

    sudo mysql_secure_installation

    根据提示设置数据库root用户密码、是否允许外网访问等。

    尝试登录数据库:

    mysql -u root -p

    输入上一步设置的密码,发现无法登录,错误提示如下:

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

    原因: 数据库默认使用系统用户登录,需要修改为使用密码登录。 解决方案: sudo mysql -u root ,登入数据库后,依次执行以下SQL:

    use mysql #切换到mysql数据库
    update user set plugin='mysql_native_password'; #修改plugin字段
    flush privileges; #刷新权限
    exit; #退出数据库

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

    mariadb配置文件保存在多个位置: /etc/mysql/mariadb.cnf /etc/mysql/mariadb.conf.d/ /etc/mysql/conf.d/

    mariadb常用命令: 启动mariadb: sudo systemctl start mariadb 关闭mariadb:systemctl stop mariadb 设置mariadb开机启动:sudo systemctl enable mariadb

    操作MySQL

    sudo /etc/init.d/mysql restart
    # mysql的其他操作    status、start、stop、restart

    开启远程访问

    允许远程访问

    $ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
    # 将bind-address这行注释掉
    # 或者将127.0.0.1 这个值改为  0.0.0.0
    # 然后重启
    $ sudo /etc/init.d/mysql restart

    设置账户权限(注意下边root密码改为你自己设置的密码)

    $ mysql -u root -p
    $ 输入密码
    MariaDB [(none)]> use mysql;
    MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root的密码' WITH GRANT OPTION;
    MariaDB [mysql]> flush privileges;

    然后用Navicat或DBeaver新建MariaDB或MySQL连接即可

    参考:

    https://blog.csdn.net/jdyanghang/article/details/102782780

    https://www.jianshu.com/p/b258c5e2335b