Memcached یک سیستم کش حافظه توزیعشده متنباز است که دادهها و اشیایی مانند کوئریهای پرتکرار دیتابیس، فراخوانیهای API، محاسبات پرهزینه، دادههای جلسه یا توکنهای موقت را در RAM ذخیره میکند. Memcached با برنامههای مدرن ادغام میشود تا تعداد عملیات تکراری مانند فراخوانیهای پایگاه داده را کاهش دهد تا زمان پاسخ و استفاده از منابع سرور را بهبود بخشد.
این مطلب نحوه نصب Memcached در اوبونتو ۲۴.۰۴ و پیکربندی برنامه برای فعال کردن اتصالات امن با استفاده از مکانیسم SASL (لایه تایید هویت ساده و امنیت) را توضیح میدهد.
پیشنیازها
قبل از شروع از موارد زیر مطمئن شوید:
- یک سرور اوبونتو ۲۴.۰۴
- استفاده از کاربر root یا کاربری با امتیازات sudo
- سرور را بهروزرسانی کنید.
آموزش نصب Memcached
Memcached در مخازن پیشفرض اوبونتو ۲۴.۰۴ موجود است و میتوانید این بسته را با استفاده از مدیر بسته APT نصب کنید. علاوه بر این، میتوانید با استفاده از کد سورس برنامه، یک نسخه خاص را کامپایل و نصب کنید. در مراحل زیر، Memcached را نصب کرده و آن را برای اجرا روی سرور خود فعال کنید.
Memcached و ابزارهای افزونه مورد نیاز را نصب کنید.
sudo apt install memcached libmemcached-tools -y
نسخه Memcached نصب شده روی سرور خود را مشاهده کنید.
memcached --version
سرویس Memcached را برای شروع خودکار در زمان بوت فعال کنید.
sudo systemctl enable memcached
سرویس Memcached را استارت کنید.
sudo systemctl start memcached
آموزش پیکربندی Memcached
Memcached از پیکربندیهای موجود در فایل etc/memcached.conf/ برای اجرا روی سرور استفاده میکند. میتوانید پورت Memcached و پیکربندیهای رابط مانند پورت پیشفرض، محدودیتهای اتصال، حافظه و آدرس IP را برای گوش دادن به اتصالات ورودی روی سرور تنظیم کنید. در مراحل زیر، Memcached را پیکربندی کرده و جزئیات فرآیند را برای اجرا روی سرور خود تایید کنید.
فایل پیکربندی /etc/memcached.conf را با استفاده از یک ویرایشگر متن مانند Nano باز کنید.
sudo nano /etc/memcached.conf
برای فعال کردن احراز هویت SASL در سرور خود، در انتهای فایل بعد از -P /var/run/memcached/memcached.pid، عبارت -S را اضافه کنید.
... P /var/run/memcached/memcached.pid- S-
برای فعال کردن ثبت وقایع مفصل در فایل /var/log/memcache، دستورالعمل -v را پیدا کرده و از حالت کامنت خارج کنید.
v-
برای محدود کردن تعداد اتصالات همزمان Memcached، دستورالعمل -c 1024 را از حالت کامنت خارج کنید. عدد ۱۰۲۴ را با تعداد اتصالات دلخواه خود جایگزین کنید.
c 1024-
برای تایید پورت اتصال برنامه روی سرور خود، دستورالعمل پورت Memcached زیر را پیدا کنید.
# Default connection port is 11211 -p 11211
دستورالعمل listen زیر را پیدا و تایید کنید که روی آدرس loopback سرور شما، ۱۲۷.۰.۰.۱ تنظیم شده است تا فقط اتصالات محلی Memcached را بپذیرد. هنگام استفاده از Memcached روی یک سرور مستقل، آدرس را به IP عمومی یا آدرس Vultr VPC خود تغییر دهید تا اتصالات خارجی مجاز باشند.
-l 127.0.0.1 -l ::1
فایل را ذخیره کرده و ببندید.
برای اعمال تغییرات پیکربندی، Memcached را ریستارت کنید.
sudo systemctl restart memcached
ایمن سازی Memcached
Memcached با هیچ پروتکل احراز هویتی اجرا نمیشود، مگر اینکه در پیکربندی شما فعال شده باشد که آن را ناامن و برای همه درخواستها باز میکند. پروتکل SASL احراز هویت را فعال میکند و برای دسترسی به Memcached به یک کاربر معتبر نیاز دارد. برای نصب بسته SASL و ایمنسازی Memcached روی سرور خود، مراحل زیر را دنبال کنید.
بسته SASL را روی سرور خود نصب کنید.
sudo apt install sasl2-bin -y
یک دایرکتوری جدید برای ذخیره اعتبارنامههای احراز هویت SASL خود ایجاد کنید.
sudo mkdir /etc/sasl2
یک فایل پیکربندی SASL جدید برای استفاده با Memcached ایجاد کنید. به عنوان مثال، memcached.conf.
sudo nano /etc/sasl2/memcached.conf
محتویات زیر را به فایل اضافه کنید.
log_level: 5 mech_list: plain sasldb_path: /etc/sasl2/memcached-sasldb2
فایل را ذخیره و ببندید
پیکربندی SASL فوق، احراز هویت را با استفاده از پایگاه داده Memcached فعال میکند. در داخل پیکربندی:
• log_level: ثبت وقایع را فعال میکند. مقدار ۵ ثبت وقایع با جزئیات بالا را فعال میکند.
• mech_list: مکانیسم احراز هویت را تنظیم میکند. مقدار plain استفاده از نام کاربری و رمز عبور ساده را فعال میکند.
• sasldb_path: فایل پایگاه داده Memcached SASL را برای استفاده جهت احراز هویت مشخص میکند.
با استفاده از ابزار saslpasswd یک کاربر ایجاد کنید. برای فعال کردن آن در پایگاه داده Memcached، example-user را با نام کاربری واقعی خود جایگزین کنید.
sudo saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 example-user
در صورت درخواست، یک رمز عبور قوی برای کاربر جدید وارد کنید.
به کاربر memcache، دسترسی کامل به فایل پایگاه داده /etc/sasl2/memcached-sasldb2 را اعطا کنید.
$ sudo chown memcache:memcache /etc/sasl2/memcached-sasldb2
برای اعمال تغییرات پیکربندی، Memcached را ریستارت کنید.
sudo systemctl restart memcached
برای آزمایش اعتبارنامههای کاربر جدید خود، به Memcached متصل شوید. example-user و strong-password را با جزئیات کاربر واقعی خود جایگزین کنید.
memcstat --servers="127.0.0.1" -b --username=example-user --password=strong-password
در صورت موفقیت، خروجی شما باید مانند تصویر زیر باشد.
اتصال به Memcached
Memcached با چندین فریمورک اپلیکیشن مانند PHP، Perl، Python، Ruby و Java سازگار است. برای اتصال به Memcached و تست برنامه با استفاده از PHP، مراحل زیر را دنبال کنید.
نصب PHP و ماژول Memcached.
sudo apt install php php-memcached -y
یک اسکریپت PHP نمونه جدید برای اتصال به Memcached ایجاد کنید.
nano memcached.php
محتویات زیر را به فایل اضافه کنید. example-user و strong-password را با اطلاعات کاربری واقعی خود جایگزین کنید.
<?php memcached = new Memcached(); memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, true); memcached->addServer('127.0.0.1', 11211); memcached->setSaslAuthData('example-user', 'strong-password'); // Set and retrieve a value to test the connection memcached->set('example', Greetings from parsdev!'); echo $memcached->get('example'); ?>
فایل را ذخیره کرده و ببندید.
اسکریپت PHP فوق با استفاده از جزئیات کاربر مثال شما و پروتکل باینری به Memcached متصل میشود. یک کلید جدید example با مقدار Greetings from parsdev به حافظه Memcached اضافه شده و با استفاده از متغیر $memcached در برنامه بازیابی میشود.
اسکریپت را با استفاده از PHP اجرا کنید تا اتصال به Memcached را آزمایش کنید.
php memcached.php
بر اساس خروجی بالا، اسکریپت PHP با موفقیت به Memcached متصل میشود، کلید نمونه را ایجاد میکند و مقدار جدید Greetings from parsdev را برای بازیابی از حافظه مینویسد.
جمعبندی
نصب Memcached در اوبونتو انجام شده و برنامه را برای ادغام با فریمورکهایی مانند PHP ایمن کردهاید. Memcached عملکرد سرور شما را بهبود میبخشد و با اپیلیکشنهای پویای وب ادغام میشود تا کوئریهای مکرر مانند فراخوانیهای پایگاه داده را در حافظه ذخیره کند