树莓派使用 frp 实现内网穿透搭建 Nextcloud 私有云的准备工作

需要用到的硬件

  1. 烧录好系统的树莓派主机,我使用的是 Raspberry Pi 3B,系统使用RASPBIAN JESSIE LITE
  2. 树莓派适用的散热外壳(大量上传下载的情况下,系统发热量惊人,推荐配置);
  3. 硬盘 + 硬盘底座(树莓派的供电是带不起移动硬盘的,即便给移动硬盘额外的 USB 供电也吃力,强烈推荐)。

piwithbox.jpgTB2d5ASiq8lpuFjy0FpXXaGrpXa_!!1754311986.jpg5170_P_1442946199645.jpg

安装 Nextcloud 前的准备

确保树莓派已经烧录好系统,可参考:《树莓派(Raspberry Pi)入门实战记录之 SSH 局域网无线连接》为树莓派烧录系统并设置 SSH 连接。

创建目录、用户

  1. 创建 nobody 用户组,统一系统用户,避免出现权限问题

    $ sudo groupadd nobody
    
  2. 创建网站服务根目录

    $ sudo mkdir [path]/web
    

树莓派硬盘挂载

  1. 树莓派开启支持 exfat

     $ sudo apt-get install exfat-utils
     $ sudo reboot now // 重启生效
    
  2. 连接硬盘,查看硬盘信息

     $ sudo fdisk -l
    

    我的硬盘信息显示如下:

    5170_P_1442946199645.jpg

    所以,挂载路径为:/dev/sda

  3. 格式化硬盘为 ext4 格式

     $ sudo mkfs.ext4 /dev/sda
    
  4. 创建硬盘挂载点

     $ mkdir [path]/disk
    
  5. 挂载硬盘

     $ sudo mount -t ext4 /dev/sda [path]/disk
    
  6. 设置开机自动挂载

    编辑/etc/fstab,加入以下配置:

     /dev/sda     [path]/disk      ext4      defaults      0      0
    

安装 MariaDB

  1. 使用 apt-get 安装 MariaDB

     $ sudo apt-get install mariadb-server
    
  2. 创建数据库

     $ mysql -uroot -p
     $ mysql> CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    
  3. 创建 nobody 用户并授权

     $ mysql> CREATE USER 'nobody'@'%' IDENTIFIED BY '[password]'; 
     $ mysql> GRANT ALL ON nextcloud.* TO 'nobody'@'%';
    
  4. 为 Nextcloud 配置 MariaDB,参考:Database Requirements for MySQL / MariaDB

    1. 设置 binlog_format

       $ mysql> SET GLOBAL binlog_format = 'MIXED';
      
    2. 配置 innodb ——/etc/mysql/my.cnf,加入以下配置:

       [mysqld]
       innodb_large_prefix=on
       innodb_file_format=barracuda
       innodb_file_per_table=1
      

安装 openresty(nginx) 设置随系统启动

  1. 上传 openresty

     scp [local-path]/openresty-1.11.2.3.tar.gz pi@[ip-address]:[path]/openresty-1.11.2.3.tar.gz
    
  2. 编译安装 openresty

     $ sudo apt-get install libpcre3 libpcre3-dev libssl-dev 
     $ ./configure --with-luajit --with-pcre
     $ make
     $ sudo make install
    
  3. 部署 Nginx 站点配置

  4. 部署 openresty 开机自启动

编译安装 php7.1

  1. 编译安装

     $ sudo apt-get install libxml2-dev curl libcurl4-gnutls-dev libjpeg-dev libxslt-dev
    
     $ ./configure --prefix=[path]/php \
      --with-openssl \
      --with-curl \
      --with-freetype-dir \
      --with-gd \
      --with-gettext \
      --with-iconv-dir \
      --with-kerberos \
      --with-libdir=lib64 \
      --with-libxml-dir \
      --with-mysqli \
      --with-pcre-regex \
      --with-pdo-mysql \
      --with-pdo-sqlite \
      --with-pear \
      --with-jpeg-dir \
      --with-png-dir \
      --with-xmlrpc \
      --with-xsl \
      --with-zlib \
      --with-regex \
      --enable-ctype \
      --enable-maintainer-zts \
      --enable-fpm \
      --enable-bcmath \
      --enable-libxml \
      --enable-inline-optimization \
      --enable-gd-native-ttf \
      --enable-mbregex \
      --enable-mbstring \
      --enable-opcache \
      --enable-pcntl \
      --enable-shmop \
      --enable-soap \
      --enable-sockets \
      --enable-sysvsem \
      --enable-xml \
      --enable-zip
    
     $ make
     $ sudo make install
    
  2. 部署 php 配置文件

     $ sudo cp [php-source-code-path]/php.ini-production [php-path]/php/lib/php.ini
     $ sudo cp [php-path]/php/etc/php-fpm.conf.default [php-path]/php/etc/php-fpm.conf
     $ sudo cp [php-path]/php/etc/php-fpm.d/www.conf.default [php-path]/php/etc/php-fpm.d/www.conf
    
  3. 编辑[php-path]/php/etc/php-fpm.d/www.conf,加入以下 PATH(通过执行$ printenv PATH获得)

     /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
    
  4. 继续编辑[php-path]/php/etc/php-fpm.d/www.conf,启动 socket 连接方式(提升系统执行效率)

     listen= /var/run/php71-fpm.sock
     listen.owner = nobody
     listen.group = nobody
    
  5. 配置 php-fpm 随系统启动

安装 Nextcloud 的准备工作完成,下一步是使用 frp 实现内网穿透搭建 Nextcloud 私有云

树莓派 frp Nextcloud 私有云 技术
本文更新于