如何在OpenSUSE Leap 42.1上安装ownCloud 9和Nginx

OwnCloud提供自托管文件同步和共享一个漂亮的网络界面和同步应用程序的所有主要的移动和桌面平台使用...

ownCloud是基于PHP编程语言的OpenSource文件共享应用程序。 OwnCloud提供自我托管的文件同步和共享与一个漂亮的网络界面,并同步所有主流的移动和桌面平台的应用程序与功能上像Dropbox,mega等。ownCloud可以轻松地访问和同步文件,日历和联系人设备。

在本教程中,我将指导您使用ownCloud创建自己的同步和共享服务器平台。 我们将使用Nginx作为Web服务器安装ownCloud,作为数据库的MariaDB(一个MySQL fork)和用于在Linux OpenSUSE Leap 42.1上处理php请求的php-fpm。

前提条件

  • OpenSUSE Leap 42.1
  • 根权限
  • 了解zypper命令

第1步 - 安装SuSEfirewall2

SuSEfirewall是一个防火墙脚本,将其配置存储在文件“/ etc / sysconfig / SuSEfirewall2”中。 使用SuSEfirewall2,您可以通过编辑“SuSEfirewall2”文件来打开端口。

使用zypper命令安装SuSEfirewall2:

zypper in SuSEfirewall2

安装防火墙后,转到sysconfig目录并使用vim编辑“SuSEfirewall2”配置:

cd /etc/sysconfig/
vim SuSEfirewall2

转到第253行,并添加要使用的所有服务的端口。 在此步骤中,我将添加:ssh,http和https端口。

FW_SERVICES_EXT_TCP="22 80 443"

保存文件并退出编辑器。

接下来,启动SuSEfirewall2并使其在启动时运行:

systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2

现在重新启动sshd服务:

systemctl restart sshd

如果要测试SSH服务器端口,可以使用telnet命令连接到端口22:

telnet 192.168.1.101 22

第2步 - 安装Nginx

Nginx是一种轻量级的Web服务器,具有低内存和CPU消耗。 我们将使用nginx作为我们自己的Cloud安装的Web服务器。

使用zypper命令安装nginx:

zypper in nginx

启动nginx并使其能够在启动时使用systemctl命令运行:

systemctl start nginx
systemctl enable nginx

接下来,添加一个index.html文件以测试nginx是否正常工作。

echo "This is Nginx Page OpenSUSE Leap" > /srv/www/htdocs/index.html

现在,您可以从Web浏览器访问nginx Web服务器,或者您可以使用curl查看它:

curl -I 192.168.1.101
curl 192.168.1.101

测试nginxCurl

第3步 - 安装和配置MariaDB

MariaDB是一个基于OpenSource RDBMS的MySQL数据库分支。 在此步骤中,我们将安装和配置MariaDB。 然后我们将为自己的Cloud安装创建一个新的用户和数据库。

使用zypper命令安装MariaDB:

zypper in mariadb mariadb-client

现在启动MariaDB并将其添加到系统启动:

systemctl start mysql
systemctl enable mysql

MariaDB已经启动,现在您可以使用以下命令配置MariaDB的根密码:

mysql_secure_installation

设置MariaDB / MySQL密码:

Enter current password for root (enter for none): PRESS ENTER
Set root password? [Y/n] Y
New password: TYPE YOUR PASSWORD
Re-enter new password: REPEAT PASSWORD
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Reload privilege tables now? [Y/n] Y

已配置MariaDB根密码。 现在我们可以登录到MariaDB / MySQL shell并为ownCloud创建一个新的数据库和新用户。

登录到MariaDB / MySQL shell:

mysql -u root -p
TYPE your password

使用密码“ownclouduser @”创建一个新数据库“owncloud_db”和新用户“ownclouduser”:

create database owncloud_db;
create user ownclouduser@localhost identified by 'ownclouduser@';
grant all privileges on owncloud_db.* to ownclouduser@localhost identified by 'ownclouduser@';
flush privileges;
exit

创建ownCloud数据库和用户

已经创建了ownCloud安装的数据库。

第4步 - 安装和配置PHP-FPM

PHP-FPM(FastCGI Process Manager)是一种现代化的FastCGI替代方案,用于处理具有大量访问者的站点。 PHP-FPM具有先进的流程管理,易于管理和配置。

在此步骤中,我们将安装php-fpm和一些PHP扩展,然后我们将配置nginx Web服务器以通过php-fpm处理php文件请求。

使用此“zypper in”命令安装php-fpm:

zypper in php5-fpm php5-gd php5-mcrypt php5-mysql php5-pear php5-zip php5-curl php5-ldap php5-json

安装完成后,转到php-fpm目录并复制默认配置文件:

cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf

使用vim或nano编辑器编辑php-fpm.conf文件:

vim php-fpm.conf

取消注释行32启用php-fpm日志。 如果您的PHP脚本稍后出现错误,则可以在/ var / log /目录中找到日志文件。

error_log = log/php-fpm.log

对于unix用户/组的进程,将行148 - 149更改为“nginx”。

user = nginx
group = nginx

更改159行中的值以使用套接字文件运行php-fpm。

listen = /var/run/php-fpm.sock

取消注释并更改行170 - 172上的值以设置unix套接字的权限。

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

保存文件并退出编辑器。

接下来,编辑cli目录中的php.ini文件:

cd /etc/php5/cli/
vim php.ini

取消注释并更改758行上的值:

cgi.fix_pathinfo=0

保存并退出。

将php.ini文件复制到conf.d目录中:

cp php.ini /etc/php5/conf.d/

现在配置php会话处理程序路径。 在本教程中,我们以nginx用户身份运行php-fpm,因此请确保nginx用户可以写入sessions目录。 您可以在第1390行的php.ini文件中看到会话路径配置。

session.save_path = "/var/lib/php5"

更改会话目录“/ var / lib / php5 /”的所有者,使nginx用户的目录的所有者:

chown -R nginx:nginx /var/lib/php5/

接下来,配置php-fpm以使用nginx Web服务器。 在编辑配置之前,请转到nginx配置目录并备份nginx.conf文件。

cd /etc/nginx/
cp nginx.conf nginx.conf.backup
vim nginx.conf

在第65行添加以下新配置 - 此配置将处理所有PHP文件请求。

       location ~ \.php$ {
                root /srv/www/htdocs;
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }

保存并退出,然后测试nginx配置,以确保配置中没有错误:

nginx -t

如果没有错误,您可以看到以下结果:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

现在启动php-fpm并在启动时将其添加到stat,然后重新启动nginx服务:

systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx

配置Nginx和php-fpm,您可以通过在Web根目录中创建新的phpinfo()文件来测试php文件:

cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php

打开浏览器并访问服务器IP:

http://192.168.1.101/info.php

phpinfo()输出

或者你可以使用curl:

curl -I 192.168.1.101/info.php

用Curl测试PHP。

第5步 - 生成SSL证书

通过安全的https连接运行ownCloud对于保持文件的安全和私密性非常重要。 如果您在自己的公司上运行ownCloud,您可以购买SSL证书,或者如果您需要免费的SSL证书,可以使用Let's-encrypt。 在这里,我将创建一个所谓的“自签名”SSL证书,自签名证书的加密不低于官方证书,但是当您第一次访问服务时,您将不得不接受浏览器中的安全警告。

创建一个新的“ssl”目录并使用openssl命令生成证书:

cd /etc/nginx/
mkdir ssl; cd ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/example-owncloud.crt -keyout /etc/nginx/ssl/example-owncloud.key

接下来,更改密钥的权限:

chmod 600 example-owncloud.key

第6步 - 安装和配置ownCloud

在此步骤中,我们将安装ownCloud并为ownCloud域配置一个新的nginx虚拟主机。 我们将使用域名“example-owncloud.co”和“/ srv / www / owncloud /”目录中的web根文件安装owncloud。

下载ownCloud

转到“/ srv / www /”目录并下载ownCloud源并解压缩:

cd /srv/www/
wget https://download.owncloud.org/community/owncloud-9.0.2.zip
unzip owncloud-9.0.2.zip

现在在owncloud目录下创建一个新的数据目录来存储所有的用户数据。 将ownCloud目录的所有者更改为nginx用户:

mkdir -p owncloud/data/
chown -R nginx:nginx owncloud/

为自己的Cloud配置Nginx虚拟主机

转到nginx目录并创建虚拟主机文件配置的新目录:

cd /etc/nginx/
mkdir vhosts.d/

转到vhosts.d目录,并为owncloud“example-owncloud.conf”创建一个新的虚拟主机文件。

cd vhosts.d/
vim example-owncloud.conf

粘贴以下配置:

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

server {
  listen 80;
  server_name example-owncloud.co;
  # enforce https
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl;
  server_name example-owncloud.co;

  ssl_certificate /etc/nginx/ssl/example-owncloud.crt;
  ssl_certificate_key /etc/nginx/ssl/example-owncloud.key;

  # Path to the root of your installation
  root /srv/www/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;

  rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
  rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
  rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

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

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

  location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README){
    deny all;
  }

  location / {
    # The following 2 rules are only needed with webfinger
    rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

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

    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_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;
  }
}

保存文件并退出编辑器。

测试nginx配置,不要忘记重新启动所有服务:

nginx -t
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql

测试

访问owncloud域:

example-owncloud.co

您将被重定向到https连接。

接下来,键入您的管理员用户和密码,数据库名称,用户和密码,然后单击“完成安装程序”。

OwnCloud数据库配置。

等一下,你会看到自己的云文件管理器:

OwnCloud

在OpenSUSE Leap 42.1上安装带有nginx和MariaDB的ownCloud已经完成。

参考文献