.\" Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. .\" .\" This code is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License version 2 only, as .\" published by the Free Software Foundation. .\" .\" This code is distributed in the hope that it will be useful, but WITHOUT .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License .\" version 2 for more details (a copy is included in the LICENSE file that .\" accompanied this code). .\" .\" You should have received a copy of the GNU General Public License version .\" 2 along with this work; if not, write to the Free Software Foundation, .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. .\" .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA .\" or visit www.oracle.com if you need additional information or have any .\" questions. .\" .\" Automatically generated by Pandoc 2.19.2 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. .ie "\f[CB]x\f[R]"x" \{\ . ftr V B . ftr VI BI . ftr VB B . ftr VBI BI .\} .el \{\ . ftr V CR . ftr VI CI . ftr VB CB . ftr VBI CBI .\} .TH "JWEBSERVER" "1" "2023" "JDK 21" "JDK Commands" .hy .SH "نام (NAME)" .PP jwebserver-openjdk21 \- سرور وب ساده و سبک برای ارائه فایل‌های استاتیک در OpenJDK 21 .SH "خلاصه دستور (SYNOPSIS)" .PP \f[V]jwebserver\f[R] [\f[I]گزینه‌ها\f[R]] .TP \f[I]گزینه‌ها\f[R] گزینه‌های خط فرمان. برای توضیحات دقیق گزینه‌ها، بخش \f[B]گزینه‌ها (OPTIONS)\f[R] را ببینید. .SH "توضیحات (DESCRIPTION)" .PP ابزار \f[V]jwebserver\f[R] یک سرور HTTP مینیمال و ساده ارائه می‌دهد که برای ساخت نمونه اولیه (پروتوتایپ)، آزمایش و اشکال‌زدایی طراحی شده است. این سرور سلسله‌مراتب یک پوشه را مدیریت کرده و فقط فایل‌های استاتیک (ایستا) را ارائه می‌دهد. تنها از پروتکل HTTP/1.1 پشتیبانی می‌شود؛ نسخه‌های HTTP/2 و HTTPS پشتیبانی نمی‌شوند. .PP تنها به درخواست‌های پایا (idempotent) از نوع HEAD و GET پاسخ داده می‌شود. هرگونه درخواست دیگر با پاسخ \f[V]501 - Not Implemented\f[R] یا \f[V]405 - Not Allowed\f[R] مواجه می‌شود. درخواست‌های GET به صورت زیر به پوشه سرویس‌دهی‌شده نگاشت می‌شوند: .IP \[bu] 2 اگر منبع درخواست‌شده یک فایل باشد، محتوای آن ارسال می‌شود. .IP \[bu] 2 اگر منبع درخواست‌شده پوشه‌ای حاوی یک فایل شاخص (index) باشد، محتوای فایل شاخص ارسال می‌شود. .IP \[bu] 2 در غیر این صورت، نام تمام فایل‌ها و زیرپوشه‌های آن پوشه فهرست می‌شود. پیوندهای نمادین (Symbolic links) و فایل‌های پنهان فهرست یا ارسال نمی‌شوند. .PP انواع MIME به طور خودکار و با استفاده از جدول داخلی پیکربندی می‌شوند. به عنوان مثال، فایل‌های \f[V].html\f[R] به صورت \f[V]text/html\f[R] و فایل‌های \f[V].java\f[R] به صورت \f[V]text/plain\f[R] ارائه می‌شوند. .PP ابزار \f[V]jwebserver\f[R] در ماژول jdk.httpserver قرار دارد و همچنین می‌توان آن را با دستور \f[V]java -m jdk.httpserver\f[R] اجرا کرد. این ابزار بر پایه پیاده‌سازی سرور وب در بسته \f[V]com.sun.net.httpserver\f[R] توسعه یافته است. کلاس \f[V]com.sun.net.httpserver.SimpleFileServer\f[R] یک روش برنامه‌نویسی برای دریافت سرور و اجزای آن جهت استفاده مجدد و توسعه ارائه می‌دهد. .SH "نحوه استفاده (USAGE)" .IP .nf \f[CB] jwebserver [-b bind address] [-p port] [-d directory] [-o none|info|verbose] [-h to show options] [-version to show version information] \f[R] .fi .SH "گزینه‌ها (OPTIONS)" .TP \f[V]-h\f[R] یا \f[V]-?\f[R] یا \f[V]--help\f[R] پیام راهنما را چاپ کرده و خارج می‌شود. .TP \f[V]-b\f[R] \f[I]addr\f[R] یا \f[V]--bind-address\f[R] \f[I]addr\f[R] آدرس مبدا برای اتصال (bind) را مشخص می‌کند. پیش‌فرض: 127.0.0.1 یا ::1 (حلقه محلی / loopback). برای تمام رابط‌های شبکه از \f[V]-b 0.0.0.0\f[R] یا \f[V]-b ::\f[R] استفاده کنید. .TP \f[V]-d\f[R] \f[I]dir\f[R] یا \f[V]--directory\f[R] \f[I]dir\f[R] پوشه‌ای را که باید ارائه شود مشخص می‌کند. پیش‌فرض: پوشه جاری. .TP \f[V]-o\f[R] \f[I]level\f[R] یا \f[V]--output\f[R] \f[I]level\f[R] قالب خروجی لاگ را تعیین می‌کند. \f[V]none\f[R] | \f[V]info\f[R] | \f[V]verbose\f[R]. پیش‌فرض: \f[V]info\f[R]. .TP \f[V]-p\f[R] \f[I]port\f[R] یا \f[V]--port\f[R] \f[I]port\f[R] درگاه (port) شنود را مشخص می‌کند. پیش‌فرض: 8000. .TP \f[V]-version\f[R] یا \f[V]--version\f[R] اطلاعات نسخه را چاپ کرده و خارج می‌شود. .PP برای متوقف کردن سرور، کلیدهای \f[V]Ctrl + C\f[R] را فشار دهید. .SH "راه‌اندازی سرور (STARTING THE SERVER)" .PP دستور زیر «سرور وب ساده» را راه‌اندازی می‌کند: .IP .nf \f[CB] $ jwebserver \f[R] .fi .PP اگر راه‌اندازی با موفقیت انجام شود، سرور پیامی در \f[V]System.out\f[R] چاپ می‌کند که آدرس محلی و مسیر مطلق پوشه در حال سرویس‌دهی را نشان می‌دهد. برای مثال: .IP .nf \f[CB] $ jwebserver Binding to loopback by default. For all interfaces use \[dq]-b 0.0.0.0\[dq] or \[dq]-b ::\[dq]. Serving /cwd and subdirectories on 127.0.0.1 port 8000 URL http://127.0.0.1:8000/ \f[R] .fi .SH "پیکربندی (CONFIGURATION)" .PP به طور پیش‌فرض، سرور در پیش‌زمینه اجرا شده و به آدرس لوپ‌بک و درگاه 8000 متصل می‌شود. این مقدار را می‌توان با گزینه‌های \f[V]-b\f[R] و \f[V]-p\f[R] تغییر داد. برای مثال، برای اتصال سرور وب ساده به تمام رابط‌های شبکه: .IP .nf \f[CB] $ jwebserver -b 0.0.0.0 Serving /cwd and subdirectories on 0.0.0.0 (all interfaces) port 8000 URL http://123.456.7.891:8000/ \f[R] .fi .PP توجه داشته باشید که این کار سرور وب را برای تمام میزبان‌های موجود در شبکه در دسترس قرار می‌دهد. \f[I]این کار را انجام ندهید مگر اینکه مطمئن باشید سرور هیچ اطلاعات حساسی را فاش نمی‌کند.\f[R] .PP به عنوان مثال دیگر، برای اجرا روی درگاه 9000 از دستور زیر استفاده کنید: .IP .nf \f[CB] $ jwebserver -p 9000 \f[R] .fi .PP به طور پیش‌فرض، فایل‌های پوشه جاری ارائه می‌شوند. می‌توان پوشه دیگری را با گزینه \f[V]-d\f[R] مشخص کرد. .PP به طور پیش‌فرض، هر درخواست در کنسول ثبت (log) می‌شود. خروجی شبیه به این است: .IP .nf \f[CB] 127.0.0.1 - - [10/Feb/2021:14:34:11 +0000] \[dq]GET /some/subdirectory/ HTTP/1.1\[dq] 200 - \f[R] .fi .PP خروجی لاگ را می‌توان با گزینه \f[V]-o\f[R] تغییر داد. تنظیم پیش‌فرض \f[V]info\f[R] است. تنظیم \f[V]verbose\f[R] علاوه بر این، هدرهای درخواست و پاسخ و همچنین مسیر مطلق منبع درخواستی را نیز شامل می‌شود. .SH "متوقف کردن سرور (STOPPING THE SERVER)" .PP پس از راه‌اندازی موفقیت‌آمیز، سرور تا زمانی که متوقف شود به کار خود ادامه می‌دهد. در پلتفرم‌های یونیکس، می‌توان با ارسال سیگنال \f[V]SIGINT\f[R] (\f[V]Ctrl+C\f[R] در پنجره ترمینال) سرور را متوقف کرد. .SH "گزینه راهنما (HELP OPTION)" .PP گزینه \f[V]-h\f[R] یک پیام راهنما را نمایش می‌دهد که نحوه استفاده و گزینه‌های \f[V]jwebserver\f[R] را شرح می‌دهد.