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

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

第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安装的数据库。

第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

或者你可以使用curl:

curl -I 192.168.1.101/info.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连接。

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

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

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

参考文献

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏