Windows版Seafile服务器基于Apache开启Https_同时映射端口外网访问
声明:与此相关的文章已经有人发过,以下是我在原作者文章的基础上添加了自已的用法心得。部分地方没有更改,与原文有雷同,故在此声明此文实为基于原文之补充,并非我原创,还请原作者谅解!
1、假设服务器IP为192.168.10.100,域名为cloud.xxx.com,内网https端口是443,由于网络服务商封禁443端口,因此外网我使用4443)。
2、路由器界面把内网服务器192.168.10.100的端口443映射成外网4443(不会自己问度娘,很简单)。这样,当我们访问https://cloud.xxx.com:4443的时候,就等于访问内网https://192.168.10.100:443
3、软件准备
Python 2.7.11、Seafile Windows服务器版、Apache2.4(这里我用的是phpStudy,集成了apache,集成apache的包很多,大家可以选择自己喜欢的使用。
4、软件安装
假设软件安装位置:
Python —— C:\ Python27
phpStudy —— C:\phpStudy
Seafile —— C:\SeafileServer
Seafile Server 只需将文件复制到目录下,运行run.bat,界面中可将其安装位服务,但自启的服务没有界面,仍需运行run.bat。
Apache部署后,将其安装位服务。
5、Python环境变量设置
系统变量Path中,增加Python安装路径,如Python安装在C盘,其路径为:“C:/python2.7”,将这路径复制到系统变量Path中。
6、Seafile Server初始化
运行run.bat后进行,假设文件存储目录为D:
7、修改Seafile配置
修改配置文件 D:\seafile-server\conf\seafile.conf(文件路径会由于seafile服务器版本不同而有所差异)
[seahub]
port = 8000
fastcgi = true
修改配置文件 D:\seafile-server\conf\ccnet.conf
SERVICE_URL = https://cloud.xxx.com
修改配置文件 D:\seafile-server\conf\seahub_setting.py
增加一行:
FILE_SERVER_ROOT = ‘https://cloud.xxx.com:4443/seafhttp’
首先从Seafile服务程序上创建管理员,然后用创建的管理员账号登录seafile web页面“https://192.168.10.100”进行系统设置:
SERVICE_URL
https://cloud.xxx.com:4443
FILE_SERVER_ROOT
https://cloud.xxx.com:4443/seafhttp
8、修改Apache配置文件(按官方文档进行修改)
a) 修改httpd.conf
检查是否存在:
DocumentRoot “${SRVROOT}/htdocs”
若存在,注释掉。
在配置文件结尾增加内容:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
Include conf/extra/httpd-ssl.conf
#注意,上面这最后一行注释,原作者是使用的httpd-vhosts.conf。我习惯用httpd-ssl.conf。效果一样,大家可以要据自己情况调整。
b) 修改httpd-ssl.conf
增加以下内容:
<VirtualHost :443>
DocumentRoot “${SRVROOT}/htdocs”
ServerName cloud.xxx.com
Alias /media “C:/SeafileServer/seafile-server-6.0.7/seahub/media”
RewriteEngine On
SSLEngine on
SSLCertificateFile “C:/conf/crt_key/server.crt”
SSLCertificateKeyFile “C:/conf/crt_key/server.key”
<Location /media>
Require all granted
</Location>
#
# seafile fileserver
#
proxyPass /seafhttp http://127.0.0.1:8082
proxyPassReverse /seafhttp http://127.0.0.1:8082
RewriteRule ^/seafhttp - [QSA,L]
#
# seahub
#
SetEnvIf Request_URI . proxy-fcgi-pathinfo=unescape
SetEnvIf Authorization "(.)" HTTP_AUTHORIZATION=$1
ProxyPass / fcgi://127.0.0.1:8000/
</VirtualHost>
上面有几个地方要注意,上一位大神这里写成“roxyPass”和“roxyPassReverse”,害我Apache搞了半天都启动不起来,后来才发现这里漏写了一个字母-_-||
9、重启Apache和Seafile服务,即可使用https://cloud.xxx.com:4443进行访问成功。