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:
或者你可以使用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已经完成。