Nextcloud-এ Redis চালু করার সংগ্রাম
নমস্কার, আমি অযোগ্য।
Ubuntu 20.04-এ Nextcloud 21.0.1+Nginx+PHP+MariaDB+Redis সেটআপ করুন
আমি এই নিবন্ধটি অনুসরণ করেছি, যা আমি পূর্বে Nextcloud ইনস্টল করার সময়ও উল্লেখ করেছিলাম, কিন্তু আমার পরিবেশে Redis সঠিকভাবে কাজ করেনি।
এটি কাজ না করলেও স্বাভাবিকভাবে চলে, তাই এটি না করলেও চলে...
আমি দীর্ঘ সময় ধরে এটি নিয়ে বিরক্ত ছিলাম, তাই এটি সমাধানের পর্ব।
যাইহোক, যেহেতু আমি Nginx-এ প্রক্সি ক্যাশে সেটআপ করেছি, আমি ভেবেছিলাম পার্থক্য কী, তাই আমি ChatGPT-কে এটি ব্যাখ্যা করতে বলেছিলাম। নিচের বোতাম টিপলে দেখতে পাবেন।
#myText { display: none; } #toggleButton:checked ~ #myText { display: block; }
ব্যাখ্যা দেখান
Nginx প্রক্সি ক্যাশে ওয়েব সার্ভার (Nginx) এর মধ্যেই তৈরি করা হয়েছে।
এটি একটি রিভার্স প্রক্সি হিসাবে কাজ করে, অ্যাপ্লিকেশন সার্ভারে অনুরোধগুলি ক্যাশে করে এবং প্রতিক্রিয়া ফেরত দেয়।
এটি প্রধানত ওয়েব কন্টেন্ট (HTML, ছবি, CSS, JavaScript ইত্যাদি) ক্যাশে করার জন্য ব্যবহৃত হয়।
এটি স্ট্যাটিক ফাইল বিতরণের গতি বাড়ায় এবং সার্ভারের উপর চাপ কমায়।
Nginx প্রক্সি ক্যাশে Nginx কনফিগারেশন ফাইল ব্যবহার করে সহজেই পরিচালনা ও নিয়ন্ত্রণ করা যায়।
আপনি ক্যাশের মেয়াদ, আকার, ক্যাশে করার জন্য লক্ষ্য URL ইত্যাদি সেট করতে পারেন।
Nginx প্রক্সি ক্যাশে একটি একক Nginx সার্ভারের মধ্যে কাজ করে এবং স্কেলেবিলিটি ও উচ্চ প্রাপ্যতার জন্য Nginx ক্লাস্টারিং বা রেপ্লিকেশন-এর মতো কৌশল প্রয়োজন।
এটি ডিস্কে অস্থায়ী ক্যাশে ফাইল সংরক্ষণ করে, তবে দীর্ঘমেয়াদী ডেটা স্থায়িত্ব বা স্থায়িত্বের জন্য কোনো বৈশিষ্ট্য সরবরাহ করে না।
Redis একটি স্বাধীন ডেটাবেস এবং ক্যাশিং প্ল্যাটফর্ম।
এটি একটি পৃথক সার্ভারে চলে এবং অ্যাপ্লিকেশনগুলি ক্যাশে ডেটা পড়তে ও লিখতে Redis-এর সাথে সংযোগ করে।
এটি একটি সাধারণ-উদ্দেশ্য ক্যাশিং প্ল্যাটফর্ম এবং বিভিন্ন ধরণের ডেটা ক্যাশে করতে পারে।
ক্যাশে করা ডেটার প্রকারগুলির মধ্যে রয়েছে স্ট্রিং, তালিকা, সেট, সাজানো সেট, হ্যাশ ইত্যাদি।
Redis প্রোগ্রাম দ্বারা সরাসরি নিয়ন্ত্রিত ও পরিচালিত হয়।
আপনি Redis কমান্ড ব্যবহার করে ক্যাশে ডেটা ম্যানিপুলেট করেন, যেমন ডেটা সেট করা, পাওয়া, মুছে ফেলা এবং মেয়াদ সেট করা।
সমস্যাসমূহ
প্রথমত, Redis কাজ করেনি।
অবশেষে ইনস্টল করা প্যাকেজ
Redis , Redis-server , Redis-tools , php-fpm
যখন আমি Redis চালু করার চেষ্টা করলাম
sudo service redis-server start
দেখা দেওয়া ত্রুটি
সমস্যা ১
Reading the configuration file, at line 1
>>> 'logfile "/var/log/redis/redis.log"'
Can't open the log file: No such file or directory
সমাধান: এটি অভিযোগ করে যে redis.conf-এ কনফিগার করা লগ ফাইল অ্যাক্সেস করা যাচ্ছে না!
আমি `logfile` নির্দিষ্ট না করলেও, এটি স্বয়ংক্রিয়ভাবে একটি তৈরি করে বলে মনে হয়, তাই আমি এটিকে `""` রেখেছি। যদি সত্যিই প্রয়োজন হয়, তাহলে লগ, অনুমতি এবং মালিকানা কনফিগার করলে এটি স্বাভাবিকভাবে কাজ করবে বলে মনে করি।
সমস্যা ২
# Opening port: bind: Address already in use
সমাধান: এটি অভিযোগ করে যে পোর্টটি ইতিমধ্যেই ব্যবহৃত হচ্ছে!
redis.conf-এ প্রাথমিকভাবে কনফিগার করা পোর্ট হল 6379। কোনো কারণে, Devuan (OpenRC)-এ `sudo service redis-server stop` কমান্ডও একটি ত্রুটি দেয় এবং থামে না। তাই, কী এটি ব্যবহার করছে তা পরীক্ষা করার জন্য, আমি নিম্নলিখিতটি প্রবেশ করালাম:
root@hoge:~# lsof -i :6379
যদি ব্যাকগ্রাউন্ডে একটি Redis প্রক্রিয়া চলে, তাহলে সেটিই। PID পরীক্ষা করুন এবং এটিকে কিল করুন।
root@hoge:~# kill -9 <PID>
এর পরে, এটি স্বাভাবিকভাবে চালু হতে পারবে বলে মনে হয়।
সমস্যা ৩
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 135
>>> 'slave-serve-stale-data yes'
Bad directive or wrong number of arguments
সমাধান: আমি বুঝতে পেরেছি যে এই ত্রুটিটি সাধারণত Redis এবং redis.conf ফাইলের সংস্করণের অমিলের কারণে ঘটে।
Redis ওয়েবসাইট থেকে আপনার Redis সংস্করণের জন্য কনফিগারেশন ফাইলটি বেছে নিন এবং সম্পূর্ণটি কপি-পেস্ট করুন।
সমস্যা ৪
Failed opening the RDB file dump.rdb (in server root dir /) for saving: Permission denied
6232:M 07 Jul 2023 03:56:39.182 # Background saving error
সমাধান: এটি বলছে 'dump.rdb ফাইল খোলা যাচ্ছে না~'।
এরকমই, যদি একটি পুরানো RDB ফাইল থেকে যায়, তাহলে এটি চালু হওয়ার পর মাঝপথে ক্র্যাশ করতে পারে। আমি প্রথমে ভেবেছিলাম এটি মেমরি সমস্যা, কিন্তু তা ছিল না।
এটি চালু হওয়ার পর, যখন আমি redis.conf-এ ক্যাশে গন্তব্য ফোল্ডার `Dir */~` পরিবর্তন করেছিলাম তখন এটি ঘটেছিল।
ক্যাশে ডিরেক্টরি পরিবর্তন করার পরেও এটি পুরানো ডিরেক্টরি থেকে পড়ার চেষ্টা করে বলে মনে হয়, তাই এটিকে জোর করে মুছে ফেলা যাক। আমারটি `/var/lib/redis/dump.rdb`-এ ছিল।
sudo rm /var/lib/redis/dump.rdb
এতে Redis-এর দিকের সমস্যাগুলি সমাধান হয়ে গেল।
Nextcloud দিক
root@hoge:~# sudo -u www-data php /var/www/html/nextcloud/occ maintenance:update:htaccess
.htaccess আপডেট করার সময় যা করতে হয়।
RedisException: Connection refused in /var/www/html/nextcloud/lib/private/RedisFactory.php:137
~~~~~
সমাধান: যদি ফাইল নামের সাথে এরকম অনেক ত্রুটি দেখা যায়, তাহলে এটি একটি ত্রুটি যা নির্দেশ করে যে Redis সঠিকভাবে কাজ করছে না, অথবা Nextcloud কনফিগারেশন ভুল এবং Redis-এর সাথে সংযোগ করতে পারছে না।
মূলত Redis এবং Nextcloud-এর php.config-কে সন্দেহ করুন।
আমার মনে হয় আরও কিছু ছিল, কিন্তু এইটুকুই ছিল বলে মনে করি।
এখন ভবিষ্যতে Redis নিয়ে কাজ করতে হলেও আমি আত্মবিশ্বাসী।
যাইহোক, আমি ভাবছি মেমরি ক্যাশে স্ট্যাক করলে কি গতি কমে যাবে? এটি কেমন হবে? যদি এটি একটি নির্দিষ্ট বিন্দু পর্যন্ত দ্রুত হয়, তাহলে যোগাযোগকারী সার্ভার বা ডিভাইসের প্রতিক্রিয়া গতি একটি বাধা হয়ে উঠতে পারে।
এটি এখনও অনাবিষ্কৃত অঞ্চল, তাই আমি এটির জন্য উন্মুখ।
আমি ক্লান্ত।
বিদায়।