apache文件服务器(CentOS)
环境:CentOS 8
需求:
搭建一个资源共享的文件下载站,支持多用户。
长这样:
传输文件的协议有很多,例如:http、ftp、smb、iSCSI等等,我们选择最简单的http协议。
一、安装
先安装httpd
yum install httpd
关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
启动httpd
systemctl start httpd
访问该机ip即可看到测试页面
此时,httpd安装完成。
二、配置
配置文件是 /etc/httpd/conf/httpd.conf
vi /etc/httpd/conf/httpd.conf
目前可能需要修改参数
参数 | 说明 |
---|---|
DocumentRoot | 需要提供下载的资源就存放在这个目录 |
Linsten | 监听的端口 |
默认就可以。此时将文件放在DocumentRoot目录下,就可以实现效果。
问题1:无法访问到文件目录
此时可能会访问到刚才的测试页面或是403页面,原因是最后一行配置
IncludeOptional conf.d/*.conf
查看 conf.d 目录,该目录下有一个welcome.conf的文件
将这几行注掉即可:
#<LocationMatch "^/+$">
# Options -Indexes
# ErrorDocument 403 /.noindex.html
#</LocationMatch>
#<Directory /usr/share/httpd/noindex>
# AllowOverride None
# Require all granted
#</Directory>
配置完成记得重启服务
systemctl restart httpd
问题2:中文乱码
在配置文件结尾加入这样一行,全局配置编码,然后重启服务
IndexOptions Charset=UTF-8
问题3:文件名显示不全
全局配置name宽度自适应,然后重启服务
IndexOptions Charset=UTF-8 NameWidth=*
三、多用户
配置
目前已经实现了一个共享的文件下载服务器,Linux是一个多用户的操作系统,现在为每一位用户都建一个私人的下载站。
进行简单的配置即可。
vi /etc/httpd/conf.d/userdir.conf
userdir.conf:
#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid. This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.
#
<IfModule mod_userdir.c>
#
# UserDir is disabled by default since it can confirm the presence
# of a username on the system (depending on home directory
# permissions).
#
#UserDir disabled
#
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disabled" line above, and uncomment
# the following line instead:
#
UserDir public_html
</IfModule>
#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
<Directory "/home/*/public_html">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
根据提示,注释掉 UserDir disable
即可。
创建用户
useradd -m httpdUser
# 添加用户并为用户创建登录目录
passwd httpUser
# 为用户设置密码
cd /home/httpUser
mkdir public_html
现在,就可以通过 http://ip/~httpUser/ 来访问了
更改权限
若是出现这个问题,则需要修改权限。
chmod 711 /home/httpUser
chmod 755 /home/httpUser/public_html
若仍然无效,那么有可能是受到SELinux的限制
chcon -R -t httpd_sys_content_t /home/*/public_html
成功
如果仍然无法正常访问,请查看错误日志:
cat /var/log/httpd/error_log