在Arch Linux上使用Nginx,MariaDB和PHP7设置OwnCloud 9服务器

一位读者问我如何在Arch Linux上使用Nginx,MariaDB和PHP7设置ownCloud个人云存储。 今天,我将向您展示如何实现这一目标。 您可以在Arch Linux服务器或Arch桌面上遵循此指南。

本教程假定您已经在Arch Linux上配置了LEMP堆栈。 如果您尚未这样做,请查看以下易于遵循的指南,以了解如何进行。

在Arch Linux上安装(LEMP)Nginx,MariaDB,PHP7

完成设置LEMP堆栈后,请回到此处。 如果在此过程中遇到任何错误,请在评论部分告诉我。

步骤1:在Arch Linux上安装ownCloud 9服务器

ownCloud在Arch Linux社区存储库中,因此我们可以使用pacman安装它:

sudo pacman -S owncloud

上面的命令还安装了图形库php-gd。 GD代表Graphics Draw。 OwnCloud程序文件存储在 /usr/share/webapps/owncloud 目录。 我们需要将http设置为webapps目录的所有者,以便Nginx可以写入该目录。

sudo chown http:http /usr/share/webapps/ -R

步骤2:为ownCloud创建数据库和用户

登录到MariaDB数据库服务器:

mysql -u root -p

然后为owncloud创建一个数据库。

create database owncloud;

您可以使用以下方法检出所有数据库:

show databases;

现在在本地主机上为ownCloud数据库创建一个数据库用户。 更换 password 使用您的首选密码。

create user [email protected] identified by 'password';

授予该用户对owncloud数据库的所有特权。

grant all privileges on owncloud.* to [email protected] identified by 'password';

刷新特权并退出。

flush privileges;

exit;

步骤3:在MariaDB中启用二进制日志记录

打开 my.cnf 文件。

sudo nano /etc/mysql/my.cnf

在以下两行中添加 [mysqld] 部分。 您可能会发现这两行已经存在(第54和57行),因为Arch Linux的MariaDB软件包默认启用了二进制日志记录。 如果找不到它们,请手动将它们添加到 my.cnf 文件。

log-bin        = mysql-bin
binlog_format  = mixed

二进制日志的格式必须混合。 保存并关闭文件。 然后重新加载MariaDB服务。

sudo systemctl reload mysqld             or        sudo systemctl restart mysqld

步骤4:从“让我们加密”获取免费的SSL证书

仅在服务器上才需要执行此步骤,因为您要确保恶意人员不会窃取您自己的Cloud用户名和密码。 如果要在家用计算机上设置ownCloud,请跳过此步骤。

首先,我们需要安装letencrypt客户端,该客户端在Arch Linux社区存储库中可用。

sudo pacman -S letsencrypt

然后使用webroot插件获取Nginx Web服务器的证书。

sudo letsencrypt certonly --webroot --email <your-email-address> -d owncloud.your-domain.com -w /usr/share/nginx/html/

我假设您使用的域名如下 owncloud.your-domain.com 访问ownCloud Web界面。 在运行上述命令之前,还需要将域名指向DNS中的服务器IP。

certonly表示客户端获得SSL证书,但不会安装它。 由于Let’s Encrypt仍处于beta中,并且不支持Nginx的自动SSL配置,因此我们必须手动配置(安装)SSL。

您的SSL证书将保存在 /etc/letsencrypt/live/owncloud.your-domain.com 目录。

如果在运行上述命令后看到403禁止错误,则可能是因为您的Nginx配置不允许访问隐藏文件。 启用访问 your-web-root/.well-known/acme-challenge,将以下指令添加到您的Nginx配置文件中。

location ~ /.well-known/acme-challenge {
    allow all;
}

然后重新加载Nginx配置。

sudo systemctl reload nginx

然后再次运行letsencrypt命令来获取您的证书。

步骤5:为owncloud创建一个Nginx配置文件

首先,为单个Nginx配置文件创建conf.d目录。

sudo mkdir /etc/nginx/conf.d

然后为ownCloud创建一个配置文件。

sudo nano /etc/nginx/conf.d/owncloud.conf

将以下文本放入文件中。

upstream php-handler {
 #server 127.0.0.1:9000;
 server unix:/run/php-fpm/php-fpm.sock;
 }

server {
 listen 80;
 server_name owncloud.your-domain.com;
 # enforce https
 return 301 https://$server_name$request_uri;
 }

server {
 listen 443 ssl;
 server_name owncloud.your-domain.com;

 ssl_certificate /etc/letsencrypt/live/owncloud.your-domain.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/owncloud.your-domain.com/privkey.pem;

# Add headers to serve security related headers
 add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
 add_header X-Content-Type-Options nosniff;
 add_header X-Frame-Options "SAMEORIGIN";
 add_header X-XSS-Protection "1; mode=block";
 add_header X-Robots-Tag none;

 # Path to the root of your installation
 root /usr/share/webapps/owncloud;
 # set max upload size
 client_max_body_size 10G;
 fastcgi_buffers 64 4K;

 # Disable gzip to avoid the removal of the ETag header
 gzip off;

 # Uncomment if your server is build with the ngx_pagespeed module
 # This module is currently not supported.
 #pagespeed off;

 index index.php;
 error_page 403 /core/templates/403.php;
 error_page 404 /core/templates/404.php;

 rewrite ^/.well-known/carddav /remote.php/carddav/ permanent;
 rewrite ^/.well-known/caldav /remote.php/caldav/ permanent;

 # The following 2 rules are only needed for the user_webfinger app.
 # Uncomment it if you're planning to use this app.
 #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
 #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

 location = /robots.txt {
 allow all;
 log_not_found off;
 access_log off;
 }

location ~ ^/(build|tests|config|lib|3rdparty|templates|data)/ {
   deny all;
}

location ~ ^/(?:.|autotest|occ|issue|indie|db_|console) {
  deny all;
}

location / {
  rewrite ^/remote/(.*) /remote.php last;
  rewrite ^(/core/doc/[^/]+/)$ $1/index.html;
  try_files $uri $uri/ =404;
}

 location ~ .php(?:$|/) {
    fastcgi_split_path_info ^(.+.php)(/.+)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param HTTPS on;
    fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
    fastcgi_pass php-handler;
    fastcgi_intercept_errors on;
 }

 # Adding the cache control header for js and css files
 # Make sure it is BELOW the location ~ .php(?:$|/) { block
 location ~* .(?:css|js)$ {
 add_header Cache-Control "public, max-age=7200";
 # Add headers to serve security related headers
 add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
 add_header X-Content-Type-Options nosniff;
 add_header X-Frame-Options "SAMEORIGIN";
 add_header X-XSS-Protection "1; mode=block";
 add_header X-Robots-Tag none;
 # Optional: Don't log access to assets
    access_log off;
 }

 # Optional: Don't log access to other assets
 location ~* .(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
   access_log off;
 }
}

将红色文本替换为您的实际数据。 此配置文件假定您的php-fpm进程在Unix套接字上侦听。 如果您的php-fpm侦听127.0.0.1:9000,则需要更改上游部分。

如果要在家用计算机上设置ownCloud:

  • 您需要将其配置为仅侦听端口80
  • server_name将设置为127.0.0.1或localhost。
  • 不需要SSL配置。

接下来,编辑/etc/nginx/nginx.conf文件

sudo nano /etc/nginx/nginx.conf

在http部分中添加此行。

include /etc/nginx/conf.d/*.conf;

像这样:

http {
include /etc/nginx/conf.d/*.conf;

include mime.types;
default_type application/octet-stream;

.....

保存并关闭文件。 然后重新加载Nginx。

sudo systemctl reload nginx

步骤6:启用PHP模块

ownCloud需要启用mysql和gd模块才能正常工作。

编辑php.ini文件。

sudo nano /etc/php/php.ini

找到以下3行。 删除分号以启用这3个模块。

;extension=gd.so         (line 869)

;extension=mysqli.so     (line 877)

;extension=pdo_mysql.so  (line 881)

保存并关闭文件。 然后重新加载php-fpm进程。

sudo systemctl reload php-fpm

步骤7:设置Web界面

在浏览器地址栏中,键入

owncloud.your-domain.com

要么 127.0.0.1 如果在家用计算机上进行配置。 您需要创建一个管理帐户,并将ownCloud服务与MariaDB数据库连接。 输入您先前创建的数据库用户名,密码和数据库名称。

完成后,您将进入ownCloud的Web界面。

使用Nginx,MariaDB和PHP7设置OwnCloud 9服务器

恭喜! 现在,您可以开始使用ownCloud作为私有云存储。 不要忘记在Linux桌面或智能手机上安装ownCloud客户端。 桌面客户端可以通过以下方式安装在Arch Linux上:

sudo pacman -S owncloud-client

总是欢迎提出意见,问题或建议。 如果您发现这篇文章有用, 请在社交媒体上与您的朋友分享! 请继续关注更多Linux教程。

Sidebar