PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : وردپرس و سایت های شخصی خود را با ۱۲۸ مگابایت رم میزبانی کنید !



P30Tools
April 30th, 2012, 04:24
چند وقت پیش در یکی از انجمن های فارسی زبان بحثی در جریان بود ( البته مثل همیشه خارج از موضوع تاپیک ) در مورد اینکه برای میزبانی وبسایت های شخصی روی سرور مجازی چه مقدار منابع احتیاج داریم ، صحبت هایی بعضی از افراد به نظرم خیلی جالب میومد که عینا براتون نقل قول میکنم :



- رو VPS سایت بیاریم بالا!؟
طرف از جونش سیر شده مگه؟!
- برای سایت حداقل باید ۵۱۲ مگابایت رم داشته باشی ، تازه اگه رمی که خود ویندوز استفاده میکنه رو در نظر نگیریم.
- من فکر نمیکنم با ۱۲۸ مگابایت اصلا امکان داشته باشه هیچ سایتی رو بتونی روی این سرور بالا بیاری ! مگه اینکه روزی یه نفر بازدید کننده داشته باشی !




جدای از بحث فنی و سطح اطلاعات افرادی که نظر داده بودند ، دوست دارم امتحان کنم که بایک سرور مجازی با ۱۲۸ مگابایت رم ، چند سایت و با چه مقدار بازدید در روز رو میشه میزبانی کرد.شاید برای خیلی از افراد خرید هاست اشتراکی و میزبانی وبسایتشون ساده ترین و بهترین راه باشه ، اما برای افرادی که دوست دارن سرور خودشون رو داشته باشن و در عین میزبانی وبسایتشون با دسترسی به خط فرمان لینوکس (‌ Shell ) استفاده های دیگه ای از VPS شون بکنن ، این یک آزمایش جالب خواهد بود. حتی در حالی که با قیمت کمتر ۲۵۰۰۰ تومان در ماه میشه یک VPS خوب با ۵۱۲ مگابایت رم داشت ، این موضوع بی اهمیت به نظر برسه اما با هم میبینم که یک سرور مجازی با ۱۲۸ مگابایت رم هم میتونه میزبان خوبی برای سایت های شخصی خودتون و مشتری هاتون باشه !

http://serverhelp.ir/wp-content/uploads/2012/04/with-128mb-ram-host-wordpress.jpg (http://serverhelp.ir/wp-content/uploads/2012/04/with-128mb-ram-host-wordpress.jpg)




کنترل پنل

ساده ترین ( و کم هزینه ترین ) روش میتونه استفاده از کنترل پنل Kloxo برای میزبانی وبسایت های روی سیستم عامل لینوکس باشه ، اما Kloxo برای نصب به حداقل ۲۵۶ مگابایت رم نیاز داره (‌به نقل از وبسایت رسمی ) درسته که بعد از نصب میشه Kloxo رو میتونیم طوری تنظیم کرد که مصرف رم بین ۳۰~۵۰ مگابایت رم داشته باشه اما متاسفانه با این مقدار رم نمیتونیم از مراحل نصب Kloxo عبور کنیم. ( البته در صورت استفاده از OS Template ه HostInABox میشه اما این موضوع امروز ما نخواهد بود )
کنترل پنل های دیگه مثل Cpanel و DirectAdmin به رم بالاتری نیاز دارن و Webmin هم بدلیل استفاده از آپاچی به عنوان وب سرور انتخاب خوبی نخواهد بود.


وب سرور

بطور قطع و یقین آپاچی انتخاب ما نخواهد بود :) بدلیل اینکه آپاچی همین میزان کم و گرانبهای رم ما رو هم به شکل نا مناسبی مشغول میکنه. Lighttpd یکی از سبک ترین وبسرور های موجود میتونه انتخاب خوبی برای اینکار باشه ، اما من ترجیح میدم برای اینکار از وب سرور مورد علاقه خودم ، یعنی Nginx ( که engine x تلفظ میشه ) استفاده کنیم. Nginx وب سرور سبک ، قدرتمند و نیرودهنده بسیاری از وبسایت های پربازدید امروزی هستش.


راه اندازی VPS

من برای اینکار از CentOS 5.7 به عنوان سیستم عامل استفاده خواهم کرد ، Debian و Ubuntu هم بدلیل مصرف رم کمتر نسبت به CentOS گزینه های خوبی میتونن باشن ولی ما این آموزش رو با CentOS انجام خواهیم داد.
خب ، بزارین میزان مموری و مشخصات CPU رو چک کنیم :

http://serverhelp.ir/wp-content/uploads/2012/04/ram-cpuinfo.jpg (http://serverhelp.ir/wp-content/uploads/2012/04/ram-cpuinfo.jpg)


یک هسته از پردازنده قدرتمند Xeon 1230 کاملا خیالمون رو از بابت CPU Power راحت میکنه و ۱۶ مگابایت رم خالی ! بزارید ببنیم که کدوم یکی از سرویس ها رم مارو مشغول کردن ، برای این کار پیشنهاد من نصب بسته htop هستش که قبلا راجع بهش صحبت کرده بودیم (http://serverhelp.ir/1390/11/%d9%85%d8%b4%d8%a7%d9%87%d8%af%d9%87-%d9%88-%d8%a8%d8%b1%d8%b1%d8%b3%db%8c-%d8%a8%d9%87%d8%aa%d8%b1-%d9%88%d8%b6%d8%b9%db%8c%d8%aa-%d9%be%d8%b1%d8%af%d8%a7%d8%b2%d8%b4-%d9%87%d8%a7-%d8%af%d8%b1-shell/) ، اما این بار نه از طریق Yum :


wget http://pkgs.repoforge.org/htop/htop-1.0.1-2.el5.rf.i386.rpm
rpm -Uvh htop-1.0.1-2.el5.rf.i386.rpm

خب حالا htop رو اجرا میکنیم تا ببینیم کدوم یکی از پردازش ها بیشترین مقدار مصرف حافظه رو دارن :‌

http://serverhelp.ir/wp-content/uploads/2012/04/htop.jpg (http://serverhelp.ir/wp-content/uploads/2012/04/htop.jpg)


خب daemon ه restorecond که مربوط به SELinux هستش ۸.۵٪ از میزان رم مارو مشعول کرده ، پس مرحله بعدی کارما غیر فعال کردن SELinux (http://serverhelp.ir/1390/11/selinux-%da%86%db%8c%d8%b3%d8%aa-%d9%88-%da%86%da%af%d9%88%d9%86%d9%87-%d8%a2%d9%86%d8%b1%d8%a7-%d8%ba%db%8c%d8%b1-%d9%81%d8%b9%d8%a7%d9%84-%da%a9%d9%86%db%8c%d9%85-%d8%9f/) هستش . بعد از اینکار دوباره با htop وضعیت پردازش ها رو چک میکنیم :

http://serverhelp.ir/wp-content/uploads/2012/04/htop-after-selinux.jpg (http://serverhelp.ir/wp-content/uploads/2012/04/htop-after-selinux.jpg)

همونطور که میبینیم daemonی بنام yum-updatesd مقدار زیادی از رم مارو مشغول کرده ، وظیفه این daemon این هست که بطور خودکار yum رو چک میکنه برای update های جدید و در صورت وجود به ما اطلاع میده.خب ! پس اگه خودمون هر چند وقت یکبار با اجرای yum update بروز رسانی های جدید رو انجام بدیم ، نیازی به این سرویس نخواهیم داشت و مقداری از رم رو هم آزاد میکنیم ، برای این کار ابتدا این daemon رو stop میکنیم و بعد از لیست برنامه هایی که بصورت خودکار با بالا اومدن سیستم عامل اجرا میشن حذفش میکنیم :



service yum-updatesd stop
chkconfig yum-updatesd off

و در نهایت با حذف این ۲ سرویس موفق شدیم میزان رم مصرفی سیستم عامل رو در حالت عادی به ۲6 مگابایت برسونیم ! و حدودا ۱۰۰ مگابایت رم خالی برای اجرای سرویس های nginx , MySQL و php کنار بزاریم.نتیجه کار کاملا رضایت بخشه.


نصب سرویس های مورد نیاز

برای شروع با استفاده از yum چک میکنیم که آیا نسخه ای از apache, MySQL و یا php نصب شده و در صورت وجود اون رو حذف میکنیم :


yum -y remove httpd php mysql

و مخزن مربوط به nginx رو نصب میکنیم :


rpm -Uvh http://nginx.org/packages/rhel/5/noarch/RPMS/nginx-release-rhel-5-0.el5.ngx.noarch.rpm

همینطور مخزن webtatic رو به yum اضافه میکنیم ، این مخزن به ما اجازه نصب آخرین نسخه php و mysql رو میده :


rpm -Uvh rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm

و در نهایت PHP , NGINX و MySQL رو نصب میکنیم :


yum -y --enablerepo=webtatic install mysql55-server php-fpm php-mysql php-gd nginx

خب ، برای مدیریت بهتر منابع بهتره کمی تغییرات در تنظیمات MySQL بدیم که اون رو برای این میزان رم بهینه کنیم :


cat > /etc/my.cnf <<END
[mysqld]
default-storage-engine = myisam
key_buffer = 1M
query_cache_size = 1M
query_cache_limit = 128k
max_connections=25
thread_cache=1
skip-innodb
query_cache_min_res_unit=0
tmp_table_size = 1M
max_heap_table_size = 1M
table_cache=256
concurrent_insert=2
max_allowed_packet = 1M
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
END

و حالا نوبت به تنظیمات مربوط به nginx و php میرسه ،


cat > /etc/nginx/php <<END
index index.php index.html index.htm;
location ~ \.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
try_files \$uri =404;
fastcgi_pass 127.0.0.1:9000;
error_page 404 /404page.html; #makes nginx return it's default 404
# page instead of a blank page
}
END

و در نهایت تنظیمات دلخواه من برای nginx ، میتونید از تنظیمات زیر استفاده کنید و یا از تنظیمات پیشفرض خود nginx بهره ببرید.


cat > /etc/nginx/nginx.conf <<END
user nginx nginx;
worker_processes 1;
worker_rlimit_nofile 30000;
pid /var/run/nginx.pid;
events {
worker_connections 5120;
}
http {
include mime.types;
default_type application/octet-stream;
client_max_body_size 64M;
sendfile on;
tcp_nopush on;
keepalive_timeout 3;
gzip on;
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
server_tokens off;
include /etc/nginx/conf.d/*;
}
END

خب برای ادامه کار نیاز داریم که User ی برای PHP در سیستم اضافه کنیم ، تنظیمات پیشفرض nginx رو حذف کنیم و دایرکتوری Log ی که برای nginx مشخص کردیم رو بسازیم ، بعد از این کار ها nginx رو restart میکنیم تا تنظیمات جدید رو بخونه‌ ، دستورات زیر رو تک به تک اجرا کنید :


useradd php
rm /etc/nginx/conf.d/*
mkdir /usr/share/nginx/logs/
service nginx restart
chkconfig nginx on
chkconfig mysqld on

و تنظیمات پیشفرض برای Vhost های nginx رو با دستور زیر ایجاد کنید.

cat > /etc/nginx/conf.d/default.conf <<END
server {
listen 80 default;
server_name _;
root /home/www/html;
include php;
}
END

تنظیمات PHP-FPM رو با دستور زیر ذخیره کنید :


rm -f /etc/php-fpm.d/www.conf
wget http://serverhelp.ir/wp-content/uploads/2012/04/php-fpm.txt -O /etc/php-fpm.d/www.conf

بیشتر تنظیمات تا اینجا انجام شدن و فقط لازمه دایرکتوری هایی که قراره فایلهامون توش قرار بگیره رو بسازیم و سرویس ها رو اجرا کنیم :


mkdir /home/www
mkdir /home/www/html/
service php-fpm start
chkconfig php-fpm on
chkconfig mysqld on
service mysqld start

و کلمه عبور root ه MySQL رو با دستور زیر مشخص کنید ( برای سوال اول enter رو بزنید و ترحیجا بقیه سوالات رو با Y جواب بدین )


/usr/bin/mysql_secure_installation

در نهایت میتونید از exim بجای sendmail استفاده کنید :


yum -y remove sendmail
yum -y install exim

و همینطور افزونه APC رو برای افزایش بهره وری PHP نصب کنید :‌


yum -y install php-pecl-apc --enablerepo=webtatic

درسته که کمی طول کشید ولی نتیجه کار کاملا رضایت بخشه !

http://serverhelp.ir/wp-content/uploads/2012/04/phpinfo.jpg (http://serverhelp.ir/wp-content/uploads/2012/04/phpinfo.jpg)


خب همونطور که قبلا گفته بودیم میخوایم از این سرویس برای میزبانی نه فقط یک سایت بلکه چندین سایت استفاده کنیم ، با استفاده از اسکریپت زیر میتونیم براحتی تنظیمات مربوط به هر Virtual Host جدید رو انجام بدیم :


wget http://serverhelp.ir/wp-content/uploads/2012/04/vhost1.txt -O /bin/vhost
chmod 755 /bin/vhost

حالا با استفاده از دستور vhost میتونید سایت های خودتون رو به nginx اضافه کنید ، برای مثال :


vhost serverhelp.ir



حالا آخرین نسخه وردپرس فارسی رو از سایتش دانلود میکنم و نصبش میکنم :


wget http://fa.wordpress.org/wordpress-3.3.2-fa_IR.tar.gz
tar xvf wordpress-3.3.2-fa_IR.tar.gz



http://serverhelp.ir/wp-content/uploads/2012/04/wordpress-on-nginx-128mb-1024x640.jpg (http://serverhelp.ir/wp-content/uploads/2012/04/wordpress-on-nginx-128mb.jpg)




اینم از وردپرس ! بزارین ببینم چقدر رم مصرف کردیم ، درست در زمان اجرا و لود وردپرس این میزان به ۳۵ مگابایت میرسه !




http://serverhelp.ir/wp-content/uploads/2012/04/wp-runs.jpg (http://serverhelp.ir/wp-content/uploads/2012/04/wp-runs.jpg)


خیلی خوبه ! فراموش نکنید وردپرس میزان زیادی از حافظه رو مصرف میکنه !خوب حالا وقتشه که سرور رو تحت فشار قرار بدیم تا بازدهیش رو ببینیم :

ab -n 100 -c 2 -g nginx-1.txt http://localhost/wordpress/
ab -n 100 -c 5 -g nginx-2.txt http://localhost/wordpress/
ab -k -n 100 -c 5 -g nginx-3.txt http://localhost/wordpress/



http://serverhelp.ir/wp-content/uploads/2012/04/ab-stress-test-nginx.jpg (http://serverhelp.ir/wp-content/uploads/2012/04/ab-stress-test-nginx.jpg)


و این هم گرافی که از خروجی Apache Benchmark بدست اوردم :


http://serverhelp.ir/wp-content/uploads/2012/04/benchmark1.png (http://serverhelp.ir/wp-content/uploads/2012/04/benchmark1.png)


نتیجه بسیار جالب و رضایت بخشه ! با ۱۲۸ مگابایت رم موفق شدیم تا ۵ درخواست همزمان رو به خوبی و در زمان مناسب پردازش کنیم . حتی با اینکه برای این تست از وردپرس استفاده کردیم و وردپرس میزان رم و پردازش زیادی از سرور رو مشغول میکنه باز هم حدود ۴۰ مگابایت رم خالی روی VPS داشتیم. با یک حساب ساده میشه حدس زد که میتونیم یک سایت وردپرس با بازدیدی حدود ۴-۵ هزار نفر در روز رو با این VPS تقریبا بدون اینکه مشکلی بوجود بیاد میزبانی کنیم ! خیلی عالیه !در بسیاری از موارد سایت های شخصی و یا صنفی (‌رستوران ها ،‌ آتلیه های عکاسی و ... ) از فایل های استاتیک و یا فلش تشکیل میشن و یا حتی در مورد بیشتر شرکت ها که سایت های داینامیک دارند بدلیل نوع فعالیت وبسایتشون بازدید های روزانه شون به سختی به بالای ۳۰۰ نفر در روز میرسه . اگر شما یک طراح یا برنامه نویس وب هستید براحتی میتونید تمامی سایت های مشتریان خودتون رو روی VPS شخصی خودتون میزبانی کنید و هم کنترل بهتری روی این وبسایت ها داشته باشید و هم کمی درآمد اضافی کسب کنید :) یا چه تفریحی بهتر از اینکه وبلاگ شخصی تون روی سروری خودتون Config کردین بالا بیارین و در کنارش از دسترسی root هم استفاده کنید ؟‌در این نوشته فقط قصد داشتیم ثابت کنیم که با ۱۲۸ مگابایت رم هم وبسایت های زیادی رو میشه میزبانی کرد و بر خلاف تصور عام این مقدار حافظه نه تنها کم نیست ، بلکه برای خیلی سایت ها کافی هم هست. و در نهایت میتونیم تصور کنیم با ۲۵۶ مگابایت و ۵۱۲ مگابایت و بالاتر حافظه چه مقدار بازدید و چه تعداد وبسایت رو میتونیم میزبانی کنیم.

نکته آخرنه نگران نباشید ، DNS سرور رو فراموش نکردیم. اگر قصد دارید تا کمتر از ۱۰ دامنه رو میزبانی کنید ، میتونید از خدمات رایگان Point (https://pointhq.com/) استفاده کنید و خودتون رو درگیر تنظیمات DNS سرور نکنید. در غیر این صورت پیشنهاد من DNS Server سبک و جمع و جوری مثل MaraDNS هستش. »» نصب و راه اندازی MaraDNS (http://serverhelp.ir/1391/02/maradns-%D8%AC%D8%A7%DB%8C%DA%AF%D8%B2%DB%8C%D9%86-%D8%B3%D8%A8%DA%A9-%D9%88-%D9%85%D9%86%D8%A7%D8%B3%D8%A8-%D8%A8%D8%B1%D8%A7%DB%8C-bind/)


منبع : راهنمای سرور (http://serverhelp.ir/)

مقاله ها کاملا اختصاصی هستند و توسط گروه ما نوشته و یا ترجمه شده اند.

AriyaDownload
April 30th, 2012, 11:17
ممنونم از اموزش خوبتون
بسیار عالی هست
فقط ببخشید الان من اگه یک وی پی اس بگیریم می تونم با این آموزش ها کاملا یک وی پی اس رو کانفیگ و راه اندازی کنم؟

P30Tools
April 30th, 2012, 11:38
سلام
خواهش میکنم.
بله!,این مقاله فقط آموزش نیست,همونطور که می بینید نتایج و آزمایشی که روی یکی از سرورهای مجازی خودمون انجام دادیم به صورت عکس در آموزش گنجانده شده است.
مقالات و آموزش هایی زیادی در حال آماده سازی هست که به زودی بر روی سایت قرار خواهد گرفت.

srsh
April 30th, 2012, 14:52
به جز وردپرس،جومیلا مصرف رم کمتره یا بیشتر؟

P30Tools
April 30th, 2012, 16:58
سلام
راستش تجربه کار با جوملا رو نداشتم.یعنی استفاده شده ولی به اون صورت تست و بررسی انجام نشده.
ولی حدس من این هست که کمتر از وردپرس منابع اشغال خواهد کرد.(به طور نرمال و خام منظورم هست)
دوستانی که با دو سیستم کار کردند و مقایسه کردند باید نظر بدن.

30tGame
April 30th, 2012, 17:36
الان روی این سرور هیچ کنترل پنلی نصب نیست درسته ؟ مثل سی پنل یا دایرکت ادمین
میشه با پنل دایرکت ادمین کانفیگی انجام داد که حالا بجای 128 مگابایت رم مثلا با 512 مگ رم در ثانیه 100 آنلاین داشته باشیم

P30Tools
May 1st, 2012, 03:44
سلام
بله!
100 یوزر آنلاین همزمان مقدار زیادی هست,دایرکت ادمین هم از nginx پشتیبانی میکنه و میشه مصرف رو تا حد زیادی کاهش داد,ولی خوب قطعا به طور دقیق نمیشه تعداد رو مشخص کرد. به موارد زیادی بستگی داره.
برای رم بالاتر از 128 , پنل کلوکسو + وب سرور LIGHTTPD هم درکنار هم بازدهی خوبی دارند.

okey
May 5th, 2012, 10:19
سلام . برا هاست اشتراکی روی دایرکت ادمین پیشنهاد میشه از Nginx استفاده بشه ؟ از پلاگین DANginix
استفاده می کنیم ولی سرعت و قدرت مطلوب رو نداره ...
همین طور در آموزش بالا میشه بگین چه طوری FTP و Mail هم در کنارش بیاریم بالا ؟

---------- Post added at 10:19 AM ---------- Previous post was at 09:39 AM ----------

میشه از crontab استفاده کرد ؟ میشه از ساب دامنه استفاده کرد ؟

rn4j1m1
May 5th, 2012, 10:35
سلام . برا هاست اشتراکی روی دایرکت ادمین پیشنهاد میشه از Nginx استفاده بشه ؟ از پلاگین DANginix
استفاده می کنیم ولی سرعت و قدرت مطلوب رو نداره ...
همین طور در آموزش بالا میشه بگین چه طوری FTP و Mail هم در کنارش بیاریم بالا ؟

---------- Post added at 10:19 AM ---------- Previous post was at 09:39 AM ----------

میشه از crontab استفاده کرد ؟ میشه از ساب دامنه استفاده کرد ؟

nginx به صورت دیفالت htaccess حالیش نمیشه ، پس همینجوری نمیشه از nginx برای هاستینگ اشتراکی استفاده کرد
برای ftp میتونید pureftpd نصب کنید ، برای mail هم exim
cron ربطی به وب سرور ایناها نداره ، یه سرویس هست که صورت دیفالت روی CentOS نصب هست
کلا اگه بخاین بیشتر از یک دومین استفاده کنید باید dns سرور (مثل bind) نصب کنید یا میتونید از dns سرور های عمومی استفاده کنید

okey
May 5th, 2012, 10:58
روی یه سرور با رم 512 یه سایت ورد پرس رو میشه در هر دقیقه چند بازدید رو به خوبی جواب بده ؟
آیا قواعد مشخصی هست که با nginx هر نفر آنلاین مثلا چقدر رم و سی پی یو مصرف می کنه ؟

DANG3R
May 14th, 2012, 01:24
ممنون

بسیار عالی بود.

با اینکه nginx و این مواردو طبق آموزش نصب کردم ولی متاسفانه این دایرکتوری‌ها رو نتونستم بهشون دسترسی داشته باشم


/etc/nginx/nginx.conf
/etc/nginx/php
....


راه حل چیست؟ :)

PartWeb
May 16th, 2012, 11:50
ممنون

بسیار عالی بود.

با اینکه nginx و این مواردو طبق آموزش نصب کردم ولی متاسفانه این دایرکتوری‌ها رو نتونستم بهشون دسترسی داشته باشم


/etc/nginx/nginx.conf
/etc/nginx/php
....


راه حل چیست؟ :)

nginx نصب و start شد ؟

یعنی دایرکتوری هایی که نوشتین ایجاد نشدن ؟ یا به اررور خاصی موقع دسترسی بهشون بر میخورین ؟

سیستم عاملتون هم centos هستش ؟