😜 树莓派折腾手册 (二)——手动搭建LNMP网站服务器环境 🙏

Linux

This article was last updated on <span id="expire-date"></span> days ago, the information described in the article may be outdated.

😜 树莓派折腾手册 (二)——手动搭建 LNMP 网站服务器环境 🙏

前言:这个东西我折腾了很久,试过一键部署脚本: https://lnmp.org/auto 但是我想在局域网 +frp 穿透的外网,访问树莓派的网站,但是只能绑定一个域名,反正用多了就出各种问题,可能我不会用

sudo apt-get update   #好习惯,安装软件前先更新源列表

1.安装 PHP7.3

这里跳了很多坑,后来查文档才发现 Debian 10 buster 只能安装 PHP7.0 以上的版本

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 能够看到 PHP 版本号 7.3,说明安装完成:

输出显示配置文件在/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配置文件:
sudo nano /etc/php/7.3/fpm/php.ini

2.安装 nginx:

sudo apt-get install nginx

安装完成后,会自动开启 nginx。在浏览器输入树莓派的 IP 地址,可以看到“Welcome to nginx!”

nginx 常用管理命令:

启动nginx: sudo systemctl start nginx
关闭nginx:sudo systemctl stop nginx
设置nginx开机启动:sudo systemctl enable nginx
重启nginx:sudo systemctl restart nginx
#配置文件的位置:
默认的网站根目录:/var/www/html
nginx配置文件目录:/etc/nginx/
nginx主配置文件位置:/etc/nginx/nginx.conf

3.配置 Nginx 解析 Php (关键)

  • 编辑配置 nginx 文件:
sudo nano /etc/nginx/sites-enabled/default

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

PHP 的默认路径转发有问题导致的,因为很多 nginx 的默认 PHP 配置文件的写法为 location ~ ​php 要改成 location~.php(.)*$

index index.php index.html index.htm index.nginx-debian.html;
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

重启无报错则修改成功啦:
image

  • 在网站根目录创建一个 php 文件:
sudo nano /var/www/html/index.php

写入以下 php 代码并保存:

<?php phpinfo();

在浏览器中输入树莓派的 IP 地址即可看到 phpinfo:
image

4.安装 mariaDB 数据库

  • 使用以下命令安装 mariadb:
sudo apt-get install mariadb-server mariadb-client
  • 执行数据库初始化安装:
sudo mysql_secure_installation

根据提示设置数据库 root用户密码是否允许外网访问 等,建议用翻译软件,一步步翻译。 回车 n Y n Y Y

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

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

原因: 数据库默认使用特权用户 root 登录,需要修改为普通用户使用密码登录

  • 尝试用特权用户 root登录数据库:
sudo mysql -u root# 登入数据库后,依次执行以下SQL: use mysql;update user set plugin='mysql_native_password';flush privileges;exit;

image

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

image

  • 设置数据库密码
    依次执行以下 SQL:
use mysql;   UPDATE user SET password=password('123456') WHERE user='root';   flush privileges;   exit;
  • 设置mariaDB 数据库 外部网络访问权限

根据官方的说法, MariaDB 为了提高安全性,默认只监听 127.0.0.1 中的 3306 端口并且禁止了远程的 TCP 链接,我们可以通过下面两步来开启MySQL 的远程服务

  1. 打开文件 sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf,注释掉 bind-address 项,如下:
    image
  2. 开启了MySQL 监听远程连接的选项,接下来需要给对应的MySQL 账户分配权限,允许使用该账户远程连接到 MySQL:
    查看用户账号信息
select User,host from mysql.user;

image
root 账户中的 host 项是localhost表示该账号只能进行本地登录,我们需要修改权限,执行 MySQL 命令:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;FLUSH PRIVILEGES;exit;

image

这个时候发现相比之前多了一项,它的host 项是%,这个时候说明配置成功了,我们可以用该账号进行远程访问

  • mariadb 配置文件保存在多个位置:
/etc/mysql/mariadb.cnf /etc/mysql/mariadb.conf.d/ /etc/mysql/conf.d/
  • mariadb 常用命令:
#启动mariadb: sudo systemctl start mariadb #关闭/开启/重启 mariadb:systemctl stop/start/restart mariadb #设置mariadb开机启动:sudo systemctl enable mariadb
  • 连接 MySQL数据库命令:
mysql -h主机地址 -u用户名 -p用户密码

(注:u 与 root 可以不用加空格,其它也一样)

5.安装 phpmyadmin 可视化 MySQL 管理工具

官方网站: phpmyadmin官网

  • wget下载源码包包到 web 目录
    (请自行到官网获取最新下载链接),截至 2020/8/4 版本为:
    phpMyAdmin-5.0.2-all-languages.zip
wget https://gproxy.cn/https://github.com/phpmyadmin/phpmyadmin/archive/RELEASE_5_0_4.zip
  • 解压 zip 格式源码包包到web 目录
sudo chmod 777 -R /var/www/html/unzip -d /var/www/html/ ~/phpMyAdmin-5.0.2-all-languages.zip

若 unzip 不受支持请安装
sudo apt-get install unzip

  • 重命名文件夹并修改参数
cd /var/www/html/mv phpMyAdmin-5.0.2-all-languages phpmyadmincd phpmyadminmv config.sample.inc.php config.inc.phpnano config.inc.php$cfg['AllowArbitraryServer'] = true;

编辑 config.inc.php 文件,修改密钥字段:
image

修改blowfish_secret字段,后面的密钥无仅仅用于加密而已,尽量足够长当然偷偷插入​**喜欢的女孩子名字也是可以的哦**

  • config.inc.php 文件权限修改为 744
sudo chmod 744 config.inc.php

6.搭建多个 nginx 虚拟主机

有时候我们要在主机的不同端口搭建不同用处的web 服务,这时就需要多个新建多个 nginx 虚拟主机的啦~

  • 打开 nginx 主配置文件

    sudo nano /etc/nginx/nginx.conf

    image

找到 include 字段就是每个虚拟主机配置文件,为了方便管理,我们在用户家目录新建一个 nginx-conf 存放我们的nginx 虚拟主机文件

# 在配置文件插入include /home/pi/nginx-conf/*;

image

mkdir /home/pi/nginx-confnano /home/pi/nginx-conf/kodbox.conf

写入以下内容: (贴出一份完整的 nginx 虚拟主机配置,需要自行修改两个参数)

# 监听端口 两个都要改server { listen 88 default_server; listen [::]:88 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # include snippets/snakeoil.conf; root /home/pi/kodbox; #网站根目录位置 # Add index.php to the list if you are using PHP index index.php index.html index.htm index.nginx-debian.html; server_name _; location / {  try_files $uri $uri/ =404; } # pass PHP scripts to FastCGI server # location ~ .*\.php(\/.*)*$ {  include snippets/fastcgi-php.conf;  fastcgi_pass unix:/run/php/php7.3-fpm.sock; }}

重启 nginx,愿一切安好:

sudo systemctl restart nginxwget --content-disposition https://packagecloud.io/headmelted/codebuilds/packages/debian/stretch/code-oss_1.45.0-1586135971_arm64.deb/download.deb

7. 树莓派 PHP 调优

lnmp 默认环境部署完成后,进行调优以应对多并发,复杂任务的情景

  • 部署PHP 探针以测试

    部署服务器探针推荐 X 探针,GitHub 项目地址:

    GitHub X刘海探针

#克隆项目到www目录cd /var/www/htmlwget https://github.com/kmvan/x-prober/raw/master/dist/prober.php#删除默认页rm index.phpmv prober.php index.phpsudo chmod 777 index.php

尝试访问 http://树莓派ip :

image

可以看到这些参数都是好 鸡肋的

  • 修改php.ini 仔细看好喽~
sudo nano /etc/php/7.3/fpm/php.ini

修改 **post 方式提交的数据大小**,查找:post_max_size 酌情修改为 2000M

image

修改 运行超时秒数 ,查找:max_execution_time 酌情修改为 3600s

image

修改 上传文件限制 ,查找:upload_max_filesize 酌情修改为 2000M

image

修改 运行内存限制 ,查找:memory_limit 酌情修改为 2000M

image

开启 文件上传 ,查找:file_uploads 更改为 On

image

  • 更改完成后重启 nginx+php-fpm

    max_input_time = 3600;sudo systemctl restart nginxsudo systemctl restart php7.3-fpm

更改后的探针页面

image

8.搭建 kodbox 云私有云盘

下载安装

即刻下载,开启私有云盘之旅

**官网:**​****

  • 下载源码
cd ~mkdir kodboxcd kodboxwget http://static.kodcloud.com/update/download/kodbox.1.11.zipunzip kodbox.1.11.zipunzip kodbox.1.11.ziprm kodbox.1.11.zipchmod 777 ~/kodbox

尝试访问 **** :

image

除了 PHP 版本外其他都可以通过哒~

  • 安装系统缓存 Redis

    sudo apt-get install redis php-redis

    image

redis 服务会自动运行自动添加开机启动项,省心!!!

编辑sudo nano /etc/php/7.3/fpm/php.ini 文件加入:

image

extension=redis.so#重启php-fpmsudo systemctl restart php7.3-fpm

image

数据库选择MySQL,填入自己的密码

系统缓存类型选择 Redis

Author: WhaleFall

Permalink: https://www.whaleluo.top/raspberrypi-note-3/

文章默认使用 CC BY-NC-SA 4.0 协议进行许可,使用时请注意遵守协议。

Comments