使用nginx,使得可以从浏览器中下载tomcat的日志文件
在本文章中,我们假设Tomcat已经在服务器上运行,并介绍使用Nginx来实现从浏览器上下载Tomcat日志的方法。
有一項优点是可以轻松地安装,并且不需要特意使用ssh来查看日志文件。
我确认了Ubuntu18.04上的操作。
安装Nginx
sudo apt-get update
sudo apt-get install nginx
只要运行”systemctl status nginx”命令,并确认其状态为”active”,就表示Nginx已经成功安装。
$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-08-11 02:04:32 WIB; 1h 55min ago
(以下略)
nginx的配置
我将编辑nginx.conf文件。
sudo vi /etc/nginx/nginx.conf
编辑的内容如下所示。
添加服务器上下文
在http的上下文中添加server的上下文。
...
http {
...
server {
listen 8888; # portは任意で変更してください。
location /logs {
alias /path/to/logs; # tomcatのログがあるディレクトリを指定します。
autoindex on; # autoindexオプションでファイルのリストを表示できるようにします。
}
}
}
用户可以更改worker_processes的设置(可选)。
userは、普段sshで利用しているユーザーを指定しておくと、403 Forbiddenになるのを事前に防げます。
何らかの事情でuserを変更しない場合、は、後述の方法でも回避できます。
worker_processはnginxが実行する際のworkerの数を指定する設定です。デフォルトではautoになっているのですが、ログをダウンロードするのみであれば(よほどの大人数でサーバーを利用していない限りは)1つで十分なのでworker_processes 1;としておくことで余計なリソースを使わずに済みます。
确认设置
在设置完成后,您可以使用 `nginx -t` 命令来检查设置是否正确。
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果配置正确的话,可以通过systemctl reload nginx重新加载配置,并在浏览器中进行确认是否能够显示。
http://<服务器的IP地址>:8888/logs
如果可以显示日志列表,则表示配置已完成。
附注:如果显示403 Forbidden错误
如果用户没有按照上述所指定的方式进行指定,那么worker进程将在www-data用户下运行。
$ ps aux | grep nginx
root 21681 0.0 0.0 141252 7084 ? Ss 02:04 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
# www-dataユーザーでworkerが実行されている
www-data 22293 0.0 0.0 143864 7224 ? S 04:00 0:00 nginx: worker process
username 22338 0.0 0.0 14428 1048 pts/1 S+ 04:42 0:00 grep --color=auto nginx
然而,由于文件的所有者不是www-data,所以在nginx上无法查看该文件。
$ ll /path/to/apache-tomcat/ #apache-tomcatフォルダ直下にlogsフォルダがあるという前提
(略)
drwxr-x--- 2 username username 4096 Agu 7 00:48 logs/
如果您想在不更改nginx用户的情况下进行处理,您可以通过给予logs文件夹Read权限来避免403 Forbidden错误的发生。
# Read権限を再帰的に付与
chmod -R o+r /path/to/logs
# フォルダ遷移するには実行権限が必要なので、併せて付与
chmod o+x /path/to/logs
请参考
- http://nginx.org/en/docs/http/ngx_http_autoindex_module.html#autoindex