搭建nextcloud私有云 2020-01-21 程序之旅,记录 暂无评论 2642 次阅读 ## 搭建nextcloud私有云 网上已有很多的教程是关于nextcloud或owncloud的私有云的搭建,但是都是零零碎碎,并不完整,这里以树莓派raspbain 10 buster系统为例,安装nextcloud私有云。 这里分以下的几步来进行: [TOC] ### 换源、更新软件 由于国内环境,软件的下载安装相对比较慢,所以更换安装源来提高下载速度,更换下载源后更新软件的速度相对比较慢,其中很快做其他的事情,自行怎么方便怎么来。 网上许多教程都不是基于最新的raspbain buster来进行更换的,这里需要注意下,跟换源之前先查看系统版本。 ```shell root@raspberrypi:/home/pi $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster ``` 修改源 ```shell # 备份并编辑source.listwenjian $ cp /etc/apt/sources.list /etc/apt/sources.back.list $ nano /etc/apt/sources.list # 注释所有内容,添加以下内容 deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib # 备份并编辑raspi.list文件 $ cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.back.list $ nano /etc/apt/sources.list.d/raspi.list # 注释所有内容,替换如下内容 deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ``` 更新源和软件 ```shell $ sudo su $ apt-get update $ apt-get upgrade -y ``` > 这个更新过程比较慢,建议这段时间可以到nextcloud官网中同时下载安装包,或进行其他不使用apt-get操作 ### 安装apache2 ```shell # 安装命令 $ sudo su $ apt-get install apache2 ``` 安装完成后配置https强跳转。先到freessl中申请公钥和秘钥,我这里不阐述申请过程。 ```shell $ cd /etc/apache2/sites-available $ nano default-ssl.conf # 修改监听端口、文件目录地址和公私钥的地址 DocumentRoot /var/www/html/nextcloud SSLCertificateFile /etc/apache2/ssl/full_chain.pem SSLCertificateKeyFile /etc/apache2/ssl/private.key $ cp sites-available/default-ssl.conf sites-enabled/ # 修改80强跳到4433 $ nano 000-default.conf RewriteEngine on RewriteCond %{SERVER_PORT} !^4433$ RewriteRule ^/?(.*)$ https://%{SERVER_NAME}:4433/$1 [L,R] $ mv 000-default.conf ../sites-enabled/ # 修改监听端口 $ cd ../ $ nano ports.conf Listen 80 Listen 4433 Listen 4433 # 开启重写 $ a2enmod rewrite $ a2enmod ssl $ systemctl restart apache2 ``` ### 安装php ```shell $ apt-get install php libapache2-mod-php -y $ apt-get -y install php-fpm php-cli php-json php-curl php-imap php-gd php-mysql php-xml php-zip php-intl php-imagick php-mbstring -y ``` ### 安装mariadb ```shell # 安装命令 $ sudo su $ apt-get install mariadb-server -y # 开启远程登录权限 $ cd /etc/mysql/mariadb.conf.d # 找到修改权限的文件 $ grep -rn "skip-networking" * 50-server.cnf:26:# Instead of skip-networking the default is now to listen only on $ nano 50-server.cnf # 注释掉 bind-address = 127.0.0.1 ``` 修改数据库配置 ```shell # 直接回车 不需要输入密码 $ mysql -uroot -p > create database nextcloud; > CREATE USER 'oc_admin'@'%' IDENTIFIED BY 'password'; > GRANT ALL PRIVILEGES ON *.* TO 'oc_admin'@'%' WITH GRANT OPTION; > flush privileges; > CREATE USER 'oc_admin'@'localhost' IDENTIFIED BY 'password'; > GRANT ALL PRIVILEGES ON *.* TO 'oc_admin'@'localhost' WITH GRANT OPTION; > flush privileges; ``` ### 安装nextcloud 从官网中下载安装包,下载地址如下: [下载地址](https://nextcloud.com/install/#instructions-server) ![image-20200121081619168.png](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/2020/01/21/713771996874003/image-20200121081619168.png) 下载完成后,上传到树莓派的`/var/www/html/`目录 ```shell # 解压 $ tar jxf nextcloud-18.0.0.tar.bz2 # 添加data目录和授权 $ chown -R root:root nextcloud $ cd nextcloud $ mkdir data $ chown -R www-data:www-data data config apps ``` 初始化nextcloud,这里有个坑,第一次初始化nextcloud,创建管理员,会报错,说创建数据库用户失败。 ![image-20200121091246774.png](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/2020/01/21/713793365419298/image-20200121091246774.png) 这是因为在第一次初始化nextcloud的时候会在`/var/www/html/nextcloud/config`中创建一个config.php文件,文件记录nextcloud的配置信息。如果是第一次初始化,config.php中记录的数据库用户名会变成起初连接数据库的用户名加1。这里只需要手动的把1删除,之后再重新进行初始化操作,便可完成。 ![image-20200121091910024.png](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/2020/01/21/71382964723793/image-20200121091910024.png) 由于nextcloud的访问设置了白名单,所以在第一次访问的时候需要添加白名单ip ```shell $ nano /var/www/html/nextcloud/config/config.php 'trusted_domains' => array ( 0 => '192.168.124.37:4433', 1 => 'nextcloud.mufeng.info', ), ``` 挂载外设 ```shell $ fdisk -l Device Start End Sectors Size Type /dev/sda1 34 32767 32734 16M Microsoft reserved /dev/sda2 32768 3906959359 3906926592 1.8T Microsoft basic data # 安装exfat识别 $ apt-get install exfat-fuse -y $ mkdir /home/pi/wd $ mount -t exfat /dev/sda2 /home/pi/wd # 取消挂载 umount /dev/sda2 ``` 配置文件上传大小的限制 ```shell $ nano /etc/php/7.3/apache2/php.ini upload_max_filesize = 16G post_max_size = 16G max_input_time 3600 max_execution_time 3600 # 解决浏览器超时问题 $ a2dismod reqtimeout $ service apache2 restart ``` ### 测试 #### 上传速度 ![image-20200121100008638.png](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/2020/01/21/73524833046425/image-20200121100008638.png) #### 下载速度 ![image-20200121102417625.png](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/2020/01/21/735242473227002/image-20200121102417625.png) ### 性能优化 #### apcu 安装redis ```shell $ apt-get install redis-server ``` **redis配置** ```shell $ nano /etc/redis/redis.conf # 修改daemonize 为 yes,取消以下内容的注释 # unixsocket /var/run/redis/redis-server.sock # unixsocketperm 777 # 授权redis $ usermod -g www-data redis $ chown -R redis:www-data /var/run/redis $ redis-server /etc/redis.conf $ service redis-server restart ``` **修改配置文件** ```shell $ apt-get install php-apcu $ apt-get install php-redis 'memcache.local' => '\OC\Memcache\APCu', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ), $ service apache2 restart ``` #### 提高swap容量 ``` $ nano /etc/dphys-swapfile # 修改字段CONF_SWPSIZE 值,默认为100,这里修改为 2048,退出后重启swap $ /etc/init.d/dphys-swapfile restart ``` #### 提高sd卡的速度 ```shell $ sudo su $ nano /boot/config.txt # 加入 dtparam=sd_overclock=100 $ apt-get install hdparm $ hdparm -tT /dev/mmcblk0 ``` 打赏: 微信, 支付宝 标签: none 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。