用ubuntu+owncloud+nginx+php-fpm+mysql+aria2打造私有云+遠(yuǎn)程下載器


起由

  • 由于最近的“凈網(wǎng)”行動(dòng),很多網(wǎng)盤(pán)包括我一直在使用的快盤(pán)關(guān)停,仍然存活的百度云、360云等又沒(méi)有l(wèi)inux客戶端,用Dropbox等國(guó)外網(wǎng)盤(pán)受空間和墻的限制比較大。
  • 同時(shí)又有一定的收集高清電影在局域網(wǎng)里共享播放的需要。家里是百兆電信寬帶,平時(shí)空時(shí)可以用來(lái)下載,所以有了自建以私有云為基礎(chǔ)的服務(wù)器的想法。
  • 私有云方案有多種方案,出于可擴(kuò)展功能的需要,選擇了Ubuntu14.04+Owncloud的方案,使用者要有一點(diǎn)的linux操作和vi編輯經(jīng)驗(yàn)。
  • 順帶要把mysql和phpmyadmin也配置好

主機(jī)配置

  • 主機(jī)放于家庭電視機(jī)柜中,24小時(shí)開(kāi)機(jī),喬思伯V3 ITX HTPC機(jī)箱


    喬思伯V3機(jī)箱
  • 放了3塊以前留下的2.5寸硬盤(pán),一共2.5T,其中兩塊是裝在PCIE硬盤(pán)掛架上。
  • 內(nèi)存2G(以前淘汰下來(lái)的,基本夠用),系統(tǒng)裝在一塊64Gssd上
  • 主板集成J1800 CPU,無(wú)風(fēng)扇,TDP 15w,足夠放1080p X264編碼的高清電影,不過(guò)現(xiàn)在建議用更高級(jí)的N3455主板,能放4k的高清。


    J1800主板
  • 不算硬盤(pán),HTPC的資金投入是 主板250+內(nèi)存100+機(jī)箱200+電源150=700

帶端口映射的智能路由器

  • 一般情況下,家庭局域網(wǎng)出口在公網(wǎng)環(huán)境下是沒(méi)有固定ip,所以路由要有動(dòng)態(tài)域名解析功能,能從公網(wǎng)環(huán)境中反向通過(guò)家庭路由訪問(wèn)到局域網(wǎng)
  • 由于電信封了80和8080端口,同時(shí)又要把對(duì)路由公網(wǎng)ip的訪問(wèn)轉(zhuǎn)到HTPC上,所以要有端口映射功能
  • 又有其他翻墻、路由分離功能
  • openwrt是一個(gè)比較好的方案,我的方案是淘寶上這一款 841N 五口 OpenWrt 無(wú)線路由器 16M 64M 雙天線,體積小,拆掉天線后放入弱電箱,無(wú)線功能靠二級(jí)路由實(shí)現(xiàn),要注意要把二級(jí)跟帖的ip段設(shè)置的和主路由一樣。
  • 以下我都把我用的這個(gè)路由器稱(chēng)作為openwrt
    841N 五口 OpenWrt 無(wú)線路由器

修改openwrt路由器root密碼和端口

  • 上述路由器的默認(rèn)帳戶和密碼是root,出于安全的需要,請(qǐng)把密碼改了


    改root密碼
  • 電信封了家庭用戶的80和8080端口,如果你想在辦公室里修改家里路由器的設(shè)置,請(qǐng)修改。
  • 方法:在局域網(wǎng)環(huán)境下, ssh root@192.168.10.1
  • 進(jìn)入 /etc/config后編輯 uhttp,vi uhttp,把兩個(gè)listen_http后面的端口改成800。
config uhttpd 'main'
        list listen_http '0.0.0.0:800'
        list listen_http '[::]:800'
        list listen_https '0.0.0.0:443'
        list listen_https '[::]:443'
  • 重啟路由

開(kāi)啟openwrt的端口映射

  • 首先要確定你的機(jī)器(下面統(tǒng)稱(chēng)HTPC)的靜態(tài)IP
  • 在web界面,網(wǎng)絡(luò)-防火墻-端口轉(zhuǎn)發(fā)里,增加以下幾條轉(zhuǎn)發(fā)到此靜態(tài)IP的規(guī)則
21->21:#For FTP
20->20:#For FTP
22->22:#For SSH remote login 
443->443:#For Https
6800->6800:#For Aria2
6801->6801:#For Aria2
  • 你們可以注意到?jīng)]有規(guī)則對(duì)80轉(zhuǎn)發(fā)或者轉(zhuǎn)發(fā)到80端口

開(kāi)啟動(dòng)態(tài)域名

  • openwrt內(nèi)置動(dòng)態(tài)域名解析功能,可以在 changeip.com去申請(qǐng),比如我申請(qǐng)了一個(gè) testdomain.changeip.com,這樣在外網(wǎng)環(huán)境中結(jié)合上述端口映射,可以直接對(duì)內(nèi)網(wǎng)中的HTPC進(jìn)行操作,安裝軟件、修改服務(wù)、。

安裝samba和vsftp

  • ssh到HTPC后自行安裝,并設(shè)置好目錄,我 木木是把 三塊 HDD mount 到 /mnt目錄下,開(kāi)啟對(duì)samba用戶和ftp用戶的訪問(wèn)權(quán)。
  • 我的samba的配置要用到圖形界面軟件system-config-samba,最好在htpc上直接用鍵盤(pán)操作。

安裝mysql

sudo apt-get install mysql-server mysql-client

出人意料的NTFS權(quán)限問(wèn)題

  • 這個(gè)是歷史遺留問(wèn)題:
    我的三塊硬盤(pán)在放到htpc里時(shí)全是ntfs格式,上面都有數(shù)據(jù),不能無(wú)損轉(zhuǎn)成EXT4
  • owncloud的存貯路徑是在其中一塊硬盤(pán)上,原來(lái)是直接mount到/mnt目錄下,在后面配置owncloud時(shí)指定存貯目錄時(shí),出現(xiàn)權(quán)限770問(wèn)題
  • 數(shù)據(jù)太多,不能格盤(pán),在owncloud的官方網(wǎng)站上找了好久,找出是mount時(shí)出的 用戶權(quán)限分配問(wèn)題,后來(lái)通過(guò)修改 /etc/fstab 指定 mount時(shí)的uid等來(lái)解決
    /dev/sdb5 /mnt/disk1 ntfs locale=zh_CN.UTF-8,uid=33,gid=33,dmask=007,windows_names 0 0
  • 上面的uid=33,gid=33分別對(duì)應(yīng)遠(yuǎn)行nginx的用戶 www-data和用戶組www-data

安裝nginx和php-fpm和mysql

  • 請(qǐng)給你的mysql設(shè)置一個(gè)比較強(qiáng)的root密碼,并且為owncloud創(chuàng)建專(zhuān)有用戶

sudo apt-get install nginx
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.0 php-fpm php-mysql php-mbstring

安裝phpmyadmin和owncloud

  • 直接從網(wǎng)上下載,解壓到web服務(wù)目錄
  • 我的web服務(wù)根目錄是 /home/test/www
  • 改變目錄擁有者 sudo chown www-data -R /home/test/www
  • 改變權(quán)限 sudo chmod 755 -R /home/test/www
  • 配置phpmyadmin
  • 拷貝原始配置文件
cd /home/test/www/phpmyadmin
cp config.sample.inc.php config.inc.php
  • vi /home/test/www/phpmyadmin/config.inc.php
  • 配置 $cfg['blowfish_secret'] = '$#%#$%#$%#$^#^ETETR';就是一個(gè)加密信息,越亂越好
  • 配置另一個(gè)config文件
cd /home/test/www/phpmyadmin/libraries
vi config.default.php
  • 同樣配置$cfg['blowfish_secret']
  • 其他用默認(rèn)

分別配置php7-fpm和php5-fpm

  • 先裝的是php7-fpm,和新版phpmyadmin 配合的比較好,但是和owncloud9.0不兼容
  • 幸好php7-fpm里也有php5-fpm,經(jīng)過(guò)一番試驗(yàn)后,可以分別配置兩個(gè)php的后臺(tái)運(yùn)行
  • php7.0的 配置環(huán)境在 /etc/php/7.0/fpm里,有php-fpm.confphp.ini兩個(gè)重要的配置文件
  • php.ini:
  1. 設(shè)置 short_open_tag = On
  2. extension_dir = "/usr/lib/php/20151012",目錄通過(guò)catfish搜索mysql.so找到,用于安裝各種擴(kuò)展,應(yīng)該是apt-get install時(shí)自動(dòng)放入。
  3. 開(kāi)啟對(duì)mysql的支持:extension=mysqli.so,extension=pdo_mysql.so
  4. 設(shè)置''cgi.fix_pathinfo=0''
  • php-fpm.conf:
    可以看到 include=/etc/php/7.0/fpm/pool.d/*.conf,里面有www.conf文件
    1. 配置listen: listen = /run/php/php7.0-fpm.sock,配置nginx時(shí)會(huì)用到
    2. 重啟php-fpm:sudo service php7-fpm restart
  • php5的配置文件夾為/etc/php5/fpm,也是這兩個(gè)文件* php-fmp.confphp.ini*兩個(gè)重要的文件
  • php.ini
1. 設(shè)置 ```short_open_tag = On```
2. ``extension_dir="/usr/lib/php5/20121212"``,注意和php7的不同,估計(jì)也是編譯時(shí)生成
3. ``cgi.fix_pathinfo=1``,應(yīng)該是和owncloud有關(guān)的一個(gè)設(shè)置,否則會(huì)報(bào)錯(cuò)。
4. 各種extensions,有部分是和owncloud相關(guān)
  ```
  extension=mysql.so
  extension=mysqli.so
  extension=pdo_mysql.so
  extension=pdo.so
  extension=json.so
  extension=gd.so
  extension=opcache.so
  ```
  • php-fpm.conf
    可以看到 include=/etc/php5/fpm/pool.d/*.conf,里面有www.conf文件,找listen參數(shù):listen = /var/run/php5-fpm.sock

nginx開(kāi)啟https,兩種方案

owncloud9.0強(qiáng)制要求https服務(wù),需要對(duì)自己web站進(jìn)行認(rèn)證,實(shí)際中我試過(guò)兩種方案,最后用的是第一種方案

  1. 用自簽名的SSL證書(shū)
  • 采用自驗(yàn)證方案,借用廖雪峰大神的腳本給Nginx配置一個(gè)自簽名的SSL證書(shū)
  • 運(yùn)行這個(gè)腳本后,把生成的key文件和crt文件復(fù)制到/etc/nginx/ssl/目錄,
    /etc/nginx/ssl/testdomain.changeip.com.crt
    /etc/nginx/ssl/testdomain.changeip.com.key
    配置nginx時(shí)要用到
    或者你直接在后面寫(xiě)nginx文件時(shí)指向這兩個(gè)文件
  1. 用letsencypt加密自己的服務(wù)器
  • 下載安裝
git clone https://github.com/certbot/certbot.git
cd certbot
./letsencrypt-auto --help 
  • 生成密鑰,在這之前要停止nginx
./letsencrypt-auto certonly -d testdomain.changip.com -m testdomain@gmail.com
  • 這樣,會(huì)生成
    /etc/letsencrypt/live/testdomain.changeip.com/fullchain.pem
    /etc/letsencrypt/live/testdomain.changeip.com/privkey.pem
    兩個(gè)文件,不用移動(dòng)位置
  • 生成2048位 DH parameters:
    sudo openssl dhparam -out /etc/nginx/ssl/dhparams.pem 2048
  • 美中不足的是,這種方案只有90天的有效期,要到時(shí)候運(yùn)行腳本renew

owncloud

  • 前面已經(jīng)提到了很多owncloud的配置,都為實(shí)踐中一一摸索得來(lái),主要有
    1. 專(zhuān)用mysql用戶
    • https證書(shū)
    • php.ini配置
    • 文件夾權(quán)限
    • 端口映射
    • 特別要強(qiáng)調(diào),要把owncloud的數(shù)據(jù)文件目錄的用戶改成 www-data,權(quán)限也要改770

aria2和yaaw

  • aria2可以apt-get安裝或者編譯安裝,參考網(wǎng)上教程,至少能安裝到1.19版本
  • yaaw下載后直接解壓縮到/home/kodi/yaaw下
  • aria2的教程網(wǎng)上很多,我這里貼出我的配置,放在~/.aria2/aria2.conf里
    rpc-secret=secret #token加密方式
    enable-rpc=true
    rpc-allow-origin-all=true
    rpc-listen-all=true
    rpc-listen-port=6800#nginx里有個(gè)轉(zhuǎn)發(fā)到這個(gè)端口的設(shè)置
    rpc-secure=true
    rpc-certificate=/etc/letsencrypt/live/testdomain.changeip.com/fullchain.pem
    rpc-private-key=/etc/letsencrypt/live/testdomain.changeip.com/privkey.pem
    max-concurrent-downloads=5
    continue=true
    max-connection-per-server=5
    min-split-size=10M
    split=10
    max-overall-download-limit=3M
    max-download-limit=0
    max-overall-upload-limit=256K
    max-upload-limit=0
    dir=/mnt/disk2/Downloads
    disk-cache=32M
    file-allocation=prealloc
    input-file=/home/kodi/.aria2/aria2.session
    save-session=/home/kodi/.aria2/aria2.session
  • 在配置yaaw是關(guān)鍵一步,在setting后,要把JSON-RPC Path設(shè)置成
https://token:secret@testdomain.changeip.com:6801/jsonrpc #請(qǐng)注意https和6801

nginx配置

  • 這一步配的頭大,后來(lái)參考了owncloud官方配置文件才寫(xiě)出來(lái)
  • 實(shí)際使用過(guò)程中又進(jìn)行了不斷的調(diào)整
  • 你們可以注意到有個(gè)對(duì) 6801進(jìn)行ssl加密又轉(zhuǎn)發(fā)到6800端口的配置 ,這是為了讓yaaw在全站加密的情況下,突破aria2c的server對(duì)https的兼容性問(wèn)題
  • 要解釋的東西太多了,有些我還看不懂,以后一一寫(xiě)來(lái)
upstream php5-handler {
    server unix:/var/run/php5-fpm.sock;
}
upstream php7-handler {
    server unix:/run/php/php7.0-fpm.sock;
}
server{
    listen 6801 ssl;
    server_name testdomain.changeip.com;
    ssl_certificate /etc/letsencrypt/live/testdomain.changeip.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/testdomain.changeip.com/privkey.pem;
    ssl_dhparam /etc/nginx/ssl/dhparams.pem;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_prefer_server_ciphers  on;
    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:6800;
    }
}
server {
    listen 443 ssl;
    server_name testdomain.changeip.com 192.168.10.150;
    ssl_certificate /etc/letsencrypt/live/testdomain.changeip.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/testdomain.changeip.com/privkey.pem;
    ssl_dhparam /etc/nginx/ssl/dhparams.pem;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_prefer_server_ciphers  on; 
    # Add headers to serve security related headers
    # Before enabling Strict-Transport-Security headers please read into this topic first.
    #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;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    # Path to the root of your installation
    root /home/kodi/www/;
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    location /luci{
    proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://192.168.10.1;
    } 
    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /owncloud/public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /owncloud/public.php?service=host-meta-json last;
    location = /.well-known/carddav { return 301 $scheme://$host/owncloud/remote.php/dav; }
    location = /.well-known/caldav { return 301 $scheme://$host/owncloud/remote.php/dav; }
    location /.well-known/acme-challenge { }
    location ^~ /phpmyadmin{
        location /phpmyadmin{
            server_name_in_redirect off;
            index index.php;
        }
        location ~ ^/phpmyadmin/(?:build|tests|config|lib|3rdparty|templates|data)/ {
            deny all;
        }
        location ~ ^/phpmyadmin/(?:\.|autotest|occ|issue|indie|console) {
            deny all;
        }
        location ~ "^\/phpmyadmin\/.*\.php$" {
            include fastcgi_params;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param HTTPS on;
            fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
            fastcgi_param front_controller_active true;
            fastcgi_pass php5-handler;
            fastcgi_intercept_errors on;
           # fastcgi_request_buffering off;
        }
        location ~ "^\/phpmyadmin\/.*\.\(htm|html|gif|jpg|png|js|css\)$" {
            root /home/kodi/www;
        }     
    }
    location ^~ /owncloud {
        # set max upload size
        client_max_body_size 51200M;
        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;
        location /owncloud {
            rewrite ^ /owncloud/index.php$uri;
        }
        location ~ ^/owncloud/(?:build|tests|config|lib|3rdparty|templates|data)/ {
            deny all;
        }
        location ~ ^/owncloud/(?:\.|autotest|occ|issue|indie|db_|console) {
            deny all;
        }
        location ~ ^/owncloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
            include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param HTTPS on;
            fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
            fastcgi_param front_controller_active true;
            fastcgi_pass php5-handler;
            fastcgi_intercept_errors on;
           # fastcgi_request_buffering off;
        }
        location ~ ^/owncloud/(?:updater|ocs-provider)(?:$|/) {
            try_files $uri/ =404;
            index index.php;
        }
        # Adding the cache control header for js and css files
        # Make sure it is BELOW the PHP block
        location ~* \.(?:css|js)$ {
            try_files $uri /owncloud/index.php$uri$is_args$args;
            add_header Cache-Control "public, max-age=7200";
            # Add headers to serve security related headers  (It is intended to have those duplicated to the ones above)
            # Before enabling Strict-Transport-Security headers please read into this topic first.
            #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;
            add_header X-Download-Options noopen;
            add_header X-Permitted-Cross-Domain-Policies none;
            # Optional: Don't log access to assets
            access_log off;
        }
        location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
            try_files $uri /owncloud/index.php$uri$is_args$args;
            # Optional: Don't log access to other assets
            access_log off;
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • GrayLog2 安裝 (Minimual Setup) 環(huán)境依賴(lài) Graylog 服務(wù)端需要一下環(huán)境依賴(lài): Li...
    Eraz閱讀 4,018評(píng)論 0 3
  • # OpenTaxii配置教程 ## 安裝過(guò)程中注意點(diǎn) - 官方給出的service.yml配置文件中默認(rèn)使用ht...
    SimonChen閱讀 1,297評(píng)論 0 2
  • 自己的騰訊云服務(wù)器上跑了點(diǎn)小應(yīng)用,本想著沒(méi)什么內(nèi)容就沒(méi)必要弄 https了,但是同學(xué)還是強(qiáng)烈建議我加上去。之后用h...
    一名普通用戶閱讀 1,204評(píng)論 0 2
  • 不知道從什么時(shí)候養(yǎng)成的壞毛病,在夏天即將過(guò)去的時(shí)候,習(xí)慣性拿出小本本寫(xiě)一些“夏天已過(guò)去”的有的沒(méi)的感慨,有什么用!...
    知更棉閱讀 308評(píng)論 0 0
  • 2017年正月初九 今天早晨霧很大,能見(jiàn)度約50米,霧中的道路有一種神秘的感覺(jué)。 垂柳的枝條垂下來(lái),像一頭濃密的頭...
    知行路上閱讀 742評(píng)論 0 0

友情鏈接更多精彩內(nèi)容