lnmp 环境搭建 ownCloud 私有云

题记

在经历了两次心惊肉跳的硬盘数据恢复后,我渐渐把自己的数据资料转移到云端。与其惴惴不安地使用百度云,Dropbox等云储存工具,不如自己动手搭个云。

ownCloud是一个自由且开源的个人云存储解决方案,配置好服务器端后,就可以进行多平台的数据同步。

使用私有云之前必须先了解可能存在问题: 由于数据全部储存在服务器上,vps忘记续费导致被删除或者vps供应商跑路等状况将导致资料万劫不复,所以请谨慎操作,对数据资料一定要做好备份,永远不要把鸡蛋放一个篮子里!

本篇不探讨各种云储存方案的优劣,请自行斟酌。

安装步骤

搭建环境:Debian(Ubuntu)|nginx|mysql|php 省心的一键脚本可以戳这里:Tennfy - debian下lnmp一键安装脚本完善版 使用一键配置可以省略文本很多操作步骤,只需 8,9,11

1. 安装 MySQL 5

apt-get install mysql-server mysql-client

会要求输入 mysql root 密码

2. 安装 Nginx

apt-get install nginx

3. 安装 PHP 5

apt-get install php5-fpm

编辑/etc/php5/fpm/php.ini 设置cgi.fix_pathinfo=0 重新载入php service php5-fpm reload

4. 让 PHP 支持 MySQL

安装一系列组件,一并安装 可选PHP缓存 php-apc

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps  php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php-apc

重新载入php service php5-fpm reload

5. 让 PHP 使用 TCP 连接

默认情况下 PHP-FPM 监听的是 /var/run/php5-fpm.sock 编辑配置文件 vi /etc/php5/fpm/pool.d/www.conf 注释掉listen = /var/run/php5-fpm.sock修改为:

;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000

重新载入php service php5-fpm reload

6. 安装 owncloud 所需组件

安装所需组件:

apt-get install openssl ssl-cert php5-cli php5-sqlite php5-common php5-cgi sqlite3 php-pear curl libapr1 libtool curl libcurl4-openssl-dev php-xml-parser php5 php5-dev php5-gd varnish

7. 创建SSL证书(一年有效期)

owncloud必须使用安全链接才可以访问,使用 openssl 证书浏览器会报不安全提示,建议使用 免费SSL证书Let’s Encrypt ,本文使用的是 openssl

openssl req $@ -new -x509 -days 365 -nodes -out /etc/nginx/cert.pem -keyout  /etc/nginx/cert.key
chmod 600 /etc/nginx/cert.pem
chmod 600 /etc/nginx/cert.key

8. 安装 owncloud

下载安装:

mkdir -p /var/www/owncloud # 创建网站目录
wget http://download.owncloud.org/community/owncloud-8.2.2.tar.bz2 #下载owncloud
tar xvf owncloud-8.2.2.tar.bz2 # 解压文件
mv owncloud/  /var/www/ # 将解压内容移至网站目录
chown -R www-data:www-data  /var/www # 添加nginx用户权限
sudo rm -rf owncloud owncloud-8.2.2.tar.bz2 # 删除压缩包

创建 owncloud 数据库,创建用户并赋予该数据库所有权限,不熟悉命令行的童鞋建议用 phpMyAdmin 操作,这次不再赘述。

mysqladmin -u root -p create owncloud
mysql -u root -p
GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud_admin'@'localhost' IDENTIFIED BY  'owncloud_admin_password'
GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud_admin'@'localhost.localdomain' IDENTIFIED BY 'owncloud_admin_password'
FLUSH PRIVILEGES
quit

9. 配置 nginx

编辑(创建)网站配置文件 vi /etc/nginx/conf.d/owncloud.conf 输入以下内容:

server  {
    listen  80;
    server_name cloud.domain.com;  # 修改为自己的域名
    return  301  https://$server_name$request_uri;  # 强制使用 https
}
server  {
    listen 443  ssl;
    server_name cloud.domain.com;   # 修改为自己的域名
    # 证书及密钥位置
    ssl_certificate  /etc/nginx/owncloud.pem;
    ssl_certificate_key  /etc/nginx/owncloud.key;
    # 网站根目录
    root  /var/www/owncloud;
    client_max_body_size  16G;  # set max upload size
    fastcgi_buffers  64  4K;
    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  ~  ^/(data|config|\.ht|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/  index.php;
    }
    location  ~  ^(.+?\.php)(/.*)?$  {
            try_files  $1  =  404;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME  $document_root$1;
            fastcgi_param PATH_INFO  $2;
            fastcgi_param HTTPS on;
            fastcgi_pass  127.0.0.1:9000;
            # Or use unix-socket with 'fastcgi_pass unix:/var/run/php5-fpm.sock;'
    }
    # Optional: set long EXPIRES header on static assets
    location  ~*  ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$  {
            expires  30d;
            # Optional: Don't log access to assets
            access_log off;
    }
}

10 .修改 PHP 传输限制

编辑配置文件 /etc/php5/fpm/php.ini 找到以下三项进行修改:

upload_max_filesize  =  16G
post_max_size  =  16G
output_buffering  =  16384

在文件末尾,添加 apc 缓存配置信息

upload_tmp_dir  =
extension  =  apc.so
apc.enabled  =  1
apc.include_once_override  =  0
apc.shm_size  =  256

重启 nginx service nginx restart 重启 php service php5-fpm restart

11. 配置完成

打开网址,即可看到 owncloud 初始页面 填写任意 用户名,密码 (创建访问账户) 输入在 步骤8 创建的owncloud数据库,数据库名户名及密码

若出现502错误,请将配置文件中的 fastcgi_pass 127.0.0.1:9000;注释掉,改为监听 fastcgi_pass unix:/var/run/php5-fpm.sock;

参考

owncloud-debian-wheezy-derivates-ubuntu-using-nginx