آموزش ساخت وب سرور با پایتون
پایتون با استفاده از برنامه های کاربردی در توسعه وب پشتیبان، یادگیری ماشین، مدل سازی علمی، عملیات سیستم و چندین نرم افزار مخصوص سازمان، یکی از بهترین زبان های برنامه نویسی برای یادگیری در سال 2021 باقی می ماند. این زبان به طور کلی یکی از زبانهای برنامه نویسی قابل دسترس به شمار می رود، با نحوی شبیه به زبان انگلیسی و کتابخانه های متعدد.
این قابلیت دسترسی به ایجاد وب سرور پایتون را نیز شامل می شود، که می توانید تنها در چند خط کد انجام دهید. مانند دیگر آموزش های پایتون ما، خواهید دید که برخی از اساسی ترین عملیات در عرض چند دقیقه انجام می شود.
ما به شما نحوه ایجاد وب سرور پایتون خود را برای آزمایش محلی نشان می دهیم. کل فرایند فقط چند دقیقه و چند خط کد طول می کشد.
اما ابتدا بیایید ببینیم وب سرور چیست؟
دوره پیشنهادی: دوره آموزش Nginx
# وب سرور چیست؟
در زیرساخت اینترنت، سرور بخشی از مدل سرویس گیرنده-سرویس دهنده است. هنگامی که یک مرورگر سرویس گیرنده از یک صفحه وب بازدید می کند، یک درخواست HTTP به سرور حاوی فایل های مورد نیاز برای عملکرد یک وب سایت ارسال می کند. سرور به درخواست مشتری گوش می دهد، آن را پردازش می کند و با فایل های مورد نیاز برای ارائه صفحه وب پاسخ می دهد. این محتوا می تواند HTML (متن و رسانه ای که در وب سایت مشاهده می کنید) و JSON (برنامه های کاربردی) باشد.
ممکن است در زمان مرور اینترنت با چند کد خطای سرور روبرو شده باشید - "فایل پیدا نشد" یا 404 یکی از محبوب ترین ها است. در این موارد، سرور در دسترسی به پرونده های خاص مشکل دارد. با خطای 404، فایل خاص موجود نیست.
تفاوتهای زیادی در سرورهای وب وجود دارد، از جمله طبقه بندی به وب سرورهای ایستا و پویا. به عنوان مثال، وب سرورهای ایستا فقط فایلها را همانطور که هستند، بدون هیچگونه پردازش اضافی، برمی گردانند. سرورهای وب پویا پایگاه داده ها و سرورهای برنامه را معرفی می کنند، که می توانید پس از اتمام کار با سرورهای استاتیک به آنها ادامه دهید.
مقاله پیشنهادی: مهندس نرم افزار چه می کند؟
# چطور با پایتون یک وب سرور ساده بسازیم؟
راه اندازی وب سرور پایتون سریع و ساده است و فقط چند دقیقه طول می کشد. کافی است یک خط کد داشته باشید تا ساده ترین سرورهای محلی را بر روی رایانه خود اجرا کنید.
با آزمایش محلی، سیستم شما به سرور سرویس گیرنده که مرورگر شما است تبدیل می شود و فایل ها به صورت محلی در سیستم شما ذخیره می شوند. ماژولی که برای ایجاد وب سرور استفاده می کنید سرور http پایتون است. یک هشدار در این مورد وجود دارد: فقط می تواند به عنوان سرور فایل استاتیک استفاده شود. برای اجرای سرورهای وب پویا، به چارچوب وب پایتون مانند Django نیاز دارید.
بیایید به کد برویم ، که به شرح زیر است:
python -m http.server
بسته به سیستم خود، این مورد را در ترمینال یا خط فرمان تایپ کنید، و هنگام بستن سرور باید پیام "سرور شروع شده" و "سرور متوقف شده" را مشاهده کنید.
و شما آن را دارید - اولین وب سرور پایتون شما! مسلماً، این یک کار ساده است، کاری بیش از بازکردن یک سرور وب در پورت پیش فرض سیستم 8000 شما انجام نمی دهد. پورت را نیز می توان با تعیین شماره پورت در انتهای خط تغییر داد ، مانند این:
python -m http.server 8080
یک وب سرور ساده مانند سرور جدیدی که ایجاد کرده اید، خوب است. اما ایجاد یک سرور وب سفارشی بسیار جالب تر و آموزنده تر است.
ویدیو پیشنهادی: ویدیو آموزش متدهای sort و sorted در پایتون
# ساخت یک وب سرور سفارشی در پایتون
یک وب سرور سفارشی به شما اجازه می دهد تا بیش از یک وب سرور داخلی کار بیشتری انجام دهید. کدی که قرار است مشاهده کنید به شما اطلاعات زیادی در مورد برخی عملکردها و فرایندها می دهد. از طول کد غافل نشوید - در اینجا فقط تعداد انگشت شماری از مفاهیم کلیدی وجود دارد. برای آزمایش خود لازم نیست همه اینها را به صورت دستی تایپ کنید - اما به اهمیت آن مفاهیم توجه کنید.
from http.server import HTTPServer, BaseHTTPRequestHandler
hostName = "localhost"
serverPort = 8080 #You can choose any available port; by default, it is 8000
class MyServer(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(bytes("<html><head><title>https://testserver.com</title></head>", "utf-8"))
self.wfile.write(bytes("<p>Request: %s</p>" % self.path, "utf-8"))
self.wfile.write(bytes("<body>", "utf-8"))
self.wfile.write(bytes("<p>This is an example web server.</p>", "utf-8"))
self.wfile.write(bytes("</body></html>", "utf-8"))
if __name__ == "__main__":
webServer = HTTPServer((hostName, serverPort), MyServer)
print("Server started http://%s:%s" % (hostName, serverPort)) #Server starts
try:
webServer.serve_forever()
except KeyboardInterrupt:
pass
webServer.server_close() #Executes when you hit a keyboard interrupt, closing the server
print("Server stopped.")
قبل از ورود به بخشهای مهم، بیایید به سرعت به چند مورد بپردازیم. اگر تکالیف HTML خود را انجام داده اید، برخی از اصطلاحات آشنا را در کد مشاهده خواهید کرد. کلاس MyServer به جریان خروجی (wfile) می نویسد که به عنوان پاسخی برای کلاینت با استفاده از "self.wfile.write ()" ارسال می شود. آنچه ما در اینجا انجام می دهیم نوشتن یک صفحه ابتدایی HTML در حال اجرا است.
ما در اینجا به برخی بخشهای مهمتر که در حال انجام است اشاره می کنیم، یعنی:
- ماژول http.server
- کلاسهای HTTPServer و BaseHTTPRequestHandler که از ماژول http.server
- متد do_GET
سرور HTTP یک ماژول استاندارد در کتابخانه پایتون است که دارای کلاس های مورد استفاده در ارتباط سرویس گیرنده و سرور است. آن دو کلاس HTTPServer و BaseHTTPRequestHandler هستند. دومی از طریق اولی به سرور دسترسی پیدا می کند. HTTPServer آدرس سرور را به عنوان متغیرهای نمونه ذخیره می کند، در حالی که BaseHTTPRequestHandler روش هایی را برای رسیدگی به درخواست ها فرا می خواند.
به طور خلاصه، کد از تابع اصلی شروع می شود. در مرحله بعد، کلاس MyServer فراخوانی می شود و BaseHTTPRequestHandler متد do_GET () را برای برآوردن درخواست ها فرا می خواند. وقتی برنامه را قطع می کنید، سرور بسته می شود.
چرا می خواهید از وب سرور سفارشی استفاده کنید؟ این به شما امکان می دهد از متدهای بیشتری مانند do_HEAD () و do_POST () استفاده کنید و قابلیت های بیشتری را ارائه دهید. در هر صورت، می توانید ببینید که ایجاد یک سرور وب سفارشی نیز نسبتاً ساده است.
مقاله پیشنهادی: برنامه نویسی رقابتی چیست؟
# نتیجه گیری
کار کردن با سرور وب شما با پایتون زیاد طول نمی کشد. این ایده اساسی است که باید آن را جذب کنید. ایجاد سرور شما یک گام کوچک اما مهم در راه شما برای ایجاد برنامه های کامل استک است.
کد را خودتان امتحان کنید و شاید حتی پروژه های پایتون را که شامل پیاده سازی سرور هستند جستجو کنید. پروژه های زیادی وجود دارد که از این مفهوم استفاده می کند، بنابراین خوب است بدانید که چگونه آن را در زمینه وسیع تری پیاده سازی کنید.