zoukankan      html  css  js  c++  java
  • 树莓派使用apt-get安装配置Nginx+PHP7+MySQL(MariaDB)附带详细部分

    连接

    0.环境说明

    • 设备:树莓派Raspberry Pi 3b
    • 镜像:raspbian-stretch-lite (2017-11-29)
    • 网关:普通路由器NETGEAR R6220
    • 接入方式:有线接入

    1.配置系统

    • 镜像下载地址:https://www.raspberrypi.org/downloads/raspbian/
    • 烧录工具:Win32DiskImager
    • 烧录完成后在boot分区创建一个名称为”ssh”的文件,用记事本创建,没有后缀名。
    • 初次登录用户名pi,密码raspberry,修改密码sudo passwd pi
    • (自选)安装编辑工具vim:apt-get install vim
    • 更换源为阿里的源http://mirrors.aliyun.com/raspbian/raspbian/,修改文件/etc/apt/sources.list,替换两个链接,去掉第二行连接前的注释。
    • 更新软件库并更新软件apt-get updateapt-get upgrade
    • 个人建议全程使用root权限安装软件。

    2.安装Nginx

    我使用的镜像竟然预装了Apache2,我都怀疑我用的是不是lite版。可能是我没什么见识吧。我不喜欢用这个,所以我将其完整删除了。参考shell如下:

    1.  
      apt-get remove --purge apache* -y
    2.  
      apt-get autoremove --purge -y
    • 1
    • 2
    • 1
    • 2

    安装Nginx参考shell如下:

    apt-get install nginx
    • 1
    • 1

    Nginx的配置先放一下,全部安装之后讲。

    3.安装PHP7及其部分插件

    如果使用apt-get直接安装,默认安装的是5.6版本的php,如果希望安装PHP7,参考以下shell:

    1.  
      apt-get install software-properties-common
    2.  
      add-apt-repository ppa:ondrej/php
    3.  
      apt-get update
    4.  
      apt-get install php7.0 php7.0-fpm php7.0-mysql php7.0-common
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4
    • 前两行是在安装php7的ppa源
    • 更新源列表后才可安装PHP7(PHP7.0和PHP7.1通用)
    • 最后一行安装了PHP7.0主体,与Nginx对接的php7.0-fpm插件,与mysql对接的php7.0-mysql插件,常用函数工具php7.0-common插件。 
      PHP的配置也有点复杂,放在后面讲。

    4.安装MySQL(MariaDB)

    使用apt-get命令安装的MySQL默认是MariaDB发行版,我不是很会改,貌似只能编译安装才能避免这个问题。我比较懒,只能接受了。还好差别不大。 
    安装MySQL(MariaDB)的shell命令参考如下:

    apt-get install mysql-server mysql-client
    • 1
    • 1

    5.配置Nginx+PHP7+MySQL(MariaDB)

    5.1.重启服务shell

    1.  
      /etc/init.d/nginx restart
    2.  
      /etc/init.d/php7-fpm restart
    3.  
      service mysql restart
    • 1
    • 2
    • 3
    • 1
    • 2
    • 3

    Nginx和php-fpm也可以用service重启,但是。。。我不习惯

    5.2.配置php-fpm

    此处需要选择Nginx连接到php服务的形式,tcp模式或者socket模式。

    首先要找到www.conf文件,这个文件不好找,不同的平台会导致文件位置不同。 
    我的文件位置在/etc/php/7.0/fpm/pool.d,网上的教程还有在etc/php-fpm.d的。

    编辑www.conf文件参考:

    vim  /etc/php/7.0/fpm/pool.d/www.conf
    • 1
    • 1

    找到参数listen = /run/php/php7.0-fpm.sock

    socket

    如果参数对应的是XXXX.sock说明php-fpm是通过socket模式与Nginx联络的。 
    如果参数对应的是127.0.0.1说明php-fpm是通过socket模式与Nginx联络的。

    可以根据自己的需要进行修改,请记住该参数,这将会在配置Nginx时用到。

    5.3.配置Nginx

    不知道为啥,apt-get安装出来的Nginx比yum安装出来的配置文件写的更分散,各种include 
    正常情况下配置文件nginx.conf就可以了,但是我的平台上nginx.conf文件中引入了sites-enabled文件夹中的全部配置文件,这就很。。。烦 
    修改配置文件nginx.conf参考:

    1.  
      #在http{}内有
    2.  
      #include /etc/nginx/conf.d/*.conf;
    3.  
      #include /etc/nginx/sites-enabled/*;
    4.  
      #我建议修改为
    5.  
      include /etc/nginx/conf.d/*.conf;
    6.  
      include /etc/nginx/sites-enabled/*.conf;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    default文件为模版,在sites-enabled文件夹下建立网站配置文件,shell参考如下:

    1.  
      cp default my.conf
    2.  
      vim my.conf
    • 1
    • 2
    • 1
    • 2

    配置站点信息,参考如下:

    1.  
      #个人建议在server{}中删除root和index
    2.  
      location / {
    3.  
      root /home/www;
    4.  
      index index.php index.html;
    5.  
      try_files $uri $uri/ =404;
    6.  
      }
    7.  
      location ~.php$ {
    8.  
      root /home/www;
    9.  
      fastcgi_pass unix:/run/php/php7.0-fpm.sock;#socket mode
    10.  
      #fastcgi_pass 127.0.0.1:9000;#tcp mode
    11.  
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    12.  
      include fastcgi_params;
    13.  
      }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    注意!!注意!! 
    fastcgi_pass一定要对应我上述的php-fpm连接方式,如果是tcp模式,请修改为对应的地址和端口。否则会出现502 Bad Gateway。 
    Tip: 
    若测试时出现404 Not found,一般情况都是root对应的路径设置错误。 
    若测试时出现502 Bad Gateway,一般情况都是fastcgi_pass对应的模式设置错误。

    在配置后保存配置文件,在root对应的文件夹下建立测试文件,重启Nginx,尝试使用主机的IP访问。 
    建议先使用<?php phpinfo();?>进行测试,若不成功。。。请自习加油调整配置 
    Nginx的配置可以参考我的另一篇文章:http://blog.csdn.net/qq_36731677/article/details/77376140

    5.4.配置MySQL(MariaDB)

    我把我遇到的问题和解决方案都分条写在下面了,可有选择性的食用。

    • php连接mysql失败:安装php7.0-mysql插件,在mysql内分配正确的用户名和权限(请自行百度)。
    • shell登录mysql:mysql -u root -p默认无密码,直接回车。
    • 允许远程连接:在mysql内执行命令,参考UPDATE mysql.user SET host=% WHERE user='root';FLUSH PRIVILEGES;
    • 远程连接发生100061错误: 
      • 编辑my.ini文件(在MariaDB中为my.cnf,我的在/etc/mysql文件夹中,然后文件告诉我它直接引入了两个文件,淦)
      • 找到[mysqld]字段(不是[mysql]字段)(在MariaDB中需要在/etc/mysql/mariadb.conf.d文件夹中的50-server.cnf中找到)
      • mysqld
      • 修改其中的bind-address为bind-address = 0.0.0.0
      • 保存并重启mysql服务后生效
      • 官方文档https://mariadb.com/kb/zh-cn/configuring-mariadb-for-remote-client-access/

    完结

    经过这一波折腾后,我的小型站点就可以在树莓派上运行了,感觉还是很美滋滋的。 
    过一段可能会考虑在树莓派上安装一个NAS服务,充分发掘其价值。

  • 相关阅读:
    LeetCode 42. Trapping Rain Water
    LeetCode 209. Minimum Size Subarray Sum
    LeetCode 50. Pow(x, n)
    LeetCode 80. Remove Duplicates from Sorted Array II
    Window10 激活
    Premiere 关键帧缩放
    AE 「酷酷的藤」特效字幕制作方法
    51Talk第一天 培训系列1
    Premiere 视频转场
    Premiere 暴徒生活Thug Life
  • 原文地址:https://www.cnblogs.com/ZHENGJUNupperclassman/p/9761586.html
Copyright © 2011-2022 走看看