前言
以前安裝過ownCloud,因爲ownCloud安卓客戶端需要收費,這次更換服務器後直接採用Nextcloud。因爲之前已經搭建過WordPress博客,所以本文並非完整教程,主要在已經存在的環境上搭建Nextcloud。
之前wordpress的搭建過程可以參考文章:最新阿里(騰訊)雲主機LANMP搭建WordPress詳細教程
1.下載安裝包
打開官網下載最新的安裝包:https://nextcloud.com/install/#
我們裝的是Server端,這裏選擇的是最新的17.0.0版本,下載完成後上傳至服務器目錄。
或者直接使用下面的命令:
wget https://download.nextcloud.com/server/releases/nextcloud-17.0.0.zip
2.準備工作
官網的流程主要是安裝Apache服務器,安裝PHP,安裝Mysql,這裏因爲環境都已具備,不再詳述。
①安裝redis
這是一個基於內存的key-value服務器,速度非常快,後面做內存緩存用。
yum -y install redis
systemctl enable redis.service
systemctl start redis.service
②安裝imageMagick
主要給後面的imagick擴展用。
yum -y install ImageMagick ImageMagick-devel
3.安裝
①解壓:
unzip nextcloud-*.zip
②複製文件夾
因爲用的是Apache服務器,可以複製到/var/www/html/
cp -R nextcloud/ /var/www/html/
③創建存放用戶數據的文件夾
mkdir /var/www/html/nextcloud/data
④修改文件夾用戶與用戶組
chown -R apache:apache /var/www/html/nextcloud
4.配置Apache服務器
創建新的配置文件:
vim /etc/httpd/conf.d/nextcloud.conf
添加下面的內容:
<VirtualHost *:8080>
DocumentRoot /var/www/nextcloud/
ServerName your.server.com
<Directory "/var/www/nextcloud/">
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>
需要注意的是,以爲我採用的LANMP,是Nginx監聽的80端口,所以這裏端口號寫的8080,如果沒有Nginx做反向代理的話,這裏直接填寫80即可。
重啓Apache服務器:
systemctl restart httpd
5.配置Nginx服務器
創建新的配置文件:
vim /etc/nginx/conf.d/nextcloud.conf
添加下面的內容:
server {
listen 80;
server_name yasin.store www.yasin.store;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_buffering off;
proxy_max_temp_file_size 0;
client_max_body_size 2048M;
fastcgi_buffers 64 4K;
fastcgi_request_buffering off;
}
}
這裏的server_name
修改爲你的雲盤域名。
proxy_buffering
爲關閉代理緩存,收到的數據直接傳給後端,因爲包含用戶數據,所以不應該開啓緩存。
client_max_body_size
這裏限制了上傳單個文件的最大值
重啓Nginx服務器:
systemctl restart nginx
6.注意事項
我直接運行的時候發現出現了下面的錯誤:
內部服務器錯誤
服務器不能完成您的請求。
如果再次發生,請在下方將技術詳情發送給服務器管理員。
更多細節可以在服務器日誌中找到。
技術細節
遠程地址:127.0.0.1
請求 ID:Xa111KwMtzlrOBUCTPSNXwAAAAY
原因:
文件夾權限沒有設置對,上面的修改權限是chown -R apache:apache /var/www/html/nextcloud
,但是我編譯PHP的時候指定了運行用戶爲www
,使用了--with-fpm-user=www
參數。也就是PHP執行程序其實並沒有權限,還是無法創建文件。
解決方法:
將文件夾用戶修改爲www
:
chown -R www:www /var/www/html/nextcloud
或者一開始編譯的時候指定PHP執行用戶爲apache
:
--with-fpm-user=apache
7.創建數據庫
上面所有步驟都正確配置後,輸入我們的域名,這時候發現進入配置界面:
可以使用自帶的SQLite數據庫,但是隻適用於人數比較少的情況,數據量大時會有性能問題。
因爲我們環境已經安裝Mysql,所以採用Mysql數據庫。
創建數據庫和用戶
使用root用戶登錄:
mysql -u root -p
爲用戶創建一個數據庫(wordpress):
mysql> create database nextcloud;
創建nextcloud用戶並授予上面創建的nextcloud數據庫所有權限:
mysql> grant all on nextcloud.* to nextcloud@localhost Identified by "19921111Yasin#$";
mysql> flush privileges;
grant 權限 on 數據庫.* to 用戶名@登錄主機 identified by “密碼”
數據庫預置完成後,在配置界面輸入剛纔設置的名稱和信息,點擊安裝完成。
8.優化
這時候,一切順利的話,我們可以使用剛纔配置的用戶名和密碼登陸後臺。
點擊 設置-概覽
來查看當前配置的信息:
下面將依次對警告項進行優化:
①修改PHP內存限制
vim /usr/local/php/conf/php.ini
將memory_limit=128M
修改爲memory_limit=512M
②開啓HTTPS
(1)申請HTTPS證書
首先你要有HTTPS證書,可以使用Let's Encrypt
,或者去阿里雲或者騰訊雲申請免費一年的DV證書,這裏以騰訊云爲例。
具體的申請流程不再詳細敘述,申請完成後我們下載證書文件,解壓後進入Apache文件夾,可以看到下面三個文件:
ls
1_root_bundle.crt 2_yasin.store.crt 3_yasin.store.key
(2)安裝ssl模塊
如果已經安裝可以跳過。
yum -y install mod_ssl
(3)修改Apache配置文件
vim /etc/httpd/conf.d/nextcloud.conf
下面是一個參考配置:
<VirtualHost *:8080>
ServerName yasin.store
Serveralias www.yasin.store
Redirect permanent / https://yasin.store/
</VirtualHost>
<VirtualHost *:443>
ServerName yasin.store
DocumentRoot "/yasin/nextcloud"
DirectoryIndex index.html index.php
SSLEngine on
SSLCertificateFile /yasin/ssl/2_yasin.store.crt
SSLCertificateKeyFile /yasin/ssl/3_yasin.store.key
SSLCertificateChainFile /yasin/ssl/1_root_bundle.crt
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
<Directory "/yasin/nextcloud/">
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
</VirtualHost>
重啓Apache讓配置生效:
systemctl restart httpd
這時候你再打開域名發現已經切換爲https。
③開啓opcache
vim /usr/local/php/conf/php.ini
找到[opcache]
,開啓下面的配置:
[opcache]
zend_extension= opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
重啓php-fpm
:
systemctl restart php-fpm
④配置內存緩存
APCu
APCu是存在於大多數Linux發現版中的一種數據緩存。下面採用編譯方法安裝PHP APCu擴展:
(1)下載
wget http://pecl.php.net/get/apcu-5.1.17.tgz
(2)解壓
tar -xvf apcu-5.1.17.tgz
(3)編譯配置
cd apcu-5.1.17
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
(4)編譯並安裝
make && make install
(5)修改配置文件php.ini
vim /usr/local/php/conf/php.ini
增加下面的內容:
[apcu]
extension = apcu.so
apc.enabled= on
apc.shm_size= 64M
apc.enable_cli = on
(6)重啓php-fpm
systemctl restart php-fpm
(7)修改Nextcloud配置文件
增加下面的內容:
'memcache.local' => '\OC\Memcache\APCu',
Redis
Redis是一種出色的現代內存緩存,可用於分佈式緩存,並用作事務性文件鎖定的key-value存儲,因爲它可以確保所緩存的對象在需要時一直可用。
這裏通用採用編譯的方法安裝PHP Redis擴展。
(1)下載
wget http://pecl.php.net/get/redis-5.0.2.tgz
(2)解壓
tar -xvf redis-5.0.2.tgz
(3)編譯配置
cd redis-5.0.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
(4)編譯並安裝
make && make install
(5)修改配置文件php.ini
vim /usr/local/php/conf/php.ini
增加下面的內容:
[redis]
extension = redis.so
(6)重啓php-fpm
systemctl restart php-fpm
(7)修改Nextcloud配置文件
增加下面的內容:
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
],
⑤添加imagick擴展
(1)下載
wget http://pecl.php.net/get/imagick-3.4.4.tgz
(2)解壓
tar -xvf imagick-3.4.4.tgz
(3)編譯配置
cd imagick-3.4.4
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
(4)編譯並安裝
make && make install
(5)修改配置文件php.ini
vim /usr/local/php/conf/php.ini
增加下面的內容:
[imagick]
extension = "imagick.so"
(6)重啓php-fpm
systemctl restart php-fpm
⑥修改php-fpm配置
如果您使用的是php-fpm的默認安裝,則可能已經注意到Web界面上的加載時間過長,甚至出現同步問題。
這是由於每個元素的同時請求均由單獨的PHP-FPM進程處理,配置允許的情況下應該允許運行更多的進程。
下面是一個2核4G的機器的參考配置:
vim /usr/local/php/etc/php-fpm.d/www.conf
修改下面的配置:
pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18
重啓php-fpm:
systemctl restart php-fpm
好了,至此所有的優化都已完畢,這時候我們再查看概覽可以發現所有建議項均已完成。
9.添加和配置郵箱
這裏建議使用騰訊企業郵箱,微信登錄比較方便,也比自建郵箱服務器安全穩定的多。
首先去註冊騰訊企業郵箱,然後添加郵箱域名,比如這裏我使用的是yasin.store
。
這時候需要去域名註冊商處添加MX解析,這裏以阿里云爲例,在域名解析處添加下面的解析:
等驗證完成後,企業郵箱就可以使用了,下面我們添加一個通知郵箱賬號。
點擊通訊錄,新增成員,示例如下:
添加完成後使用該郵箱登錄,登錄後點擊賬戶,設置密碼,設置完成後我們就可以在NextCloud中配置郵箱了。
配置示例如下:
憑證就是你的郵箱名和密碼,設置完成後點擊發送郵件。
發現提示郵箱未設置,也就是賬號自己的郵箱,這裏在賬戶設置中填入你自己的郵箱,再次點擊發送。
如果一切配置正確的話,登錄你自己的郵箱,這時候你就能收到發送的郵件,如下所示:
這樣你的郵箱就算完成啦,這樣賬號的各種通知都可以通過郵箱進行發送,忘記密碼也會發送到你的郵箱,所以是一個非常實用且必要的功能。
10.Enjoy
好啦,完成上面所有的步驟你就可以愉快地使用一個只屬於你自己的個人雲盤。
你可以安裝Windows客戶端,使用它的同步功能。
也可使用App Store或者Google Play下載手機客戶端,自動備份你的照片和視頻(百度雲收費功能哦)。
還有更多有趣的功能等待你去慢慢探索!