অ্যামাজন এডব্লিউএস ইসি 2 মাইক্রো-ইনস্ট্যান্সে পাইথন সিজিআই - কীভাবে!


23

আপনি কীভাবে ইসি 2 মাইক্রো ইনস্ট্যান্সটি লাইটথটিপিডি থেকে সিজিআই স্ক্রিপ্টগুলি পরিবেশন করতে পারেন? উদাহরণস্বরূপ পাইথন সিজিআই?

ঠিক আছে, এটি অর্ধেক সময় নিয়েছে, তবে আমি পাইথন সিজি একটি নিখরচায় অ্যামাজন এডাব্লুএস ইসি 2 মাইক্রো-ইনস্ট্যান্টে চালিত করেছি, লাইটটিপিডি সার্ভারটি ব্যবহার করে। আমি মনে করি এটি আমার সহযোদ্ধাদের সমস্ত পদক্ষেপ এক জায়গায় রাখতে সহায়তা করবে। নীচের সরল পদক্ষেপে সজ্জিত, জিনিসগুলি সেট আপ করতে আপনার কেবল 15 মিনিট সময় লাগবে!

এটি পড়ার জন্য আরও অভিজ্ঞ ব্যবহারকারীদের জন্য আমার প্রশ্নটি: আমি যা করেছি তাতে কোনও সুরক্ষা ত্রুটি রয়েছে? (ফাইল এবং ডিরেক্টরি অনুমতি দেখুন।)

পদক্ষেপ 1: আপনার ইসি 2 উদাহরণটি শুরু করুন এবং এতে প্রবেশ করুন।

[স্পষ্টতই, আপনাকে অ্যামাজন ইসি 2 এর জন্য সাইন আপ করতে হবে এবং আপনার কীগুলি একটি * .পিএম ফাইলে সংরক্ষণ করতে হবে। আমি এটি অতিক্রম করব না, যেহেতু অ্যামাজন আপনাকে কীভাবে এটি করতে বলে]

  1. আপনার AWS অ্যাকাউন্টে সাইন ইন করুন এবং আপনার ইসি 2 উদাহরণটি শুরু করুন। ওয়েবে এটি করার বিষয়ে টিউটোরিয়াল রয়েছে। লক্ষ্য করুন যে অ্যামাজন আপনাকে ডিফল্ট উদাহরণস্বরূপ আকার দেয় "ছোট"। এটি "মাইক্রো" নয় এবং তাই এটি আপনার অর্থ ব্যয় করবে। ম্যানুয়ালি "মাইক্রো" চয়ন করতে ভুলবেন না। (মাইক্রো উদাহরণগুলি কেবল প্রথম বছরের জন্য বিনামূল্যে ...)

  2. আপনার চলমান উদাহরণের জন্য সর্বজনীন ডিএনএস কোড সন্ধান করুন। এটি করতে, ড্যাশবোর্ডের শীর্ষ ফলকের উদাহরণটি ক্লিক করুন এবং আপনি শেষ পর্যন্ত নীচের অংশে "জনসাধারণের ডিএনএস" ক্ষেত্রটি দেখবেন। (আপনাকে কিছুটা ভাটার দরকার পড়তে পারে)) সর্বজনীন ডিএনএস এর মতো দেখতে লাগে:
    ec2-174-129-110-23.compute-1.amazonaws.com

  3. আপনার ইউনিক্স কনসোল প্রোগ্রামটি শুরু করুন। (ম্যাক্স ওএস এক্সে, এটি টার্মিনাল বলা হয় এবং অ্যাপ্লিকেশন -> ইউটিলিটিস ফোল্ডারে থাকে)

  4. আপনার ডেস্কটপ সিস্টেমের ডিরেক্টরিতে সিডি করুন যাতে আপনার * .পিএম ফাইল রয়েছে যাতে আপনার এডাব্লুএস কীপাস থাকে।

  5. আপনার ইসি 2 উদাহরণে ssh করুন যেমন একটি কমান্ড ব্যবহার করে:
    ssh -i <<your *.pem filename>> ec2-user@<< Public DNS address >>

    সুতরাং, আমার জন্য, এটি ছিল:
    ssh -i amzn_ec2_keypair.pem ec2-user@ec2-174-129-110-23.compute-1.amazonaws.com

  6. আপনার ইসি 2 উদাহরণটি আপনাকে প্রবেশ করতে দেওয়া উচিত।

পদক্ষেপ 2: আপনার ইসি 2 ইভেন্টে লাইটটিপিডি ডাউনলোড করুন।

  1. লাইটটিপিডি ইনস্টল করতে আপনার ইসি 2 উদাহরণে রুট অ্যাক্সেসের প্রয়োজন হবে। সমস্যাটি হ'ল: আমাজন আপনাকে রুট হিসাবে সাইন ইন করতে দেয় না। (সোজাসাপ্টাভাবে নয়, কমপক্ষে)) তবে এখানে একটি কার্যনির্বাহী কাজ রয়েছে। এই আদেশটি টাইপ করুন:
    sudo /bin/bash

  2. সিস্টেম প্রম্পট-অক্ষরটি $ থেকে # এ পরিবর্তিত হবে। এই পুরো প্রক্রিয়াটির একেবারে শেষ ধাপ পর্যন্ত আমরা "সুডো" থেকে প্রস্থান করব না।

  3. লাইটটিপিডি অ্যাপ্লিকেশন ইনস্টল করুন (আমার জন্য সংস্করণ 1.4.28-1.3.amzn1):
    yum install lighttpd

  4. লাইটটিপিডির জন্য ফাস্টসিজিআই লাইব্রেরি ইনস্টল করুন (প্রয়োজন নেই, তবে কেন নয়?):
    yum install lighttpd-fastcgi

  5. আপনার সার্ভার কাজ করছে তা পরীক্ষা করুন:
    /etc/init.d/lighttpd start

পদক্ষেপ 3: বাইরের বিশ্বের আপনার সার্ভারটি দেখতে দিন।

  1. আপনি যদি এখন আপনার ডেস্কটপে ব্রাউজার থেকে আপনার সার্ভারটি হিট করার চেষ্টা করেন তবে এটি ব্যর্থ হবে। কারণ: ডিফল্টরূপে, অ্যামাজন এডাব্লুএস আপনার ইসি 2 উদাহরণে কোনও পোর্ট খুলবে না। সুতরাং, আপনাকে ম্যানুয়ালি পোর্টগুলি খুলতে হবে।

  2. আপনার ডেস্কটপের ব্রাউজারে আপনার ইসি 2 ড্যাশবোর্ডে যান। বাম ফলকে "সুরক্ষা গোষ্ঠী" এ ক্লিক করুন। এক বা একাধিক সুরক্ষা গোষ্ঠী উপরের ডানদিকে প্রদর্শিত হবে। আপনি যখন আপনার দৃষ্টান্তটি চালু করেছিলেন তখন আপনার ইসি 2 ইভেন্টের জন্য যেটি বরাদ্দ করা হয়েছিল সেটিকে বেছে নিন।

  3. নীচে ডান ফলকে "অনুমোদিত সংযোগগুলি" নামে একটি সারণী উপস্থিত হবে। একটি পপ-আপ মেনু আপনাকে সংযোগ পদ্ধতি হিসাবে "HTTP" চয়ন করতে দেয় let

  4. সারণির সেই লাইনের অন্যান্য মানগুলি হ'ল: টিসিপি, 80, 80, 0.0.0.0/0

  5. এখন আপনার ব্রাউজারের ডেস্কটপ থেকে আপনার ইসি ইনস্ট্যান্সের সার্ভারটি হিট করুন। আপনি এসএসএইচ-এর আগে যে পাবলিক ডিএনএস ঠিকানা ব্যবহার করেছিলেন সেগুলি ব্যবহার করুন You আপনার লাইটটিপিডি জেনেরিক ওয়েব পৃষ্ঠাটি দেখা উচিত। আপনি যদি তা না করেন তবে আমি আপনাকে সাহায্য করতে পারি না কারণ আমি এমন নুবহু। :-(

পদক্ষেপ 4: সিজিআই পরিবেশন করতে লাইটটিপিডি কনফিগার করুন।

  1. কনসোল প্রোগ্রামে ফিরে, সিডি হালকাটিপিডি জন্য কনফিগারেশন ডিরেক্টরিতে:
    cd /etc/lighttpd

  2. সিজিআই সক্ষম করতে, আপনি <মডিউল.কনফ> ফাইলে একটি লাইনকে নিয়ন্ত্রণ করতে চান। (আমি দ্রুত সিজিআই সক্ষম করতে পারতাম, তবে শিশুর ধাপগুলি সর্বোত্তম!) আপনি "এড" সম্পাদক সহ নিম্নলিখিতটি করতে পারেন:
    ed modules.conf
    /include "conf.d\/cgi.conf"/
    s/#//
    w
    q

  3. ডিরেক্টরি তৈরি করুন যেখানে সিজিআই প্রোগ্রাম থাকবে। (/Etc/lighttpd/lighttpd.conf ফাইলটি এটি কোথায় হবে তা নির্ধারণ করে)) আমরা আমাদের ডিরেক্টরিটি ডিফল্ট স্থানে তৈরি করব, সুতরাং আমাদের কনফিগারেশন ফাইলগুলির কোনও সম্পাদনা করতে হবে না:
    cd /var/www/lighttpd
    mkdir cgi-bin
    chmod 755 cgi-bin

  4. প্রায় সেখানে! অবশ্যই আপনাকে সিজি-বিন ডিরেক্টরিতে একটি পরীক্ষা সিজিআই প্রোগ্রাম রাখা দরকার। এখানে একটি:
    cd cgi-bin
    ed
    a
    #!/usr/bin/python
    print "Content-type: text/html\n\n"
    print "<html><body>Hello, pyworld.</body></html>"
    .
    w hellopyworld.py
    q
    chmod 655 hellopyworld.py

  5. আপনার লাইটটিপিডি সার্ভারটি পুনরায় চালু করুন:
    /etc/init.d/lighttpd restart

  6. আপনার সিজিআই প্রোগ্রাম পরীক্ষা করুন। আপনার ডেস্কটপের ব্রাউজারে, আপনার ইসি 2 উদাহরণের সার্বজনীন ডিএনএস ঠিকানা স্থিত করে এই URL টি টিপুন:
    http://<<Public DNS>>/cgi-bin/hellopyworld.py

    আমার জন্য, এটি ছিল:
    http://ec2-174-129-110-23.compute-1.amazonaws.com/cgi-bin/hellopyworld.py

পদক্ষেপ 5: এটি! পরিষ্কার করুন, এবং ধন্যবাদ!

  • পূর্বে প্রদত্ত "sudo / bin / bash" কমান্ড থেকে প্রস্থান করতে টাইপ করুন:
    exit

  • স্বীকৃতি: ধন্যবাদ এর স্তূপ:

    wiki.vpslink.com/Install_and_Configure_lighttpd

    www.cyberciti.biz/tips/lighttpd-howto-setup-cgi-bin-access-for-perl-programs.html

    aws.typepad.com/aws/2010/06/building-three-tier-architectures-with-security-groups.html

  • শুভকামনা, অ্যামিগোস! আমি এই "প্রশ্ন" এর অপ্রচলিত প্রকৃতির জন্য ক্ষমা চাইছি কিন্তু স্ট্যাকওভারফ্লো থেকে আমি এতটা সহায়তা পেয়েছি যে আমি কিছু ফিরিয়ে দিতে আগ্রহী।


4
আমি গাইড পোস্ট করার জন্য আপনাকে সাধুবাদ জানাই, তবে এসও প্রশ্ন জিজ্ঞাসা করার জন্য। আমি এর জন্য ব্লগস্পট বা অনুরূপ কিছু সুপারিশ করব। আপনি যদি ফেরত দিতে আগ্রহী হন, আপনার প্রশ্নের উত্তর দেওয়া উচিত :)

আমি জমা দিয়েছি যে কোনও "কীভাবে" একটি অন্তর্ভুক্ত প্রশ্ন রয়েছে, অর্থাত "আমি কীভাবে এক্স করব?" ভবিষ্যতে আমি প্রশ্নটি স্পষ্টভাবে জানাব, যদিও এটি প্রাথমিকভাবে পেডেন্ট্রিগুলির মতো মনে হয়েছিল। তবে, কারণ এটি অনুসন্ধান ইঞ্জিনগুলিকে সহায়তা করতে এবং পাঠকদের ক্ষেত্রে বিভ্রান্তি এড়াতে পারে, এখন আমি মনে করি এটি সার্থক। ধন্যবাদ।

কোনও নতুন সদস্যের কাছ থেকে এই জাতীয় পদ্ধতি কীভাবে পোস্ট করা যায় তা অত্যন্ত করুণ। যাইহোক, এটি এমন প্রশ্নের উত্তর দেয় যা এখনও জিজ্ঞাসা করা হয়নি। যাইহোক, এটি আমাকে কিছু দিন আগে আমার প্রয়োজনীয় তথ্য দেয়, এখন আমি এই ধরণের পরিষেবাটির অস্তিত্ব জানি। যাইহোক, এমন সময়ে যেখানে কেউ ক্লাউড সম্পর্কে প্রচুর কথা বলেন, এই পোস্টটি প্রচুর লোকের পক্ষে খুব কার্যকর হতে পারে। সুতরাং তিনি নিরুৎসাহিত হওয়ার যোগ্য নন, এবং আমি উজ্জীবিত হই।

@ user595585 অনুমোদিত অনুশীলনটি হল "আমি কীভাবে" একটি প্রশ্ন জিজ্ঞাসা করা এবং এটির উত্তর নিজেরাই দেওয়া। এমনকি আপনার সমস্যার জন্য আপনি আরও খ্যাতি পান। দয়া করে দেখুন প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী । "আপনার নিজের প্রশ্ন জিজ্ঞাসা করা এবং জবাব দেওয়া পুরোপুরি ঠিক আছে, যতক্ষণ না আপনি ঝুঁকি নিয়ে ভান করছেন: প্রশ্নের আকারে এটিকে বাক্যাংশ করুন।"
সি রস

3
@user সম্পাদনা আপনার প্রশ্নের তাই এটি হল একটি প্রশ্ন, তাহলে এটি সব বিস্তারিত আপনার দেওয়া সঙ্গে উত্তর দিন। এছাড়াও, এই কয়েকজন পেরেনকে ফেলে দিন, আপনি লিস্প নয়, ইসি 2 তে পাইথন হোস্টিংয়ের কথা বলছেন।
ছড়িয়ে ছিটিয়ে

উত্তর:


3

(অদ্ভুত পোস্ট, সুতরাং আশা করি এটি উত্তর হিসাবে অতটা অদ্ভুত হবে না)

সুরক্ষা ত্রুটি সম্পর্কিত বিষয়: ওয়েব সার্ভারের নথির মূলের মধ্যে সিজি-বিন স্ক্রিপ্ট সংরক্ষণ করা সাধারণ খারাপ অভ্যাস হিসাবে বিবেচিত হয়। এমনকি ডাব্লু 3 সি তাদের ওয়ার্ল্ড ওয়াইড ওয়েব সুরক্ষা FAQ- এ "নিরাপদ ... এর মতো সংকলিত ভাষাগুলি অন্তর্ভুক্ত করেছে :

নিম্নলিখিত পরিস্থিতি বিবেচনা করুন। সুবিধার জন্য, আপনি .cgi এক্সটেনশন ব্যবহার করে সার্ভারের সিজিআই স্ক্রিপ্টগুলি সনাক্ত করার সিদ্ধান্ত নিয়েছেন। পরবর্তীতে, আপনাকে একটি ব্যাখ্যামূলক সিজিআই স্ক্রিপ্টে একটি ছোট পরিবর্তন করতে হবে। আপনি এটি ইম্যাক্স পাঠ্য সম্পাদক দিয়ে খুলুন এবং স্ক্রিপ্টটি সংশোধন করুন। দুর্ভাগ্যক্রমে সম্পাদনাটি ডকুমেন্ট ট্রিতে থাকা স্ক্রিপ্ট উত্স কোডের একটি ব্যাকআপ কপি রাখে। যদিও প্রত্যন্ত ব্যবহারকারী নিজেই স্ক্রিপ্টটি আনার মাধ্যমে উত্স কোডটি অর্জন করতে পারে না, তবে তিনি এখন অন্ধভাবে URL টি অনুরোধ করে ব্যাকআপ অনুলিপিটি পেতে পারেন:

    http://your-site/a/path/your_script.cgi~

(সিজিআই স্ক্রিপ্টগুলি সিজি-বিনের মধ্যে সীমাবদ্ধ করার এবং সিজি-বিন নথির মূল থেকে পৃথক কিনা তা নিশ্চিত করার জন্য এটি আরেকটি ভাল কারণ))

এটি নথির মূলের মধ্যে কোনও ফাইল লেখার ক্ষমতা হিসাবে তাত্পর্যপূর্ণ তাত্পর্যপূর্ণ নয়। তবে, একজন আক্রমণকারী সিগির সোর্স কোডটি পেতে পারে, এর বিরুদ্ধে নির্দেশিত আক্রমণ তৈরি করতে পারে এবং এটি সার্ভারে একটি পদক্ষেপ হিসাবে ব্যবহার করতে পারে।

এটি প্রশমিত করার জন্য, আপনি সিটি-বিনকে / var / www / লাইটটিপিডি ডকুমেন্টের মূল থেকে পৃথক ডিরেক্টরিতে সরাসরি ডিরেক্টরিতে lighttpd.conf (অথবা এতে কিছু পরিবর্তন) যুক্ত করতে নিম্নলিখিত লাইনগুলি যুক্ত করতে পারেন।

$HTTP["url"] =~ "/cgi-bin/" { cgi.assign = ( "" => "" ) }
alias.url = ( "/cgi-bin/" => "/usr/lib/cgi-bin/" )

এর জন্য লাইটটিপিডির জন্য সিজি এবং উরফ মডিউল উভয়ই প্রয়োজন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.