چگونه هاست‌های مجازی آپاچی را در CentOS7 راه اندازی کنیم؟

2.8kviews

مقدمه:

وب سرور آپاچی یکی از محبوب‌ترین راه‌کار برای سرویس‌دهی به محتوی وب است که بسیار قدرتمند و منعطف است.
آپاچی به عملکرد و اجزای منحصربه‌فردی تجزیه می‌شود که می‌تواند به صورت سفارشی و مستقل پیکربندی شود. واحد پایه‌ای که یک سایت خاص با یک دامنه را توصیف می‌کند یک میزبان مجازی (virtual host) نامیده می‌شود. میزبان مجازی به یک سرور اجازه می‌دهند چندین دامین متعدد یا رابط را با استفاده از تطابق سیستم میزبانی کند. این مورد مربوط می‌شود به افرادی که یک سرور مجازی (VPS) را برای میزبانی بیشتر از یک سایت می‌خواهند. هر دامینی که پیکربندی می‌شود بازدیدکنندگان را به سمت یک دایرکتوری خاص که اطلاعات مربوط به سایت را نگهداری می‌کند، هدایت می‌کند. همان سرور برای سایت‌های دیگر مسئول است. این طرح بدون هیچگونه محدودیت نرم‌افزاری تا زمانی که سرور شما می‌تواند ترافیک تمام سایت‌های مجذوب را رسیدگی کند، قابل ارتقا است.
در این مقاله ما می‌خواهیم آموزش دهیم گه چگونه چند میزبان مجازی آپاچی را بر روی سرور مجازی CentOS7 پیاده‌سازی کنیم. در طی این فرآیند شما یاد می‌گیرید که چگونه برای محتوای متفاوت به بازدیدکنندگان متفاوتی که به دامنه‌های مختلفی را درخواست کرده‌اند، خدمات گوناگونی را ارائه دهید.

پیش‌نیازها:

قبل از اینکه طبق این راهنما شروع کنید چند مرحله وجود دارد که لازم است تکمیل شود.
شما نیاز دارید که به یک سرور CentOS7 یا یک کاربر غیر از root دسترسی داشته باشید که این کاربر امتیازات Sudo(sudo privileges) را داشته باشد. اگر هنوز تنظیماتی را انجام نداده‌اید می‌توانید با استفاده از این لینک این کاربر را ایجاد کنید.
همچنین شما برای پیکربندی میزبان‌های مجازی بر روی سرور نیاز دارید که یک آپاچی نصب کنید. اگر قبلا این کار را انجام نداده‌اید می‌توانید با استفاده از دستور yum آپاچی را طریق مخازن نرم‌افزاری پیش‌فرض CentOS نصب کنید.

 

sudo yum -y install httpd

در ادامه، آپاچی را به عنوان یک سرویس CentOS فعال کنید که بعد از reboot کردن سیستم به صورت خودکار آغاز می‌شود.

sudo systemctl enable httpd.service

بعد از اینکه این مراحل کامل شد، از طریق SSH بعنوان یک کاربر غیرریشه‌ای (non-root) به سیستم وارد شوید و آموزش را ادامه دهید.

مرحله اول: ایجاد ساختار دایرکتوری

در ابتدا ما نیاز داریم یک ساختار دایرکتوری ایجاد کنیم که اطلاعات سایت را برای ارائه خدمات به بازدیدکنندگان در آنجا نگهداری کنیم.
اسناد ریشه ما (document root: بالاترین سطح از دایرکتوری که به نظر می‌رسد آپاچی برای پیدا کردن مطالب و ارائه خدمات آن را جستجو می‌کند) به دایرکتوری‌های منحصربه‌فردی در دایرکتوری /var/www تنظیم می‌شوند. ما یک دایرکتوری برای هر یک از میزبان‌های مجازی که قصد ایجاد آن را داریم، ایجاد خواهیم کرد.
در هر یک از دایرکتوری‌ها، یک دایرکتوری public_html ایجاد خواهیم کرد که فایل‌های واقعی را در آن نگهداری شود. این کار انعطاف‌پذیری بیشتری در میزبانی می‌دهد.
ما می‌توانیم این دایرکتوری‌ها را با استفاده از دستور mkdir (استفاده از –p که اجازه می‌دهد که یک پوشه درون پوشه دیگری ایجاد کنیم) بسازیم.

 

sudo mkdir -p /var/www/itse.com/public_html
sudo mkdir -p /var/www/itse2.com/public_html

مرحله دوم: اعطای مجوز

در حال حاضر ما یک ساختار دایرکتوری برای فایل‌های خود داریم. اما آن‌ها به کاربر ریشه (root) تعلق دارند. اگر ما بخواهیم که کاربران به طور منظم قادر به تغییر فایل‌ها در دایرکتوری‌های وب‌سایت ما باشند، می‌توانیم با استفاده از دستور chown مالکیت آن‌ها را تغییر دهیم:

sudo chown -R $USER:$USER /var/www/itse.com/public_html
sudo chown -R $USER:$USER /var/www/itse2.com/public_html

متغییر $USER نام همان کاربری را خواهد گرفت که شما اخیرا با آن وارد سیستم شده‌اید در زمانی که دستور را ارسال می‌کنید. با انجام این کار، کاربران منظم ما مالک دایرکتوری‌های public_html جایی که ما محتوای خود را ذخیره می‌کنیم، هستند.
همچنین باید مجوزهایمان را طوری اصلاح کنیم که با کمی تغییر مطمئن شویم که دسترسی خواندن به دایرکتوری وب و همه فایل‌ها و فولدرهای درون آن به طور کلی مجاز است. بنایراین صفحاتی که را می‌توان به درستی به کار گرفت:

sudo chmod -R 755 /var/www

وب سرور شما در حال حاضر باید مجوزهای مورد نیاز برای خدمات محتوا و کاربران شما که قادر هستند محتوا را در داخل پوشه‌های مناسب ایجاد کنند، را داشته باشد.

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

حالا که ما یک ساختار دایرکتوری را داریم، اجازه دهید که برخی از مطالب را برای استفاده ایجاد کنیم.
زیرا که این تنها راه برای نمایش و آزمایش است، صفحات ما بسیار ساده خواهند بود. ما فقط صفحه index.html برای هر سایت ایجاد می‌کنیم که آن دامنه خاص را شناسایی می‌کند.
اجازه دهید که با example.com شروع کنیم. ما می‌توانیم یک فایل index.html را در ویرایشگر با تایپ کردن دستور زیر باز کنیم:

nano /var/www/itse.com/public_html/index.html

در این فایل یک سند HTML ساده ایجاد می‌شود که سایتی را نشان می‌دهد که این صفحه به آن متصل است. در این آموزش فایلی که برای اولین در دامنه ما نمایش داده می‌شود، مطابق زیر است:

<html>
<head>
<title>Welcome to Itse.com!</title>
</head>
<body>
<h1>Success! The itse.com virtual host is working!</h1>
</body>
</html>

بعد از اتمام این مرحله فایل را ذخیره کنید و ببندید.

ما می‌توانیم با تایپ کردن دستور زیر این فایل را به عنوان یک الگو برای استفاده در index.html سایت دوممان کپی کنیم.

cp /var/www/itse.com/public_html/index.html /var/www/itse2.com/public_html/index.html

حالا اجازه دهید فایل را باز کنیم و بخش‌های مربوط به اطلاعات را اصلاح کنیم.

nano /var/www/itse2.com/public_html/index.html
<html>
<head>
<title>Welcome to itse2.com!</title>
</head>
<body>
<h1>Success! The itse2.com virtual host is working!</h1>
</body>
</html>

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

مرحله چهارم: ایجاد فایل میزبان مجازی جدید

فایل‌های میزبان مجازی برای سایت‌های جداگانه ما طوری پیکربندی شده‌اند که مشخص می‌کنند چگونه وب سرور آپاچی به درخواست دامنه‌های متفاوت پاسخ دهند.
برای شروع، ما نیاز داریم که یک دایرکتوری را راه‌اندازی کنیم که میزبان‌های مجازی ما در آن ذخیره شوند و همچنین دایرکتوری که به آپاچی می‌گوید که یک میزبان مجازی آماده پاسخگویی به بازدیدکنندگان است.
دایرکتوری sites-available همه فایل‌های میزبان مجازی ما را نگهداری خواهد کرد. درحالی‌که دایرکتوری sites-enabled لینک‌های نمادین ماشین میزبان‌های مجازی که ما می‌خواهیم انتشار دهیم را نگهداری می‌کند. ما با تایپ دستورات زیر می‌توانیم هر دو دایرکتوری را ایجاد کنیم:

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

در ادامه ما باید به آپاچی بگوییم که میزبان‌های مجازی را در دایرکتوری sites-enabled مشاهده کند. برای انجام این کار، ما فایل اصلی پیکربندی آپاچی را ویرایش می‌کنیم و یک خط که یک دایرکتوری اختیاری را برای پیکربندی اضافی فایل‌ها اعلام می‌کند را اضافه می‌کنیم:

sudo nano /etc/httpd/conf/httpd.conf

این خط را به انتهای فایل اضافه کنید:

IncludeOptional sites-enabled/*.conf

بعد از اضافه کردن این خط فایل را ذخیره کنید و ببندید. اکنون ما آماده‌ایم اولین فایل میزبان مجازی را ایجاد کنیم.

ایجاد اولین فایل میزبان مجازی:

با باز کردن یک فایل جدید در ویرایشگر خود با دسترسی root شروع کنید:

sudo nano /etc/httpd/sites-available/itse.com.conf

در ابتدا، با ایجاد یک جفت tag برچسب محتوا به عنوان یک ماشین مجازی که درحال گوش دادن به پورت ۸۰ (پورت پیش‌فرض HTTP) است، شروع کنید:

<VirtualHost *:80>
</VirtualHost>

در ادامه نام سرور اصلی را اعلام کنید. در اینجا ما به عنوان مثال www.itse.com را وارد کرده‌ایم. ما همچنین نام مستعار سرور را به itse.com اشاره می‌دهیم به‌طوری‌که درخواست‌ها برای www.itse.com و itse.com با محتوای یکسان ارسال می‌شوند:

<VirtualHost *:80>
ServerName www.itse.com
ServerAlias itse.com
</VirtualHost>

نکته: برای اینکه نسخه‌های www از دامنه به درستی کار کنند پیکربندی DNS های دامنه نیاز به یک A record یا CNAME دارند که درخواست‌های www را به IP سرور اشاره دهد. برای کلمات (*) رکورد نیز کار می‌کند. برای اطلاعات بیشتر در مورد DNS این لینک را مطالعه نمائید.

در نهایت، ما با اشاره به دایرکتوری root از اسناد وب‌سایتمان که در دسترس عموم است کار را پایان می‎دهیم. ما همچنین به آپاچی می‌گوییم که خطاها و درخواست log های مربوط به این سایت خاص را در کجا ذخیره کند:

<VirtualHost *:80>
ServerName www.itse.com
ServerAlias itse.com
DocumentRoot /var/www/itse.com/public_html
ErrorLog /var/www/itse.com/error.log
CustomLog /var/www/itse.com/requests.log combined
</VirtualHost>

هنگامی که نوشتن این موارد به پایان رسید می‌توانید این فایل را ذخیره کنید و ببندید.

کپی کردن اولین میزبان مجازی و سفارشی‌سازی آن برای دامنه‌های اضافی:

حالا که اولین فایل میزبان مجازی خود را ایجاد کردیم، ما می‌توانیم با کپی کردن این فایل و تنظیم موارد مورد نیاز دومین میزبان مجازی را ایجاد کنیم.
با استفاده از دستور cp کپی را شروع کنید:

sudo cp /etc/httpd/sites-available/itse.com.conf /etc/httpd/sites-available/itse2.com.conf

یک فایل جدید با دسترسی root در ویرایشگر خود باز کنید:

sudo nano /etc/httpd/sites-available/itse2.com.conf

شما اکنون نیاز دارید که تمامی قسمت‌های اطلاعاتی را که به دامین دوم شما ارجاع داده می‌شود را تغییر دهید. بعد از اینکه کار شما تمام شد، فایل‌های میزبان مجازی دوم شما ممکن است چیزی شبیه به این باشد:

<VirtualHost *:80>
ServerName www.itse2.com
DocumentRoot /var/www/itse2.com/public_html
ServerAlias itse2.com
ErrorLog /var/www/itse2.com/error.log
CustomLog /var/www/itse2.com/requests.log combined
</VirtualHost>

وقتی که انجام این تغییرات به پایان رسید، می‌توانید فایل را ذخیره کنید و ببندید.

مرحله پنجم: فعال کردن فایل میزبان مجازی جدید

اکنون که فایل‌های میزبان مجازی را ایجاد کرده‌ایم، باید آنها را فعال کنیم تا آپاچی برای استفاده از آن‌ها برای بازدیدکنندگان آنها را شناسایی کند. برای انجام این کار، ما می‌توانیم لینک نمادین را برای هر میزبان مجازی در دایرکتوری ites-enabled ایجاد کنیم:

sudo ln -s /etc/httpd/sites-available/itse.com.conf /etc/httpd/sites-enabled/itse.com.conf
sudo ln -s /etc/httpd/sites-available/itse2.com.conf /etc/httpd/sites-enabled/itse2.com.conf

هنگامی که کار شما به پایان رسید برای اعمال تغییرات Apache را ری‌استارت کنید:

sudo apachectl restart

مرحله ششم: راه‌اندازی فایل میزبان‌های محلی (اختیاری)

اگر شما برای تست این روش از دامنه‌های example به جای دامنه‌های واقعی استفاده می‌کنید، شما همچنان می‌توانید قابلیت‌های میزبان‌های مجازی خود را بطور موقت با تغییر در فایل‌های میزبان کامپیوتر خود تست نمائید. این عمل هرگونه درخواست برای دامین‌هایی که شما پیکربندی کرده‌اید و به سرور VPS خود اشاره داده‌اید را جدا می‌کند. فقط یک سیستم DNS می‌تواند این کار را انجام دهد اگر شما از دامنه‌های ثبت شده استفاده کنید. هرچند این کار فقط به روی کامپیوتر شما انجام می‌شود و به سادگی برای آزمایش اهدافتان مفید است.

نکته: مطمئن شوید که این مراحل را روی کامپیوتر محلی خود انجام می‌دهید نه روی سرور مجازی‌تان. شما نیاز دارید که به اعتبارنامه‌های اداری برای این کامپیوتر دسترسی داشته باشید.

اگر شما بر روی یک کامپیوتر Mac با Linux هستید، می‌توانید با تایپ دستور زیر فایل میزبان‌های محلی خود را با دسترسی مدیریتی ویرایش کنید:

sudo nano /etc/hosts

اگر شما بر روی یک ماشین ویندوز هستید، می‌توانید دستورالعمل را در مورد تغییر فایل میزبان از اینجا پیدا کنید.

جزئیاتی که نیاز دارید اضافه کنید، IP آدرس‌های عمومی سرور مجازی شما به همراه دامنه‌هایی که برای رسیدن به آن سرور مجازی می‌خواهید، هستند:

127.0.0.1 localhost
127.0.1.1 guest-desktop
server_ip_address itse.com
server_ip_address itse2.com

این دستورات هر درخواستی که برای itse.com و itse2.com بر روی کامپیوتر محلی ما فرستاده می‌شود و آنها را بر روی سرور ما server_ip_address ارسال می‌کند.

مرحله هفتم: نتایج آزمون شما

حالا که شما میزبان‌های مجازی پیکربندی شده‌ای دارید، می‌توانید تنظیمات خود را به راحتی با رفتن به دامنه‌هایتان که در مرورگر وب خود پیکربندی کرده اید، تست کنید.

http://itse.com

شما باید یک صفحه مانند زیر مشاهده کنید.

به همین ترتیب اگر شما دامنه‌های دیگرتان را بازدید کنید، فایل‌هایی را که ایجاد کرده‌اید را می‌بینید.

اگر تمام سایت‌هایی که پیکربندی کرده‌اید به درستی کار کنند، پس شما با موفقیت میزبان‌های مجازی آپاچی جدید خود را روی همان سرور CentOS پیکربندی کرده‌اید.
اگر فایل میزبان‌های کامپیوتر خانگی خود را تنظیم کرده‌اید، حالا که مطمئن شده‌اید پیکریندی شما به درستی کار می‌کند ممکن است بخواهید خط‌هایی را که اضافه کرده‌اید را حذف کنید.
این مورد باعث جلوگیری از ایجاد فایل‌های میزبان‌های شما با مواردی می‌شود که در اصل نیازی به آن‌ها نیست.

نتیجه:

شما اکنون باید اکنون قادر باشد یک سرور CentOS7 را با سایت‌های مختلف با دامنه‌های مجزا رسیدگی کنید. شما می‌توانید این فرآیند را با دنبال کردن مراحل بالا به میزبان‌های مجازی بیشتری گسترش دهید. هیچ محدودیت نرم‌افزاری برای تعداد نام دامنه‌هایی که آپاچی می‌تواند رسیدگی کند وجود ندارد.

مدیریت از راه دور توسط Powershell(آموزش)

2.6kviews

یکی از ویژگی‌های کمتر شناخته شده در Windows PowerShell 2.0 این است که به راحتی می‌توانید انعطاف‌پذیری باورنکردی را به محیط خود اضافه کنید مدیریت از راه دور است. تصور اینکه کامپیوترهای مشتری‌های شما ویندوز XP را اجرا می‌کنند و domain controllers های شما از Windows Server 2003 استفاده می‌کنند هنوز یک سناریوی متداول است. شما می‌توانید از Windows PowerShell 2.0 برای هردوی این سیستم عامل‌ها استفاده کنید. اما ممکن است قادر به استفاده از جدیدترین ماژول‌های Windows PowerShell cmdlet نباشید. مانند ماژول Active Directory همراه با Windows Server 2008 R2. این ماژول‌های بر روی ورژن‌های قدیمی ویندوز اجرا نمی‌شوند. مشکل خاصی وجود ندارد. فقط ویندوز ۷ یا Windows Server 2008 R2 را بر روی یک کامپیوتر در محیط خودنصب کنید (ماژول اکتیو دایرکتوری در هرکدام از سیستم عامل‌ها اجرا خواهد شد).

به عنوان مثال شما می‌توانید یک Windows Server 2008 R2 domain controller را نصب کنید چرا که هردو ماژول Active Directory و خدمات Active Directory management gateway که با آن ارتباط برقرار می‌کنند را فراهم می‌کند. می‌توانید gateway service را دانلود کنید و آن را روی Windows Server 2008 و Windows Server 2003 نصب کنید.

با استفاده از Enable-PSRemoting در Windows PowerShell دسترسی از راه دور و WinRM را روی یک domain controller جدید تعریف کنید، سپس Windows PowerShell 2.0 را روی ویندوز XP یکی از کلاینت‌های خود فعال کنید و خودتان را برای انجام کارهای جادویی آماده کنید.

ساخت یک ماژول برای مدیریت از راه دور:

یا ایجاد یک جلسه Remote به domain controller جدید شروع کنید.

$session = New-PSSession -computerName my-new-dc

نام صحیح کامپیوتر را در محل my-new-dc وارد کنید. شما می‌توانید پارامترهای اضافی مانند alternate credentials یا پورت‌های alternate WinRM را مشخص کنید. برای جزئیات بیشتر help new-pssession را اجرا کنید.

در ادامه با استفاده از Remote به عنوان مثال به Windows PowerShell بگویید کهActive Directory cmdlets بارگذاری کند.

Invoke-command { import-module activedirectory } -session $session

قسمت جالب این است که شما بر روی همین سیستمی که از Windows PowerShell آن استفاده می‌کنید می‌توانید دستورات ماژول Active Directory را با استفاده از دستور زیر از سرور Remote بر روی کامپیوتر خود فراخوانی کنید.

Export-PSSession -session $session -commandname *-AD* -outputmodule RemAD -allowclobber

این دستور یک ماژول جدید از Windows PowerShell را در فولدر Documents زیر WindowsPowerShell\Modules\RemAD ایجاد می‌کند. فقط دستوراتی که نام آن‌ها با الگوی “*-AD*” مطابقت داشته باشد را شامل می‌شود. این یکی از بزرگترین دلایل دستورات افزودنی در استفاده از نوعی پیشوند مانند “AD” بعنوان بخشی از نام cmdlet است. انجام این کار باعث می‌شود گرفتن آن دسته از cmdlet ها آسانتر شود.

Cmdlet ها در واقع در کامپیوترهای محلی کپی نمی‌شوند. در عوض ماژول خدمات به صورت محلی یک shortcut ایجاد می‌کند. این cmdlet ها همیشه در remote domain controller اجرا خواهند شد اما به نظر می‌رسد که cmdlet ها به صورت محلی در حال اجرا است.

استفاده از cmdlet ها:

با حذف جلسه از remote domain controller شروع کنید:

Remove-PSSession -session $session

اکنون یک ماژول جدید را بارگذاری کنید:

Import-Module RemAD -prefix Rem

این دستور یک ماژول جدید به حافظه بارگذاری می‌کند و پیشوند “Rem” به نام هر cmdlet در آن ماژول اضافه خواهد شد. پیشوند یک راه خوب است تا برای شما یادآوری کنیم که این cmdlet ها به صورت Remote انجام می‌شوند. شما می‌توانید هر پیشوندی را که دوست دارید می‌توانید انتخاب کنید.

سعی کنید از یک remote cmdlet درخواست کمک کنید.

Help New-RemADUser

شما یک خطا را مشاهده می کنید زیرا یک remoting session بین کامپیوتر شما و domain controller که cmdlet ها در آن وجود دارند ایجاد نشده است. نیازی نیست که شما به طور واضح آن جلسه را شروع کنید. شما به طور ضمنی می‌توانید این کار را با اجرای یکی از remoted cmdlets انجام دهید:

Get-RemADUser -filter "Name -like 'D*'"

این دستور ارتباط remote را به domain controller و ارائه دستور برای اجرا و اجرای فرمان در domain controller را مجددا نمونه‌سازی خواهد کرد. سپس هر کاربری که نامش با ‘D’ شروع می‌شود را در XML مرتب می‌کند و به تمام شبکه کامپیوتر شما انتقال می‌دهد. شما می‌توانید آن‌ها از مرتبا به اشیاهایی که در خط لوله Windows PowerShell کار می‌کنند مرتب‌سازی نمائید. اکنون شما می‌توانید درخواست کمک کنید زیرا جلسه remote فعال است.

Help New-RemADUser

این جلسه فعال باقی می‌ماند تا زمانی که شما پوسته نمونه را ببندید یا ماژول را حذف نمائید.

Remove-Module RemAD

رسیدگی و مدیریت از راه دور:

Implicit remoting استفاده از cmdlet هایی که فقط بر روی کامپیوترهای راه دور برای مدیریت از راه دور موجود هستند را آسانتر می‌کند. implicitly remoted cmdlets رفتاری بسیار مشابه با زمانی که بر روی یک کامپیوتر محلی نصب شده باشند را دارند. این باعث می‌شود که هر زمان که به آن‌ها نیاز دارید در دسترس باشند. یک جلسه Remote نیاز به سربار کمی به روی کامپیوتر شما یا یک کامپیوتر راه دور دارد به‌طوری‌که این یک راه فوق‌العاده عملی برای توزیع محاسبات است.

Windows Server 2016: آموزش نصب – Core Mode

4.3kviews

در این مقاله قصد داریم به شما آموزش نصب Windows Server 2016 به دلیل عدم وجود رابط گرافیکی GUI مزایای زیر برای این نسخه بسیار محسوس است:
۱- سرعت بالاتر در لود سیستم عامل Boot Speed
۲- پایداری بسیار بالا به نسبت نسخه گرافیکی
۳- عدم هنگ و یا Crash سیستم به علت رابط گرافیکی
۴- مصرف بسیار پایین منابع سرور مانند CPU & RAM
۵- عدم دریافت بروزرسانی‌های زیاد که بیشتر مربوط به GUI است.
۶- به دلیل عدم وجود GUI بسیاری از مشکلات امنیتی که ممکن است در رابط گرافیکی وجود داشته باشد وجود ندارد.
۷- کاربر با سیستم گرافیکی کار نمی‌کند در نتیجه عدم نصب برنامه‌های غیرضروری بر روی سرور مشکلات کمتری بوجود می‌آورد.
۸- اشغال حجم کمتری از هارد دیسک
و بسیاری از موارد دیگر که در مقاله‌ای جداگانه به آن خواهیم پرداخت.

مراحل نصب Windows Server 2016 :

پس از راه اندازی سیستم عامل از طریق DVD همانند نسخه‌های دیگر با صفحه زیر روبرو می‌شوید، زبان مورد نظر خود را انتخاب و بر روی دکمه Next کلیک کنید.

Win2016-01

بر روی دکمه Install Now کلیک کنید.

Win2016-02

در این صفحه باید نسخه مورد نظر خود را انتخاب کنید. ما بر روی Windows Server 2016 Datacenter Evaluation کلیک می‌کنیم.

Win2016-03

حالا بایدبا شرایط و قوانین Licensing Terms موافقت نمائیم، گزینه …I Accept را انتخاب و بر روی گزینه Next کلیک کنید.

Win2016-04

حالا با توجه به اینکه قصد بروزرسانی و یا نصب جدید را دارید گزینه مورد نظر خود را انتخاب کنید، در این آموزش ما گزینه Custom: Install Windows (only (advanced را انتخاب می‌کنیم.

Win2016-05

درصورتی‌که مایل به پارتیشن‌بندی هستید بر روی گزینه New کلیک کنید، در غیراین‌صورت بر روی گزینه Next کلیک کنید.

Win2016-06

در این مرحله سیستم به حالت نصب می‌رود و کپی کردن فایل‌ها آغاز می‌شود. این مرحله مدتی طول می‌کشد.

Win2016-07

سیستم بعد از اتمام نصب ری‌استارت می‌شود.

Win2016-08

پس از نصب سرور و بوت شدن مجدد سیستم باید برای کاربر Administrator یک رمز عبور انتخاب نمائید، OK را انتخاب کنید.

Win2016-09

پسورد را دو مرتبه وارد کنید و Enter را بزنید.

Win2016-10

صفحه زیر نشان می‌دهد که پسورد شما با موفقیت تغییر یافته است.

Win2016-11

با توجه به اینکه در این نسخه شما فقط با یک Command Prompt سر و کار دارید بهترین منبع آموزشی شما تایپ دستور help و زدن enter است. در این آموزش با استفاده از دستور sconfig.cmd آموزش را به پیش می‌بریم.

Win2016-12

با زدن دستور sconfig.cmd به محیطی وارد می‌شویم که در زیر آن را مشاهده می‌نمائید.

Win2016-13

در این قسمت می‌توانید سرور را مطابق نیاز خود کانفیگ کنید و از Windows Server 2016 خود استفاده نمایید.

بک‌آپ ویندوز سرور و ارسال ایمیل پس از اتمام بک‌آپ

870views

در گذشته که به وسیله نوار بک‌آپ تهیه می‌کردند، خیلی راحت زمان تکمیل بک‌آپ را متوجه می‌شدند چون نوار از دستگاه خارج می‌شد. بسیاری از مشتریان فعلی که با استفاده از دستگاه‌های USB بک‌آپ می‌گیرند، لازم است به صورت دوره‌ای دستگاه‌های USB را خارج کنند و مجددا USB های جدید جایگزین کنند. عموما این موضوع به این دلیل که قبل از اتمام بک‌آپ ویندوز سرور، USB را از دستگاه خارج می‌کنند هنگامی‌که بک‌آپ کامل سرور درحال تهیه است، باعث قطع شدن بک‌آپ و ایجاد مشکل می‌شود.
یکی از این‌گونه مشتریان از ما درخواست کردند هنگامی که بک‌آپ سرور تکمیل می‌شود یک ایمیل برایش ارسال شود که به این وسیله متوجه شوند که بک‌آپ به اتمام رسیده و دستگاهی که بک‌آپ روی آن گرفته می‌شود را خارج کنند. سرویس بک‌آپ ویندوز سرور به صورت پیش‌فرض این‌کار را انجام نمی‌دهد، به همین دلیل ما دو کار به صورت برنامه‌ریزی شده با استفاده از اسکریپت‌های پاورشل انجام می‌دهیم که موفقیت یا عدم موفقیت در تهیه بک‌آپ را به صورت ایمیل ارسال نمایند.
با استفاده از Notepad یک اسکریپت Powershell ایجاد کنید و آن را با عنوان ‘EmailBackupResults.ps1’ در سرور ذخیره کنید. شما نیاز دارید که متغییرها را متناسب پیکربندی خود تغییر دهید.

# Set up variables
$SmtpServer = "192.168.1.1"
$SmtpPort = 25
$FromEmail = "admin-email-address"
$ToEmail = "recipient-email-address"
$OutputFile = "C:BackupEmailBackupResults.txt"

# Create backup results file
add-pssnapin windows.serverbackup
$NextBackup = Get-Date (Get-WBSummary | select "NextBackupTime" | ft -hide | out-string)
$LastBackup = (Get-Date $NextBackup) - (New-TimeSpan -day 1)
Get-WinEvent -LogName "Microsoft-Windows-Backup" | Where {$_.timecreated -ge $LastBackup} | Sort-Object TimeCreated | Format-Table TimeCreated, Message -AutoSize -Wrap | Out-File $OutputFile

# Construct and send email
$SmtpClient = new-object system.net.mail.smtpClient
$Msg = new-object Net.Mail.MailMessage
$SmtpClient.host = $SmtpServer
$SmtpClient.Port = $SmtpPort
$computer = gc env:computername
$Msg.From = $FromEmail
$Msg.To.Add($ToEmail)
$Msg.Subject = "## Backup Complete on " +$Computer +" ##"
$Msg.Body = "The backup for " +$Computer+" has completed. Please see the attached file for backup results."
$Msg.Attachments.Add($OutputFile)
$SmtpClient.Send($Msg)

در ادامه شما نیاز دارید یک scheduled task ایجاد کنید که اسکریپت Powershell را که شما ایجاد کرده‌اید را راه اندازی می‌کند. EmailBackupResults task به دو محرک پیکربندی شده که در شکل زیر نشان داده شده است، نیاز دارد. رویداد ۴ یک بک‌آپ موفق را نشان می‌دهد و رویداد ۵ یک بک‌آپ را نشان می‌دهد که failed شده است.

بک‌آپ ویندوز سرور

 

بک‌آپ ویندوز سرور

 

برای انجام این کار برنامه powershell.exe با یک دستور با آرگومان‌های “& C:BackupEmailEmailBackupResults.ps1” شروع می‌شود.
شما نیاز دارید که آرگومان‌های خود را برای مطابقت با محلی که اسکریپت را ذخیره کرده‌اید تغییر دهید.

بک‌آپ ویندوز سرور

اکنون، بک‌آپ شما که به زودی کامل می‌شود (با موفقیت یا شکست) و به آدرس ایمیلی که در اسکریپت‌پیکربندی وارد کردید یک ایمیل تاییدیه ارسال می‌شود که بک‌آپ به اتمام رسیده است. یک فایل متنی هم همراه ایمیل است که شامل نتایج بک‌آپ می‌شود.
همچنین ممکن است شما نیاز به پیکربندی یک Mail server داشته باشید که ایمیل‌های ناشناس را از آدرس IP سرور بک‌آپ قبول می‌کند.

 

اتصال امن به MSSQL Server توسط SQL Management Studio

1kviews

اتصال به SQL Server با استفاده از SQL Managment Studio به صورت پیش‌فرض امن نیست.
برای داشتن یک اتصال ایمن کافی است تنظیمات زیر را هنگام اتصال به SQL Managment Studio انجام دهید.
در اولین مرحله دقت داشته باشید که در قسمت server name حتما sql.wsp.zagrio.com را به طور کامل وارد کنید و گزینه Options را انتخاب نمائید.

securesqlmanagmer-01

بعد از وارد کردن اطلاعات در پنجره بعد برای داشتن یک ارتباط ایمن از تب Connection Properties از قسمت Connection گزینه Encrypt Connection را تیک بزنید. در شکل زیر این گزینه با کادر قرمز رنگ مشخص شده است.

securesqlmanagmer-02

با انجام این موارد شما می‌توانید یک ارتباط امن داشته باشید.

 

چگونه از rsync برای همگام‌سازی دایرکتوری‌های Remote و Local روی یک VPS استفاده کنیم

2.5kviews

Rsync که پایه و اساس remote sync است، یک ابزار برای همگام‌سازی فایل‌های Local و Remote است. با استفاده از این الگوریتم مقدار اطلاعات کپی شده تنها با حرکت بخش‌هایی از فایلهایی که تغییر کرده‌اند به حداقل می‌رسد. در این مقاله کاربردهای اساسی این ابزار سودمند را ارائه می‌دهیم. ما در این مثال‌ها از سرور مجازی Ubuntu 12.04 استفاده می‌کنیم اما شما می‌توانید از هر توزیع لینوکس استفاده کنید.

Rsync چیست؟

Rsync یک ابزار بسیار منعطف برای همگام‌سازی شبکه‌های فعال است. شما همچنین برای استفاده از این ابزار می‌توانید به پروتکل توسعه‌یافته شبکه مراجعه کنید.

هنگامی‌که ما در این مقاله به Rsyns رجوع می‌کنیم درواقع به سودمندی این ابزار اشاره می‌کنیم نه پروتکل.

با توجه به اینکه لینوکس و سیستم‌های Unix-like در همه جا حضور دارند و به عنوان یک ابزار دارای اسکریپت سیستم، محبوبیت بسیاری دارند باعث شده که این مورد در اکثر توزیع‌های لینوکس به صورت پیش‌فرض قرار داده شود.

Basic Syntax

سوئیچ‌های پایه‌ای Rsync بسیار ساده هستند و اجرای آن‌ها شبیه به ssh, scp, و cp است.

ما می‌خواهیم دو دایرکتوری برای تست ایجاد کنیم و با دستورات زیر برخی از فایل‌ها را تست کنیم:

cd ~ mkdir dir1 mkdir dir2 touch dir1/file{1..100}

درحال حاضر ما یک دایرکتوری به نام dir1 با ۱۰۰ فایل خالی درون آن داریم.

ls dir1
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90
file10 file19 file28 file37 file46 file55 file64 file73 file82 file91
file100 file2 file29 file38 file47 file56 file65 file74 file83 file92
file11 file20 file3 file39 file48 file57 file66 file75 file84 file93
file12 file21 file30 file4 file49 file58 file67 file76 file85 file94
file13 file22 file31 file40 file5 file59 file68 file77 file86 file95
file14 file23 file32 file41 file50 file6 file69 file78 file87 file96
file15 file24 file33 file42 file51 file60 file7 file79 file88 file97
file16 file25 file34 file43 file52 file61 file70 file8 file89 file98
file17 file26 file35 file44 file53 file62 file71 file80 file9 file99

ما همچنین یک دایرکتوری خالی به نام dir2 داریم.

برای یکی کردن محتویات dir1 به dir2 در همان سیستم دستور زیر را تایپ کنید:

rsync -r dir1/ dir2

گزینه r- بر ای تمامی زیرپوشه‌ها نیزعمل می‌کند و برای یکی کردن دایرکتوری لازم است.

همچنین می‌توانیم از سوئیچ a- به جای آن استفاده کنیم.

rsync -a dir1/ dir2

گزینه a- یک سوئیچ ترکیبی است.

این یک پایه برای archive و همگام‌سازی به صورت بازگشتی و حفظ لینک‌های نمادین، فایل‌های دستگاه و خاص، زمان ویرایش، گروه، مالک و سطح دسترسی است.

به همین دلیل معمولا از r- استفاده می‌شود و این چیزی است که معمولا شما می‌خواهید استفاده کنید.

یک نکته مهم:

ممکن است که متوجه شده باشید که یک / در پایان اولین آرگومان در دستورات بالا وجود دارد.

rsync -a dir1/ dir2

این کار لازم است و به معنی محتویات درون dir1 است.

در موارد جایگزین، بدون/باید مکان dir1، محتوی دایرکتوری درون dir2 باشد. به این‌صورت سلسله مراتبی ایجاد می‌شود که مانند زیر به نظر می‌رسد:

~/dir2/dir1/[files]

همیشه آرگومان‌ها را قبل از اجرای یک دستور rsync مجددا چک کنید.

Rsync با عبور از گزینه‌های n- یا dir- روش‌هایی برای انجام این کار فراهم می‌کند. سوئیچ v- برای دریافت خروجی مناسب است.

rsync -anv dir1/ dir2
sending incremental file list
./
file1
file10
file100
file11
file12
file13
file14
file15
file16
file17
file18
. . .

این خروجی را با خروجی که هنگام حذف / بدست می آورید مقایسه کنید.

rsync -anv dir1 dir2
sending incremental file list
dir1/
dir1/file1
dir1/file10
dir1/file100
dir1/file11
dir1/file12
dir1/file13
dir1/file14
dir1/file15
dir1/file16
dir1/file17
dir1/file18
. . .

در این‎جا می‎بینید که دایرکتوری‌هایتان منتقل شدند.

چگونه از rsync برای همگام‌سازی یک Remote system استفاده کنیم؟

همگام‌سازی به یک Remote system بسیار واضح و بدیهی است اگر دسترسی SSH به یک remote machine داشته باشید و Rsync درهر دو سمت نصب شده باشد. اگر نیاز به راه‌اندازی کلید SSH دارید set up SSH keys را کلیک کنید.

هنگامی‌که شما دسترسی SSH بین دو ماشین دارید، می‌توانید قبل از remote computer با استفاده از syntax همگام سازی کنید ( توجه داشته باشید که ما می‌خواهیم دایرکتوری‌های واقعی را در این مورد انتقال دهیم، بنابراین / را حذف می کنیم).

rsync -a ~/dir1 username@remote_host:destination_directory

این کار Push عملیات نامیده می‌شود چون دایرکتوری را از یک سیستم Local به یک Remote سیستم فشار (Push) می‌دهد.

pull” عملیات مخالف با Push است. عمل Pull برای همگام‌سازی یک دایرکتوری از Remote سیستم به یک سیستم Local است. اگر dir1 به جای سیستم Local بر روی Remote سیستم قرار داشته باشد Syntax به صورت زیر است:

rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machine

مانند CP و ابزارهای مشابه، اولین آرگومان به عنوان مبدا و دومین آرگومان مقصد است.

گزینه‌های مفید برای Rsync

Rsync گزینه‌های بسیاری برای تغییر رفتار پیش‌فرض ارائه می‌کند. ما در حال حاضر در مورد بعضی از پرچم‌های ضروری گفتگو می‌کنیم.

اگر شما درحال انتقال فایل‌هایی هستید که فشرده شده نیستند، مانند فایل‌های متنی، می‌توانید با اضافه کردن گزینه z- فایل‌ها را فشرده کنید و انتقال را کاهش دهید.

rsync -az source destination

سوئیچ p- خیلی مفید است. این سوئیچ ترکیب سوئیچ‌های progress — و partial — است. اولین مورد پیشرفت انتقال را نشان می‌دهد و دومی به شما اجازه می‌دهد تا انتقال قطع شده را مجددا ارسال کنید.

rsync -azP source destination
sending incremental file list
./
file1
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#2, to-check=98/101)
file100
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#3, to-check=97/101)
file11
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#4, to-check=96/101)

اگر دستور را دوباره اجرا کنیم خروجی کوتاه‌تری خواهیم داشت چون هیچ تغییری ایجاد نشده است.

این مورد قابلیت rsync را بیان می‌کند که با استفاده از تاریخ تغییر فایل‌ها بتواند مشخص کند که آیا تغییراتی بر روی فایل‌ها اعمال شده است یا نه.

rsync -azP source destination

sending incremental file list
sent 818 bytes received 12 bytes 1660.00 bytes/sec
total size is 0 speedup is 0.00

ما می‌توانیم زمان اصلاح را در برخی از فایل‌ها بروزرسانی کنیم و می‌بینیم که Rsync هوشمندانه فایل‌های تغییر یافته را مجددا کپی می‌کند.

touch dir1/file{1..10}

rsync -azP source destination
sending incremental file list
file1
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#1, to-check=99/101)
file10
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#2, to-check=98/101)
file2
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#3, to-check=87/101)
file3
۰ ۱۰۰% ۰٫۰۰kB/s 0:00:00 (xfer#4, to-check=76/101)
. . .

به منظور این‌که هر دو دایرکتوری که به درستی همگام شده را حفظ کنیم، اگر این فایل‌ها از منبع حذف شده باشند لازم است که فایل‌ها را از دایرکتوری مقصد حذف کنیم. Rsync بطور پیش‌فرض هیچ فایلی را از دایرکتوری مقصد حذف نمی‌کند.
ما می‌توانیم این رفتار را با گزینه delete – تغییر دهیم. قبل از استفاده از این گزینه از گزینه dry –run- استفاده کنید و این تست را برای آزمایش از دست دادن اطلاعات انجام دهید.

rsync -a --delete source destination

اگر مایل به حذف فایل‌های خاص یا دایرکتوری واقع در دایرکتوری که درحال همگام‌سازی آن هستید می‌توانید بعد از گزینه –exclude= آنها را در یک لیست با کاما از هم جدا کنید.

rsync -a --exclude=pattern_to_exclude source destination

اگر ما یک الگوی مشخص برای حذف کردن داشته باشیم، می‌توانیم برای فایل‌هایی که با الگوی متفاوت مطابق هستند با استفاده از گزینه –include= استثنا ایجاد کنیم.

rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destination

نتیجه

Rsync می‌تواند به سادگی فایل‌های شما را بر روی بستر شبکه منتقل کند و همچنین با قدرت بالا پوشه‌های موجود بر روی سیستم شما را همگام (sync) کند. انعطاف‌پذیری Rsync گزینه‌های خوبی برای عملیات بر روی فایل‌ها سطوح مختلف ایجاد می‌کند.

اسکریپت powershell

اسکریپت Powershell برای فشرده‌سازی فایل‌های VHDX

670views

اسکریپت powershell شامل یک تابع به نام Compact-VHDX است که می‌توان با استفاده از آن سایز دیسک‌های VHDX را که به صورت Dynamic تعریف شده‌اند و بیشتر از فضای واقعی درون آن‌ها را اشغال کرده‌اند را کاهش داد.

فایل VHDX باید حتما در ابتدا غیرفعال یا dismount شود تا اسکریپت powershell بتواند به آن دسترسی داشته باشد.

برای استفاده فایل زیر را از گالری Technet دریافت نمائید و مطابق راهنمای فراهم شده به شرح ذیل از آن استفاده نمائید.

https://gallery.technet.microsoft.com/scriptcenter/Powershell-Script-to-ae5c00ba/file/126931/1/Compact-VHDX.rar

دریافت راهنما:

Help Compact-VHDX -Full

مثال:

Compact-VHDX -VHDXPath D:\Dynamic1.vhdx -SDelete .\sdelete.exe

راهنما:

NAME
Compact-VHDX

SYNOPSIS
Function to remove unused space in Dynamic VHDX file

SYNTAX
Compact-VHDX [-VHDXPath] [-SDelete] [[-LogFile] ] [-WhatIf] [-Confirm] []

DESCRIPTION
Function is designed to work on Dynamic VHDX files – not Fixed.

To reduce size of Fixed VHDX file convert it to dynamic first then use this function.
For example:
Dismount-VHD -DiskNumber 13 -Confirm:$false
Convert-VHD -Path ‘d:\Fixed1.vhdx’ -DestinationPath ‘d:\Dynamic2.vhdx’ -VHDType Dynamic
Where ’13’ is the disk number as shown in Disk Management/Computer Management.

Before using this script, empty space on the VHDX disk first by deleting un-needed and
temporary files, and emptying the recycle bin

PARAMETERS
-VHDXPath
Path to VHDX file

Required? true
Position? 1
Default value
Accept pipeline input? true (ByValue, ByPropertyName)
Accept wildcard characters? false

-SDelete
Path to the SDelete.exe tool.
The tool is bundled with this script for ease of use. It can be downloaded from
http://technet.microsoft.com/en-us/sysinternals/bb897443.aspx

Required? true
Position? 2
Default value .\SDelete.exe
Accept pipeline input? false
Accept wildcard characters? false

-LogFile

Required? false
Position? 3
Default value “.\Compact-VHDX-$(Get-Date -format yyyyMMdd_hhmmsstt).txt”
Accept pipeline input? false
Accept wildcard characters? false

-WhatIf []

Required? false
Position? named
Default value
Accept pipeline input? false
Accept wildcard characters? false

-Confirm []

Required? false
Position? named
Default value
Accept pipeline input? false
Accept wildcard characters? false

This cmdlet supports the common parameters: Verbose, Debug,
ErrorAction, ErrorVariable, WarningAction, WarningVariable,
OutBuffer, PipelineVariable, and OutVariable. For more information, see
about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).

NOTES
Function by Sam Boutros
v1.0 – 10/12/2014

————————– EXAMPLE 1 ————————–

C:\ZAGRIO.COM\PS>Compact-VHDX -VHDXPath D:\Dynamic1.vhdx -SDelete .\sdelete.exe

RELATED LINKS
https://superwidgets.wordpress.com/category/powershell/
https://www.zagrio.com/