[Openwrt 擴展下篇] Openwrt搭建私有云Owncloud 9

網上不少資料講用Linux打造owncloud構建私有云 ,花了些時間研究了下,我將以前的需求打形成了Openwrt下的Owncloud 9。其實網上還有Seafile。你們對比來看下知乎的評論,其實主要是本身用沒必要要那麼挑剔。javascript

https://www.zhihu.com/question/23929945php

軟件版本:css

  Nginx  1.4.7 html

  PHP   5.6.17 java

  Sqlite3   自帶數據庫 ,這裏要說下openwrt下的mysql不能使用,版本5.1.X,並且Owncloud 7以上版本Mysql應該是至少要5.7.X,老外也沒想管Mysql的版本,說了句沒空~~~node

  可能在Openwrt的世界裏Mysql過小衆了把。MariaDB 聽說這個編譯的數據庫也能用https://github.com/patrikx3/lede-mariadb,有興趣的朋友也能夠在參考資料試試MariaDB,mysql

  不過對我來說,我不熟悉就沒有用,研究還的要時間的,不如弄個Linux了呢。nginx

 

本着測試的想法,畢竟我想測試好aria2和Owncloud之後買個阿里雲或者騰訊雲,這樣子配置會高不少帶寬也會相對充裕些。git

上乾貨咱們開始配置把,github

這裏推薦你們看下這倆文檔,是Openwrt添加Nginx,PHP,和Mysql的,固然Mysql不能用,Pass把

http://www.cnblogs.com/double-win/p/3866189.html

http://www.cnblogs.com/double-win/p/3885741.html

基礎環境搭建好了就到官網下載 就能夠了,

https://owncloud.org/download/

一切準備完後記得測試PHP+Nginx而後咱們開始.............

PHP配置

root@Sean_OpenWrt:/etc/config# cat /etc/php.ini 
[PHP] zend.ze1_compatibility_mode = Off ; Language Options engine = On ;short_open_tag = Off precision =  12 y2k_compliance = On output_buffering = Off ;output_handler = zlib.output_compression = Off ;zlib.output_compression_level = -1 ;zlib.output_handler = implicit_flush = Off unserialize_callback_func = serialize_precision = 100 ;open_basedir = disable_functions = disable_classes = ; Colors for Syntax Highlighting mode.  Anything that's acceptable in
; <span style="color: ???????"> would work. ;highlight.string = #DD0000
;highlight.comment = #FF9900
;highlight.keyword = #007700
;highlight.bg      = #FFFFFF
;highlight.default = #0000BB
;highlight.html    = #000000
 ;ignore_user_abort = On ;realpath_cache_size = 16k ;realpath_cache_ttl = 120 ; Miscellaneous expose_php = On ; Resource Limits max_execution_time = 30 ; Maximum execution time of each script, in seconds. max_input_time = 60 ; Maximum amount of time each script may spend parsing request data. ;max_input_nesting_level = 64 memory_limit = 8M ; Maximum amount of memory a script may consume. ; Error handling and logging ; Error Level Constants: ; E_ALL - All errors and warnings (includes E_STRICT as of PHP 6.0.0) ; E_ERROR - fatal run-time errors ; E_RECOVERABLE_ERROR - almost fatal run-time errors ; E_WARNING - run-time warnings (non-fatal errors) ; E_PARSE - compile-time parse errors ; E_NOTICE - run-time notices (these are warnings which often result ; from a bug in your code, but it's possible that it was
;                     intentional (e.g., using an uninitialized variable and ; relying on the fact it's automatically initialized to an
; empty string) ; E_STRICT - run-time notices, enable to have PHP suggest changes ; to your code which will ensure the best interoperability ; and forward compatibility of your code ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
; initial startup ; E_COMPILE_ERROR - fatal compile-time errors ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) ; E_USER_ERROR - user-generated error message ; E_USER_WARNING - user-generated warning message ; E_USER_NOTICE - user-generated notice message ; E_DEPRECATED - warn about code that will not work in future versions ; of PHP ; E_USER_DEPRECATED - user-generated deprecation warnings ; ; Common Values: ; E_ALL & ~E_NOTICE  (Show all errors, except for notices and coding standards warnings.) ; E_ALL & ~E_NOTICE | E_STRICT  (Show all errors, except for notices) ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) ; E_ALL | E_STRICT  (Show all errors, warnings and notices including coding standards.) ; Default Value: E_ALL & ~E_NOTICE error_reporting =  E_ALL & ~E_NOTICE & ~E_STRICT display_errors = On display_startup_errors = Off log_errors = Off log_errors_max_len = 1024 ignore_repeated_errors = Off ignore_repeated_source = Off report_memleaks = On ;report_zend_debug = 0 track_errors = Off ;html_errors = Off ;docref_root = "/phpmanual/" ;docref_ext = .html ;error_prepend_string = "<font color=#ff0000>" ;error_append_string = "</font>" ; Log errors to specified file. ;error_log = /var/log/php_errors.log ; Log errors to syslog. ;error_log = syslog ; Data Handling ;arg_separator.output = "&amp;" ;arg_separator.input = ";&" variables_order = "EGPCS" request_order = "GP" register_globals = Off register_long_arrays = Off register_argc_argv = On auto_globals_jit = On post_max_size = 8M ;magic_quotes_gpc = Off magic_quotes_runtime = Off magic_quotes_sybase = Off auto_prepend_file = auto_append_file = default_mimetype = "text/html" ;default_charset = "iso-8859-1" ;always_populate_raw_post_data = On ; Paths and Directories ; UNIX: "/path1:/path2" ;include_path = ".:/php/includes" user_dir = extension_dir = "/usr/lib/php" enable_dl = On ;cgi.force_redirect = 1 ;cgi.nph = 1 ;cgi.redirect_status_env = ; cgi.fix_pathinfo=1 ;fastcgi.impersonate = 1; ;fastcgi.logging = 0 ;cgi.rfc2616_headers = 0 ; File Uploads file_uploads = On upload_tmp_dir = "/tmp" upload_max_filesize = 2M max_file_uploads = 20 ; Fopen wrappers allow_url_fopen = On allow_url_include = Off ;from="john@doe.com" ;user_agent="PHP" default_socket_timeout = 60 ;auto_detect_line_endings = Off ; Dynamic Extensions ;extension=ctype.so ;extension=curl.so ;extension=dom.so ;extension=exif.so ;extension=ftp.so ;extension=gd.so ;extension=gmp.so ;extension=hash.so ;extension=iconv.so ;extension=json.so ;extension=ldap.so ;extension=mbstring.so ;extension=mcrypt.so ;extension=mysql.so ;extension=openssl.so ;extension=pcre.so ;extension=pdo.so ;extension=pdo-mysql.so ;extension=pdo-pgsql.so ;extension=pdo_sqlite.so ;extension=pgsql.so ;extension=session.so ;extension=soap.so ;extension=sockets.so ;extension=sqlite.so ;extension=sqlite3.so ;extension=tokenizer.so ;extension=xml.so ;extension=xmlreader.so ;extension=xmlwriter.so ; Module Settings [APC] apc.enabled = 1 apc.shm_segments = 1    ;The number of shared memory segments to allocate for the compiler cache. apc.shm_size = 4M ;The size of each shared memory segment. [Date] ;date.timezone = Asia/Chongqing ;date.default_latitude = 31.7667 ;date.default_longitude = 35.2333 ;date.sunrise_zenith = 90.583333 ;date.sunset_zenith = 90.583333 [filter] ;filter.default = unsafe_raw ;filter.default_flags = [iconv] ;iconv.input_encoding = ISO-8859-1 ;iconv.internal_encoding = ISO-8859-1 ;iconv.output_encoding = ISO-8859-1 [sqlite] ;sqlite.assoc_case = 0 [sqlite3] ;sqlite3.extension_dir = [Pdo_mysql] pdo_mysql.cache_size = 2000 pdo_mysql.default_socket= [MySQL] mysql.allow_local_infile = On mysql.allow_persistent = On mysql.cache_size = 2000 mysql.max_persistent = -1 mysql.max_links = -1 mysql.default_port = mysql.default_socket = /tmp/mysqld.sock mysql.default_host = mysql.default_user = mysql.default_password = mysql.connect_timeout = 60 mysql.trace_mode = Off [PostgresSQL] pgsql.allow_persistent = On pgsql.auto_reset_persistent = Off pgsql.max_persistent = -1 pgsql.max_links = -1 pgsql.ignore_notice = 0 pgsql.log_notice = 0 [Session] session.save_handler = files session.save_path = "/tmp" session.use_cookies = 1 ;session.cookie_secure = session.use_only_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.cookie_domain = session.cookie_httponly = session.serialize_handler = php session.gc_probability = 1 session.gc_divisor = 100 session.gc_maxlifetime = 1440 session.bug_compat_42 = On session.bug_compat_warn = On session.referer_check = session.entropy_length = 0 ;session.entropy_file = /dev/urandom session.entropy_file = ;session.entropy_length = 16 session.cache_limiter = nocache session.cache_expire = 180 session.use_trans_sid = 0 session.hash_function = 0 session.hash_bits_per_character = 4 url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset=" [mbstring] ;mbstring.language = Japanese ;mbstring.internal_encoding = EUC-JP ;mbstring.http_input = auto ;mbstring.http_output = SJIS ;mbstring.encoding_translation = Off ;mbstring.detect_order = auto ;mbstring.substitute_character = none; ;mbstring.func_overload = 0 ;mbstring.strict_detection = Off ;mbstring.http_output_conv_mimetype= ;mbstring.script_encoding= [gd] ;gd.jpeg_ignore_warning = 0 [exif] ;exif.encode_unicode = ISO-8859-15 ;exif.decode_unicode_motorola = UCS-2BE ;exif.decode_unicode_intel = UCS-2LE ;exif.encode_jis = ;exif.decode_jis_motorola = JIS ;exif.decode_jis_intel = JIS [soap] soap.wsdl_cache_enabled=1 soap.wsdl_cache_dir="/tmp" soap.wsdl_cache_ttl=86400 soap.wsdl_cache_limit = 5 [sysvshm] ;sysvshm.init_mem = 10000 [ldap] ldap.max_links = -1 [mcrypt] ;mcrypt.algorithms_dir= ;mcrypt.modes_dir= [opcache] ;opcache.memory_consumption=8           ; 8M is the allowed minimum ;opcache.interned_strings_buffer=1 opcache.max_accelerated_files=200       ; 200 is the allowed minimum ;opcache.revalidate_freq=60 ;opcache.fast_shutdown=1 opcache.enable_cli=1 opcache.enable=1 ;opcache.log_verbosity_level=4
View Code

Nginx配置(官網推薦的Owncloud無SSL配置以及作的基本Nginx優化)

root@Sean_OpenWrt:/etc/config# cat /etc/nginx/nginx.conf 
user www www; worker_processes 1; error_log /mnt/sda2/nginx/logs/error.log; #error_log /mnt/sda2/nginx/logs/error.log notice; #error_log /mnt/sda2/nginx/logs/error.log info;
 pid /mnt/sda2/nginx/logs/nginx.pid; events { worker_connections 10240; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'; access_log /mnt/sda2/nginx/logs/access.log main; sendfile on; keepalive_timeout 65; large_client_header_buffers 4 32k; client_max_body_size 8m; tcp_nopush on; tcp_nodelay off; client_body_timeout 10; client_header_timeout 10; output_buffers 1 32k; postpone_output 1460; open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 32k; fastcgi_buffers 4 32k; fastcgi_busy_buffers_size 32k; fastcgi_temp_file_write_size 32k; gzip on; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_proxied expired no-cache no-store private auth; #proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=staticfilecache:80m inactive=1d max_size=2500m;
    proxy_temp_path /var/lib/nginx/proxy; proxy_connect_timeout 300; proxy_read_timeout 120; proxy_send_timeout 120; proxy_buffer_size 16k; proxy_buffers 4 16k; server { listen 7777; server_name 66.66.66.60; access_log /mnt/sda2/nginx/logs/host.access.log main; root /mnt/sda2/nginx; index index.html index.htm; client_max_body_size 10G; 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; location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README){ deny all; } location / { 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(?:$|/) { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /mnt/sda2/nginx/$fastcgi_script_name; fastcgi_param PATH_INFO $1; include fastcgi_params; } location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ { expires 30d; access_log off; } } }
View Code

由於萬惡的Openwrt沒有語言環境的所謂BUG, 網上的不少人要修改util.php ,可能比較小衆資料很少,且可能是愛好者在問答,你們可能沒找到這個路徑,其實5以上版本的路徑換了,grep一下報錯就能夠找到。

設置語言爲 en_US.UTF-8/fr_FR.UTF-8/es_ES.UTF-8/de_DE.UTF-8/ru_RU.UTF-8/pt_BR.UTF-8/it_IT.UTF-8/ja_JP.UTF-8/zh_CN.UTF-8 失敗
Please install one of these locales on your system and restart your webserver.

相對路徑爲:

lib\private\legacy\util.php

註釋掉這裏

//if (!OC_Util::isSetLocaleWorking()) { // $errors[] = array( // 'error' => $l->t('Setting locale to %s failed', // array('en_US.UTF-8/fr_FR.UTF-8/es_ES.UTF-8/de_DE.UTF-8/ru_RU.UTF-8/' // . 'pt_BR.UTF-8/it_IT.UTF-8/ja_JP.UTF-8/zh_CN.UTF-8')), // 'hint' => $l->t('Please install one of these locales on your system and restart your webserver.') // ); //

配置Owncloud

這裏還應該改一下config/config.php

<?php $CONFIG = array ( 'instanceid' => 'ocx8is0pm6p9', 'default_language' => 'zh', );

 

數據庫選擇Sqlite,若是你是Linux 而且你的Mysql是5.7+的版本或者能用的MariaDB,,那麼....我想說我好羨慕你... 由於裝完後我就很鬱悶了....由於這個數據庫和系統自己的硬件不能撐起來,因此訪問速度極其慢,我也沒太關注就是搭建了個殼子,若是有大神知道如何優化請留言給我。

系統資源佔用:

Load了36秒...並且因爲註釋了php代碼出現了這個黃色的一大坨....表示強迫症不能忍,果斷要換成VPS的...

 

 

雖然結果不是很理想,可是過程仍是很開心的,畢竟一個路由也不能當服務器用....

下面的參考資料你們能夠找到各類版本的Owncloud,老外對Openwrt下的Mysql的態度....唉趕忙嘗試一次高版本的Mysql吧.....你們有機會仍是弄個vps吧....或者弄個高性能的....

或者相似這位同樣的的外加一層設備https://www.jianshu.com/p/92e2be4ca2f8

 

總的來說不建議用路由刷Openwrt上Owncloud,或者其餘雲Server,資源佔用較大,也可能我配置的默認SQL問題或者還有哪裏沒有優化到,anyway....若有大神,請留言給我。

VPS上效果展現,LNMP環境速度還算能夠,而後我花了6RMB買了個官網客戶端,感受然並卵....可能還沒仔細研究,抽空吧.....Python學習進度都落後了~~~~~~~~~~~~

 

傳送:

[Openwrt 擴展上篇]USB掛載&U盤啓動&Samba共享

[Openwrt擴展中篇]添加Aria2和webui 

 

參考資料

http://pkgs.fedoraproject.org/repo/pkgs/owncloud/

https://forum.owncloud.org/viewtopic.php?f=26&t=21219

https://github.com/openwrt/packages/issues/2506

https://github.com/Entware-ng/Entware-ng/issues/570

https://wiki.openwrt.org/doc/howto/owncloud

http://blog.csdn.net/hun_ying/article/details/48340765

相關文章
相關標籤/搜索