项目热更新功能,客户端开放员要向服务器上传热更新文件。一开始是通过html页面进行文件上传保存到对应目录下,但是由于用他们觉得用html上传太慢了,所以调整了apache账号的设置,并对html上传文件的目录映射到/usr/share/httpd/下。这样子开发员上传文件可以用ssh,而客户端拉取更新文件的方式及链接格式也不用改变了。
1. apache账号相关
由于搭建nginx的时候,已经创建了apache的账号了,所以不需要执行创建账号的操作了。但还需要下面两个操作:
sudo passwd apahce
sudo usermod -s /bin/bash apache
第一个操作是为apache账号重设密码,因为我们并不知道它的初始密码是多少,可能并没有设置。
第二个操作是修改apache账号使用的shell,否则ssh登录的时候会返回“This account is currently not available”的错误。应该是因为apache账号创建的时候很多配置项都没有指定。
执行这两个操作之后,就可以用apache账号进行ssh登录了。这是进入的目录是/usr/share/httpd/。
2. nginx.conf中为apache设置登录账号及密码
在nginx.conf中的http中添加如下内容:
auth_basic "Please input password";
auth_basic_user_file /usr/local/nginx/html/passwd;
这是为nginx指定密码账号的配置文件,记得访问这个目录下的所有文件时,都需要执行登录操作。
可以用下面的命令生成这个passwd配置文件:
htpasswd -c /usr/local/nginx/html/passwd account_name
account_name是登录的账号,而密码则是在输入命令后二次输入确定。
修改配置文件后,重启nginx再登录页面可以看到如下的账号密码输入窗口了:
3. nginx配置资源映射
正常情况下,当我访问http://x.x.x.x/files/file.txt时,服务器是会到nginx.conf中配置的location / 指定目录下的files目录查找file.txt目录,那如果我要将files目录映射到/usr/share/httpd/目录下的files目录下时,即实现一开始我提到的那个需求,该怎么做呢?其实,也只需要在nginx.conf中对应server下再增加一个location就行了。
location /files/ {
root /usr/share/httpd/;
autoindex on;
}
这样子,当我通过http://x.x.x.x/files/file.txt读取文件时,从nginx的log文件中可以看到资源被映射到了/usr/share/httpd/files目录下。不过,上传文件时,在php文件中我是将文件保存到了/usr/share/httpd/files目录下,及php文件中关于文件的保存是写绝对目录的,而不是像以前是用相对目录就行了。
关于这部分的总结就到这里了,不是专业的前端开发人员,所以有些可能不是最好的。就,记录一下吧。