<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>یادداشتهای بیت نیمسوز &#187; آپاچی</title>
	<atom:link href="http://cyberrabbits.net/tag/apache-fa/feed/" rel="self" type="application/rss+xml" />
	<link>http://cyberrabbits.net</link>
	<description>یک وبلاگ دیگر از یک برنامه نویس دیگر</description>
	<lastBuildDate>Thu, 17 May 2012 06:58:08 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>دو نکته برای بالا بردن سرعت &#8211; آپاچی</title>
		<link>http://cyberrabbits.net/799/apache-speed-up-tips/</link>
		<comments>http://cyberrabbits.net/799/apache-speed-up-tips/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 19:50:31 +0000</pubDate>
		<dc:creator>فرود</dc:creator>
				<category><![CDATA[آپاچی]]></category>
		<category><![CDATA[فوت کوزه گری]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[webserver]]></category>
		<category><![CDATA[وب سرور]]></category>

		<guid isPermaLink="false">http://cyberrabbits.net/?p=799</guid>
		<description><![CDATA[از نکاتی که پیشنهاد میشه برای بالا بردن سرعت یه سایت این دو مساله سادست: ۱- اضافه کردن Expire Header به فایلها، و خصوصا یک زمان دور برای فایلهای استاتیک، مثلا عکسها و فایلهای css و جاوااسکریپت. البته بد نیست برای فایلهای php و html هم این زمان رو تعیین کنیم ولی نه چندان دور.&#8230;
پستهای مرتبط :<ol>
<li><a href='http://cyberrabbits.net/43/vhosts/' rel='bookmark' title='هاست مجازی بر روی آپاچی'>هاست مجازی بر روی آپاچی</a> <small>خیلی پیش می آید که ما نیاز به چند آدرس...</small></li>
<li><a href='http://cyberrabbits.net/564/a-small-tip-in-php/' rel='bookmark' title='یه نکته کوچک در PHP'>یه نکته کوچک در PHP</a> <small>همونطور که میدونید توی PHP برای اپراتور OR دو نسخه...</small></li>
<li><a href='http://cyberrabbits.net/585/php-simple-note/' rel='bookmark' title='بازم یک نکته کوچک تو PHP'>بازم یک نکته کوچک تو PHP</a> <small>یکی از مشکلاتی که برنامه نویسهای تازه کار با اون...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>از نکاتی که پیشنهاد میشه برای بالا بردن سرعت یه سایت این دو مساله سادست:<br />
۱-<a href="http://developer.yahoo.com/performance/rules.html#expires"> اضافه کردن Expire Header به فایلها</a>، و خصوصا یک زمان دور برای فایلهای استاتیک، مثلا عکسها و فایلهای css و جاوااسکریپت. البته بد نیست برای فایلهای php و html هم این زمان رو تعیین کنیم ولی نه چندان دور.<br />
۲-<a href="http://developer.yahoo.com/performance/rules.html#gzip"> کمپرس کردن فایلهای متنی با متد gzip </a>و فرستادن اونها به کلاینت به جای ارسال محتوای فشرده نشده.</p>
<p>برای هر دو در خود PHP امکاناتی هست، ولی مشکلاتی هم هست. این امکانات که در PHP هستن، طبیعیه که فقط برای فایلهای PHP کار میکنن نه مثلا فایلهای CSS یا JS که اونها مهمترن برای اینکار. یعنی شما میتونید با دستور header استفاده کنید برای ویرایش http header و از تنظیمات PHP هم gzip رو فعال کنید، ولی این فقط برای فایلهایی که PHP پردازش میکنه اعمال میشن نه همه فایلها.<br />
اینجا آپاچی میتونه خیلی کمک کنه. برای اینکار باید دو ماژول معروف‌آپاچی رو نصب کنید.<br />
<span id="more-799"></span><br />
<a href="http://httpd.apache.org/docs/2.0/mod/mod_headers.html"><strong>mod_headers</strong></a><br />
این ماژول، به شما اجازه میده به راحتی Http Header مربوط به یک فایل رو (و در کل تمام پاسخها رو) ویرایش کنید. اول مطمئن بشید روی سرورتون نصبه. بسته به نسخه مورد استفاده شما، میتونید با دستور :</p>
<pre class="brush: plain; title: ; notranslate">
apache2ctl -l
</pre>
<p>یا دستورات مشابه، لیست ماژولهای نصب شده تو آپاچی رو ببینید و مطمئن بشید که این ماژول وجود داره. (نکته جالب اینه که من همیشه این دستور رو میزنم و این ماژول رو لیست نمیکنه! در صورتیکه نصبش کردم و کار هم میکنه! از آرچ ۶۴ بیتی استفاده میکنم و Zend Server CE )‌</p>
<p>حالا به راحتی میتونید از Header توی فایل htaccess استفاده کنید. یه چیزی مثل این رو میتونید توی فایل htaccess بنویسید : </p>
<pre class="brush: plain; title: ; notranslate">
&lt;IfModule mod_header.c&gt;
	Header unset Pragma
	FileETag None
	Header unset ETag

	# cache images/pdf/css/js for 10 days
	&lt;FilesMatch &quot;\.(ico|pdf|jpg|jpeg|png|gif|js|css)$&quot;&gt;
	  Header set Cache-Control &quot;max-age=864000, public, must-revalidate&quot;
	  Header unset Last-Modified
	&lt;/FilesMatch&gt;

	# cache html/htm/xml/txt diles for 2 days
	&lt;FilesMatch &quot;\.(html|htm|xml|txt|xsl)$&quot;&gt;
	  Header set Cache-Control &quot;max-age=7200, must-revalidate&quot;
	&lt;/FilesMatch&gt;
&lt;/IfModule&gt;
</pre>
<p>البته تو این مثال از FileMatch هم استفاده کردم که توی هسته آپاچی هست به صورت پیشفرض.<br />
تو این مثال ETag رو هم غیر فعال کردم (خطوط ۳ و ۴)که اونم به این دلیله : <a href='http://developer.yahoo.com/performance/rules.html#etags' title='Best Practices for Speeding Up Your Web Site'>Best Practices for Speeding Up Your Web Site</a> (آخر قسمت Configure ETags منظورمه، کامل بخونیدش)<br />
و بعد برای فایلهای عکس، pdf ، CSS و جاوا اسکریپت، زمان انقضای ۱۰ روز رو انتخاب کردم(خطوط ۷ تا ۱۰ ) و بعد برای فایلهای متنی استاتیک (نه php البته) مدت زمان انقضای ۲ روز (خطوط ۱۳ تا ۱۵)<br />
کد بالا رو تو htaccess کپی کنید، کار کرد که چه خوب! اگه کار نکرد یعنی ماژول مورد نظر نصب نیست. برای مطمئن شدن از کار کردنش، از افزونه <a href="http://developer.yahoo.com/yslow/">Y!Slow</a> استفاده کنید، یا دو خط اول و آخر (IfModule) رو حذف کنید و ببینید Internal Server Error میگیرید یا نه، اگه خطا نداد یعنی همه چی درسته.</p>
<p><a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html"><strong>mod_deflate</strong></a><br />
این یکی به شما امکان میده که به راحتی قابلیت فشرده سازی رو روی فایلهاتون فعال کنید. توصیه من فشرده کردن همه فایلهای CSS و جاوا اسکریپت و html هستش. اینطوری : </p>
<pre class="brush: plain; title: ; notranslate">
&lt;IfModule mod_deflate.c&gt;
  &lt;FilesMatch &quot;\.(js|css|php|htm|html)$&quot;&gt;
    SetOutputFilter DEFLATE
  &lt;/FilesMatch&gt;
&lt;/IfModule&gt;
</pre>
<p>با این روش در صورتیکه این پسوندهای به خصوص درخواست بشن توسط سرور، سرور اونها رو کمپرس شده پس میفرسته.<br />
البته php هم معمولا خروجیش html میشه بودنش تو این لیست بدک نیست. برای امتحان درست بودن این، مثل همون که بالا گفتم عمل کنید، دو خط اول و آخر رو حذف کنید و ببینید بازم کار میکنه یا خطا میگیرید.<br />
البته، راهنمای خود ماژول هم این فرم استفاده رو پیشنهاد کرده : </p>
<pre class="brush: plain; title: ; notranslate">
AddOutputFilterByType DEFLATE text/html text/plain text/xml
</pre>
<p>که فرق آنچنانی نداره و شاید بعضی ها اینو دوست تر داشته باشن :)<br />
یه نکته هم بد نیست بگم و اونم اینه که توی FilesMatch از عبارات با قاعده استفاده میشه، و مثلا </p>
<pre class="brush: plain; title: ; notranslate">
\.(html|htm|xml|txt|xsl)$
</pre>
<p>یعنی هر فایلی که تو اسمش یه نقطه باشه بعد بلافاصله html یا htm یا xml یا txt یا xsl باشه و بعدش هم بلافاصله اسم فایل تموم بشه (اون علامت $ اینو میگه!)</p>
<p>&#8211; یه مدتیه درگیر یه سری کار و سفارش هستم کمتر وقت میکنم بنویسم&#8230;‌</p>
<div class="plus-one-wrap"><g:plusone href="http://cyberrabbits.net/799/apache-speed-up-tips/"></g:plusone></div><p>پستهای مرتبط :<ol>
<li><a href='http://cyberrabbits.net/43/vhosts/' rel='bookmark' title='هاست مجازی بر روی آپاچی'>هاست مجازی بر روی آپاچی</a> <small>خیلی پیش می آید که ما نیاز به چند آدرس...</small></li>
<li><a href='http://cyberrabbits.net/564/a-small-tip-in-php/' rel='bookmark' title='یه نکته کوچک در PHP'>یه نکته کوچک در PHP</a> <small>همونطور که میدونید توی PHP برای اپراتور OR دو نسخه...</small></li>
<li><a href='http://cyberrabbits.net/585/php-simple-note/' rel='bookmark' title='بازم یک نکته کوچک تو PHP'>بازم یک نکته کوچک تو PHP</a> <small>یکی از مشکلاتی که برنامه نویسهای تازه کار با اون...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cyberrabbits.net/799/apache-speed-up-tips/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>آدرس دهی درست</title>
		<link>http://cyberrabbits.net/580/seo-friendly-url/</link>
		<comments>http://cyberrabbits.net/580/seo-friendly-url/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 21:24:01 +0000</pubDate>
		<dc:creator>فرود</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[آپاچی]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[فوت کوزه گری]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://cyberrabbits.net/?p=580</guid>
		<description><![CDATA[یکی از دغدغه های فعلی طراحان وب، ایجاد لینک های &#8220;موتور جستجو پسند!&#8221; شده. پر بیراه هم نیست، که این لینکها هم به راحتی به خاطر سپرده میشوند و هم اینکه خواناتر هستند هم برای آدمیزاد هم ربات. ابن لینکها، برای یک سایت SEO Friendly یکی از مهمترین بخشهاست. اکثر CMS ها یا Framework ها&#8230;
پستهای مرتبط :<ol>
<li><a href='http://cyberrabbits.net/799/apache-speed-up-tips/' rel='bookmark' title='دو نکته برای بالا بردن سرعت &#8211; آپاچی'>دو نکته برای بالا بردن سرعت &#8211; آپاچی</a> <small>از نکاتی که پیشنهاد میشه برای بالا بردن سرعت یه...</small></li>
<li><a href='http://cyberrabbits.net/43/vhosts/' rel='bookmark' title='هاست مجازی بر روی آپاچی'>هاست مجازی بر روی آپاچی</a> <small>خیلی پیش می آید که ما نیاز به چند آدرس...</small></li>
<li><a href='http://cyberrabbits.net/708/echo-vs-print/' rel='bookmark' title='echo vs. print'>echo vs. print</a> <small>حتما دو تا تابع echo و print رو میشناسید. این...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>یکی از دغدغه های فعلی طراحان وب، ایجاد لینک های &#8220;موتور جستجو پسند!&#8221; شده. پر بیراه هم نیست، که این لینکها هم به راحتی به خاطر سپرده میشوند و هم اینکه خواناتر هستند هم برای آدمیزاد هم ربات. ابن لینکها، برای یک سایت SEO Friendly یکی از مهمترین بخشهاست.<br />
اکثر CMS ها یا Framework ها امکاناتی برای ایجاد این لینکها معرفی میکنند. منتها اگر لازم باشه که خودتون بنویسیدش، شاید یه کم دردسر ساز بشه. تو این پست میخوام توضیح بدم با‌ آپاچی و PHP چطوری میشه این کار رو انجام داد.<br />
معمولا، آدرسهای اینترنتی به این صورت هستن :</p>
<pre class="brush: plain; title: ; notranslate">

http://example.com/users.php?id=10&#038;action=delete&#038;uid=somedata
</pre>
<p>که ما ترجیح میدیم (مثلا) اینطوری باشن (که من هدفم همینه): </p>
<pre class="brush: plain; title: ; notranslate">

http://example.com/users/id:10/action:delete/uid:somedata
</pre>
<p>یا مثلا این :</p>
<pre class="brush: plain; title: ; notranslate">

http://example.com/users/id/10/action/delete/uid/somedata
</pre>
<p>دو تا حالت فرقی نمیکنه، شاید شما بخواید حتی جور دیگه ای ایجادش کنید که یه کم بحث سلیقه و انتخاب شخصی خودتون  و نیازها مطرح میشه. من حالت اول رو توضیح میدم، دومی هم آنچنان فرقی نمیکنه.</p>
<p><strong>۱- ملزومات</strong><br />
اولین چیز <a href="http://apache.org/">آپاچی</a> هستش با <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html">mod_rewrite</a> که روش نصب و فعال باشه. برای باقی وب سرور ها هم ممکنه، مثلا <a href="http://www.lighttpd.net/">lighttpd</a> هم این قابلیت رو داره با کمی تفاوت، و IIS 7 هم . منتها برای IIS های قدیمیتر، بدون یک سری اضافات ممکن نیست. البته میشه از error document استفاده کرد، که در آینده اگه حسش بود و وقتش بود توضیح میدم دربارش (همین الان من از این استفاده میکنم، توی IIS 6 و همین وبلاگ)<br />
بعد از نصب آپاچی مطمئن بشید که mod_rewrite فعاله. توی تنظیمات بگردید دنبالش، یه خطی به این صورت :</p>
<pre class="brush: plain; title: ; notranslate">
LoadModule rewrite_module modules/mod_rewrite.so
</pre>
<p>البته نکته جالب برای خودم اینه که الان اصلا و ابدا من این فایل mod_rewrite.so رو ندارم، توی تنظیمات آپاچی هم نیست همچین خطی ولی rewrite فعاله!! (من از <a href="http://www.zend.com/en/products/server-ce/">Zend Server CE</a> استفاده میکنم) حالا راه ساده تر (اگه به تنظیمات دسترسی ندارید یا مثل من نسخه تغییر داده شده آپاچی رو نصب دارید) اینه که اینطوری تستش کنید:<br />
یه فایل بسازیدد توی پوشه ریشه آپاچی به اسم .htaccess (یک نقطه، قبل از اسم فایل هست، یعنی در حقیقت فایلی بدون اسم با پسوند htacces برای ویندوزیها و برای لینوکسی ها یک فایل مخفی.)<br />
تا جایی که یادمه توی ویندوز نمیشد از طریف explorer چنین فایلی ساخت، به جاش یه فایل بسازید با notepad بعد با اون که ذخیرش کنید با این اسم.داخلش این کد رو بنویسید : </p>
<pre class="brush: plain; title: ; notranslate">
RewriteEngine On
</pre>
<p>بعد سایت رو از طریق بروزر باز کنید. اگه صفحه 500, Internal Server Error گرفتید یعنی نصب نیست. در غیر اینصورت مشکلی نیست.</p>
<p><ins datetime="2011-01-05T20:19:20+00:00">یه نکته که فراموش کرده بودم این بود که توی تنظیمات اصلی آپاچی، اونجایی که Virtual Host رو تعریف میکنید عبارت<br />
AllowOverride All<br />
باشه، یعنی دست کم None نباشه به جای All.</ins><br />
باقیش هم که فقط مربوط میشه به PHP و تمام.<br />
<span id="more-580"></span><br />
<strong>۲- mod_rewrite </strong><br />
این ماژول آپاچی خودش کلی ریزه کاریها داره. منتها من فقط با یه سری تنظیمات ساده کار دارم و همونها رو توضیح میدم. توی فایل htaccess اینو بنویسید : </p>
<pre class="brush: plain; title: ; notranslate">
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
</pre>
<p>این فایل، و این تنظیمات، باعث میشه که تمام درخواستهای که به وب سرور میرسن ولی وجود ندارن (یعنی تو ریشه پوشه ای به اون نام وجود نداره و فایلی هم به اون اسم و آدرس نیست، فرستاده بشن به فایل index.php ، و این همون چیزی هستش که ما لازم داریم.<br />
در حقیقت تو این تنظیمات، ما سه تا شرط داریم که با RewriteCond شروع شدن و اگر هم دقت کنید متوجه میشید که با هم ترکیب شدن (با OR ) و در نهایت هم RewriteRule که مشخص میکنه وقتی شرطها برقرار شدن آپاچی چیکار کنه. </p>
<p>خوب دیگه تا اینجا کار ما با آپاچی تمومه. از این به بعد میریم سراغ PHP</p>
<p><strong>۳- PHP </strong><br />
گام سوم و آخر PHP هستش. چطوری بفهمیم درخواستی که اومده چه پارامترهایی داره و اونو پردازش کنیم؟<br />
مطمئن بشید فایل index.php رو ساختید. این فایل رو بگذارید کنار فایل .htaccess .توی این فایل این کد رو بنویسید : </p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
	echo $_SERVER['REQUEST_URI'];
</pre>
<p>با هر آدرسی دوست دارید (البته قسمت سرورش که ثابته، منظورم از سرور به بعده) اون رو فراخوانی کنید، میبینید که آدرس نمایش داده میشه و در همه موارد این فایل اجرا میشه.<br />
سعی کنید یه فایل موجود رو آدرس دهی کنید، مثلا یه عکس و یا یه فایل جاوااسکریپت، میبینید مشکلی پیش نمیاد و اون فایل درست برگردونده میشه.</p>
<p>حالا میرسیم به بحث اول خودمون.<br />
من میخوام اینچنین ساختار لینکی ایجاد کنم : </p>
<pre class="brush: plain; title: ; notranslate">

http://example.com/somefile/parameter1:value1/parameter2:value2
</pre>
<p>با هر چند پارامتر که لازمه. البته تو مدلهای MVC معمولا به اینصورته :</p>
<pre class="brush: plain; title: ; notranslate">

http://example.com/module/controller/action/param1:value1/param2:value2
</pre>
<p>که به جای : از / هم استفاده میشه در بعضی پیاده سازیها مثل Zend ولی من حالت ساده تر رو پیش میگیرم.<br />
من چند تا فایل دارم، که قسمت اول بعد از آدرس سایت اسم اون فایله. مثلا فایل users.php و فایل products.php . فایل index.php هم که ورودی سایت هستش. وی index.php این کد رو قرار بدید :</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php

	$address=$_SERVER['REQUEST_URI'];
	$addressStack=explode('/',$address);
	//First one is always empty string, so remove it.
	array_shift($addressStack);

	//Next step is to get file and parameter
	if ($addressStack[0]==''){
		//This is default call. just show the message:
?&gt;
	This is index..&lt;br /&gt;
	&lt;a href=&quot;/users/name:ali&quot;&gt;Ali's page&lt;/a&gt;&lt;br /&gt;
	&lt;a href=&quot;/products/cat:home/sortby:price&quot;&gt;Show some product catagory page&lt;/a&gt;
&lt;?php
	die();
	}

	$page=array_shift($addressStack);
	$params=array();
	foreach ($addressStack as $stack){
		$p=explode(':',$stack);
		if (isset($p[1]))
			$params[$p[0]]=$p[1];
		else
			$params[$p[0]]=null;
	}

	function callPage($page,$params){
		echo &quot;You are in page $page&quot;;
		echo &quot;&lt;br /&gt;Parameters are :&lt;pre&gt;&quot;;
		echo print_r($params,true);
		echo &quot;&lt;/pre&gt;&quot;;
	}

	callPage($page,$params);
</pre>
<p>این کد میتونه به عنوان یه شروع کمکتون کنه. با این فرض که callPage یه تابعه که شما رو به هر صفحه میفرسته. (یعنی بر اساس آرگومان page صفحه درست رو include میکنه . البته مواظب باشید و به نکات امنیتی توجه کنید!)<br />
نکته مهمی که در این مورد وجود داره اینه که حتما، صفحاتی که وجود ندارن رو مدیریت کنید. یعنی توی تابع callPage حتما بررسی کنید که آیا صفحه وجود داره اگه وجود داره فراخوانی بشه اگر نه، خطای ۴۰۴ به درستی ایجاد بشه، چون وجود خطای ۴۰۴ مناسب خودش یکی از اصوله!</p>
<div class="plus-one-wrap"><g:plusone href="http://cyberrabbits.net/580/seo-friendly-url/"></g:plusone></div><p>پستهای مرتبط :<ol>
<li><a href='http://cyberrabbits.net/799/apache-speed-up-tips/' rel='bookmark' title='دو نکته برای بالا بردن سرعت &#8211; آپاچی'>دو نکته برای بالا بردن سرعت &#8211; آپاچی</a> <small>از نکاتی که پیشنهاد میشه برای بالا بردن سرعت یه...</small></li>
<li><a href='http://cyberrabbits.net/43/vhosts/' rel='bookmark' title='هاست مجازی بر روی آپاچی'>هاست مجازی بر روی آپاچی</a> <small>خیلی پیش می آید که ما نیاز به چند آدرس...</small></li>
<li><a href='http://cyberrabbits.net/708/echo-vs-print/' rel='bookmark' title='echo vs. print'>echo vs. print</a> <small>حتما دو تا تابع echo و print رو میشناسید. این...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cyberrabbits.net/580/seo-friendly-url/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>هاست مجازی بر روی آپاچی</title>
		<link>http://cyberrabbits.net/43/vhosts/</link>
		<comments>http://cyberrabbits.net/43/vhosts/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 17:12:55 +0000</pubDate>
		<dc:creator>فرود</dc:creator>
				<category><![CDATA[آپاچی]]></category>
		<category><![CDATA[خیلی پیش میاد!]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[localhost]]></category>
		<category><![CDATA[virtual host]]></category>
		<category><![CDATA[webserver]]></category>
		<category><![CDATA[هاست مجازی]]></category>
		<category><![CDATA[هاست محلی]]></category>
		<category><![CDATA[وب سرور]]></category>

		<guid isPermaLink="false">http://cyberrabbits.net/?p=43</guid>
		<description><![CDATA[خیلی پیش می آید که ما نیاز به چند آدرس مختلف در یک کامپیوتر داشته باشیم، مثلا نیاز مند این باشیم که کاربران شبکه داخلی، با زدن آی پی کامپیوتر در بروزر خودشان، یک صفحه ببینند و مثلا کاربرانی که از یک شبکه دیگر (مثلا اینترنت) به کامپیوتر شما رجوع میکنند چیز دیگری ببینند و&#8230;
پستهای مرتبط :<ol>
<li><a href='http://cyberrabbits.net/799/apache-speed-up-tips/' rel='bookmark' title='دو نکته برای بالا بردن سرعت &#8211; آپاچی'>دو نکته برای بالا بردن سرعت &#8211; آپاچی</a> <small>از نکاتی که پیشنهاد میشه برای بالا بردن سرعت یه...</small></li>
<li><a href='http://cyberrabbits.net/839/happy-new-year-2/' rel='bookmark' title='سال نو مبارک'>سال نو مبارک</a> <small>اول از همه سال نو مبارک. شروع دهه هم هست...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>خیلی پیش می آید که ما نیاز به چند آدرس مختلف در یک کامپیوتر داشته باشیم، مثلا نیاز مند این باشیم که کاربران شبکه داخلی، با زدن آی پی کامپیوتر در بروزر خودشان، یک صفحه ببینند و مثلا کاربرانی که از یک شبکه دیگر (مثلا اینترنت) به کامپیوتر شما رجوع میکنند چیز دیگری ببینند و اصلا گاهی لازم میشود که شما چندین هاست مجازی مختلف به صورت محلی (Local) بر روی کامپیوتر خود داشته باشید تا بتوانید به صورت کاملا مستقل از هم بر روی هر کدام کار کنید.</p>
<p>برای اینکار آپاچی قابلیت <a href="http://httpd.apache.org/docs/2.2/vhosts/">Virtual Host</a> را پیشنهاد میکند.</p>
<p>برای اینکار ابتدا باید آی پی های مختلف مد نظرتان را مشخص کنید. مثلا من به این آی پی ها نیاز دارم و میخواهم همه آنها به صورت جدا از هم باشند.</p>
<ol>
<li>127.0.0.1 برای استفاده شخصی خودم</li>
<li>192.168.0.1 آدرسی که کاربران شبکه میبینند</li>
<li>78.53.33.13 آی پی من در اینترنت (این آی پی همین طوری و خیلی اتفاقی انتخاب شده :) باور کنید من <a href="http://geotool.flagfox.net/?ip=78.53.33.13&amp;host=78.53.33.13">برلین</a> نیستم و این آی پی من نیست! )</li>
<li>و در نهایت یک سایت محلی دیگر، مجزا از 127.0.0.1</li>
</ol>
<p>برای اینکار، نیازمند ویرایش فایل httpd.conf هستیم .این فایل برای ویندوز در آدرسی هست که آپاچی نصب شده، ولی در لینوکس در /etc/apache2 هست.</p>
<h2>127.0.0.1</h2>
<p>معمولا آدرس 127.0.0.1 را میتوانید هنگام نصب به عنوان آدرس اصلی انتخاب کنید، اگر بنا به هر دلیلی این آدرس در کامپیوتر شما مشکل داشت، دقیقا مثل آدرس چهارم عمل کنید</p>
<h2>192.168.0.1</h2>
<p>برای افزودن این آدرس، کافی است کد زیر را به انتها فایل httpd.conf اضافه کنید :</p>
<pre class="brush: plain; title: ; notranslate">
&lt;VirtualHost 192.168.0.1:80&gt;
    ServerAdmin yourmail@yourhost.ext
    DocumentRoot &quot;c:/path/to/the/root/folder/for/this/host&quot;
    ServerName localnetwork.loc
&lt;/VirtualHost&gt;
</pre>
<p><span id="more-43"></span><br />
ابتدا، باید آی پی مورد نظرتان را انتخاب و پورتی که آپاچی روی آن فعال است را نیز انتخاب کنید. در این مثال 192.168.0.1:80  فقط مطمئن شوید همان پورتی را انتخاب میکنید که آپاچی آن را در اختیار دارد، برای اینکه مطمئن شوید داخل همین فایل دنبال عبارت Listen 80 بگردید (80 ممکن است هر عدد دیگری باشد مثلا 8080 ) این عدد نشانگر پورت مورد استفاده آپاچی است.<br />
بعد آدرس میل ادمین این سایت، برای نمایش در امضای صفحات (معمولا صفحات خطا) سپس پوشه ای که در نظر دارید نقش ریشه این هاست مجازی را داشته باشد، و در نهایت نامی که برای این هاست در نظر گرفته اید، که در این مورد چون روی یک شبکه محلی هستید مهم نیست :) را وارد کنید.<br />
گزینه های دیگر هم هست، و تقریبا تمام تنظیمات مربوط به هاست اصلی هم در این بلاک قابل استفاده خواهد بود.</p>
<h2>78.53.33.13</h2>
<p>برای اینهم دقیقا شبیه بالایی عمل کنید، فقط این آی پی را وارد کنید و مسیر دیگری مربوط به این هاست انتخاب کنید.</p>
<h2>یک هاست محلی دیگر</h2>
<p>خیلی پیش می آید که شما بخواهید دو یا چند هاست مختلف روی کامپیوتر خود داشته باشید، مثلا روی یکی WordPress نصب کنید، دومی یک سیستم دیگر و همین طور الی آخر، البته میتوان از مسیر های داخلی هم استفاده کرد مثلا http://localhost/wordpress ولی من این را نمی پسندم. ویندوز، تمام آی پی های محدوده 127.0.0.x را برای Loop Back (یعنی آی پی که در حقیقت برای Local استفاده میشود ) رزرو کرده است.</p>
<p>برای اینکار، میتوانید از یک آی پی مثل 127.0.0.2 استفاده کنیم ، به این صورت :</p>
<pre class="brush: plain; title: ; notranslate">
&lt;VirtualHost 127.0.0.2:80&gt;
    ServerAdmin yourmail@yourhost.ext
    DocumentRoot &quot;c:/path/to/the/root/folder/for/this/another/host&quot;
    ServerName localnetwork.loc
&lt;/VirtualHost&gt;
</pre>
<p>بعد از این کار، این آدرس، از آدرس قبلی 127.0.0.1 و کلا همه آدرس های دیگر مجزا خواهد بود. اما برای اینکه این آدرس یک نام داشته باشد، مثلا localhost2 چکار کنیم؟<br />
فایل زیر در ویندوز :</p>
<pre class="brush: plain; title: ; notranslate">
%WINDIR%\system32\drivers\etc\hosts
</pre>
<p>و یا فایل زیر در لینوکس :</p>
<pre class="brush: plain; title: ; notranslate">
/etc/hosts
</pre>
<p>را با یک ادیتور متنی مثل Notepad یا <a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a> یا هر ادیتور دیگری که دوست دارید، باز کنید. یک خط به این صورت به انتهای آن اضافه کنید :</p>
<pre class="brush: plain; title: ; notranslate">
127.0.0.2		localhost2
</pre>
<p>%WINDIR% پوشه ویندوز شماست و این فایل هم هیچگونه پسوندی ندارد! برای لینوکس و ویندوز سون این فایل رو باید با ویرایشگری که دسترسی ادمین داشته باشه ویرایش کنید.</p>
<p>که به ترتیب آی پی مورد نظر شما با چند فاصله (مهم نیست چند تا، فضای خالی یا کاراکتر تب) و نام مورد نظر شماست. در این صورت میتوانید از این نام جدید هم به صورت محلی استفاده کنید.</p>
<h2>چند نکته مهم :</h2>
<p>برای نامگذاری سایتهای محلی از اسم سایتهای واقعی استفاده نکنید، در این صورت دیگر به هیچ عنوان نمیتوانید آن سایتها را باز کنید! و همیشه سایت محلی باز خواهد شد.</p>
<p>دوم، در صورتی که با باز کردن این هاست های مجازی در مرورگر خود، خطای Forbidden میگیرید، باید پوشه ای را که برای این هاست در نظر گرفته اید را به لیست پوشه های مجاز آپاچی اضافه کنید به این صورت :</p>
<pre class="brush: plain; title: ; notranslate">
&lt;Directory &quot;c:/path/to/the/root/folder/for/this/host&quot;&gt;
    #
    # Possible values for the Options directive are &quot;None&quot;, &quot;All&quot;,
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that &quot;MultiViews&quot; must be named *explicitly* --- &quot;Options All&quot;
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks Includes ExecCGI

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be &quot;All&quot;, &quot;None&quot;, or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all

&lt;/Directory&gt;
</pre>
<p>که کامنتها گویای اینکه هر کدام از این گزینه ها چه معنی ای دارند، هست.</p>
<p>::: تازه متوجه شدم که این یکی پست را هم با عبارت خیلی پیش میاد شروع کردم!</p>
<div class="plus-one-wrap"><g:plusone href="http://cyberrabbits.net/43/vhosts/"></g:plusone></div><p>پستهای مرتبط :<ol>
<li><a href='http://cyberrabbits.net/799/apache-speed-up-tips/' rel='bookmark' title='دو نکته برای بالا بردن سرعت &#8211; آپاچی'>دو نکته برای بالا بردن سرعت &#8211; آپاچی</a> <small>از نکاتی که پیشنهاد میشه برای بالا بردن سرعت یه...</small></li>
<li><a href='http://cyberrabbits.net/839/happy-new-year-2/' rel='bookmark' title='سال نو مبارک'>سال نو مبارک</a> <small>اول از همه سال نو مبارک. شروع دهه هم هست...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://cyberrabbits.net/43/vhosts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

