树莓派使用apt-get安装配置Nginx+PHP7+MySQL(MariaDB)附带部分细节
最近使用树莓派搞定了一个小项目,现在树莓派闲置了,正好拿来做一个小型Web服务器进行功能测试。没想到配置的过程比我想象的复杂,好多小细节是用云服务器的时候没遇见过的。我已经尝试写的很简洁了,各位可以根据需要有选择的食用。
0.环境说明
设备:树莓派Raspberry Pi 3b
镜像:raspbian-stretch-lite (2017-11-29)
网关:普通路由器NETGEAR R6220
接入方式:有线接入
1.配置系统
烧录工具: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 update
和apt-get upgrade
。个人建议全程使用root权限安装软件。
2.安装Nginx
我使用的镜像竟然预装了Apache2,我都怀疑我用的是不是lite版。可能是我没什么见识吧。我不喜欢用这个,所以我将其完整删除了。参考shell如下:
apt-get remove --purge apache* -yapt-get autoremove --purge -y
安装Nginx参考shell如下:
apt-get install nginx
Nginx的配置先放一下,全部安装之后讲。
3.安装PHP7及其部分插件
如果使用apt-get直接安装,默认安装的是5.6版本的php,如果希望安装PHP7,参考以下shell:
apt-get install software-properties-commonadd-apt-repository ppa:ondrej/php apt-get update apt-get install php7.0 php7.0-fpm php7.0-mysql php7.0-common
前两行是在安装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
5.配置Nginx+PHP7+MySQL(MariaDB)
5.1.重启服务shell
/etc/init.d/nginx restart /etc/init.d/php7-fpm restart service mysql restart
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
找到参数listen = /run/php/php7.0-fpm.sock
如果参数对应的是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
参考:
#在http{}内有 #include /etc/nginx/conf.d/*.conf;#include /etc/nginx/sites-enabled/*;#我建议修改为include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*.conf;
以default
文件为模版,在sites-enabled文件夹下建立网站配置文件,shell参考如下:
cp default my.confvim my.conf
配置站点信息,参考如下:
#个人建议在server{}中删除root和indexlocation / { root /home/www; index index.php index.html; try_files $uri $uri/ =404; } location ~\.php$ { root /home/www; fastcgi_pass unix:/run/php/php7.0-fpm.sock;#socket mode#fastcgi_pass 127.0.0.1:9000;#tcp modefastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params; }
注意!!注意!!fastcgi_pass
一定要对应我上述的php-fpm连接方式,如果是tcp模式,请修改为对应的地址和端口。否则会出现502 Bad Gateway
。Tip:若测试时出现404 Not found
,一般情况都是root对应的路径设置错误。
若测试时出现502 Bad Gateway
,一般情况都是fastcgi_pass对应的模式设置错误。
在配置后保存配置文件,在root对应的文件夹下建立测试文件,重启Nginx,尝试使用主机的IP访问。
建议先使用<?php phpinfo();?>
进行测试,若不成功。。。
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
中找到)修改其中的bind-address为
bind-address = 0.0.0.0
保存并重启mysql服务后生效
官方文档https://mariadb.com/kb/zh-cn/configuring-mariadb-for-remote-client-access/
点击链接加入群聊三群:751529538
点击链接加入群聊二群:376877156
点击链接加入群聊【路由器交流群:622891808已满】
本站附件分享,如果附件失效,可以去找找看
饿了么红包