شاید پیش اومده که بخواید مطلبی رو توی اینترنت منتشر کنید، حالا چه به عنوان وبلاگ، صفحات معرفی و راهنمای پروژه، صفحات معرفی شخصی و رزومه، یک کتاب آنلاین یا هر چیز دیگهای. اگر همچین تجربهای رو داشتید احتمالا با موضوعاتی مثل خرید هاست، انتقال فایلها، بکآپ گرفتن، خرید دامنه، پایگاه داده یا همون دیتابیس ها و خیلی اسامی دیگه شبیه به اینها مواجه شده باشید، این پست قصد داره که یه راه حل برای خلاصی از تمام این موضوعات رو ارائه کنه و اگر هم که تا امروز درگیر این مسایل نشدید که قصد داره جلوی مواجهه و درگیریتون رو با خیلی از مسایل فنی انتشار سایت روی اینترنت رو بگیره. و البته با حذف این موارد و نگهداری فایلهامون روی کامپیوتر شخصی و گیتهاب، مسائل مالی رو هم حذف کنیم و تقریبا به صفر برسونیمش یا حداکثر هزینهی ثبت یک دامنه به عنوان تنها هزینه برامون مطرح باشه.
بدون شک راه اندازی یک سرویس مثل ایمیل یا فروشگاه آنلاین یا یک شبکه اجتماعی و امثال اینها رو نمیشه با استفاده از یک راه حل استاتیک و نگهداری فایلها روی کامپیوتر شخصی و با حذف کردن دیتابیس و با کمک سرویسهای میزبانی آزاد مثل گیتهاب و... راهاندازی کرد.
پس از این راه حل برای کجا استفاده میشه کرد؟ همونطور که توی شروع کار گفتم، برای یک وبلاگ، صفحات معرفی یا راهنمای پروژهها، ساختن یک رزومه، صفحات معرفی شخصی و دربارهی من، یک کتاب آنلاین و امثال اینها.
چرا استاتیک؟
- سرعت. صفحات استاتیک سریع هستند، یک بار برای تولید شدنشان وقت گذاشته میشود و بعد از آن برای هر بار لود شدن، نیازی به ارتباط با دیتابیس برای دریافت محتوا و سپس تولید و آمادهسازی آن برای انتشار ندارند.
- ارزان بودن. صفحات ایستا برای انتشار نیاز به یک سرور اختصاصی ندارند، به راحتی و در هر جایی میتوان از آنها میزبانی کرد. همچنین اگر از سرور اختصاصی استفاده کنید، به پردازشگر یا حافظهی قوی نیاز ندارند.
- امنیت. سیستمهای مدیریت محتوای دینامیک که به وسیلهی یک فضای میزبانی نگهداری و اجرا میشوند، همه سابقهی نفوذپذیری دارند، اما هنگام استفاده از صفحات ایستا، نگرانی ازاین بابت نخاهید داشت، تنها کافی است سرور شما امن باشد.
- قابل انتقال. انتقال صفحات ایستا به راحتی انتقال فایلهای موسیقی است، فقط آنها را کپی کنید و هرجا که نیاز بود منتقل کنید. نه نیازی به نصب شدن دارند و نه به پیشنیاز خاصی محتاج هستند.
یک توضیح کوچک
مثلما این نوشته قصد نداره موضوع رو به راحتی حل کنه یا چیزی شبیه به خیلی از پستهای مرسوم باشه که مدعی حل یک مشکل تنها با دوکلیک هستن، بلکه به شکل صحیحتر باید بگیم قصدمون جایگزین کردن یه سری مسائل و مشکلات سنتی با یه سری مسائل و مشکلات مدرنتر و مطقیتر و کمتر هست. پس برای شروع باید تا حدی به این مسایل آشنا باشیم:
- نصب نرم افزار روی کامپیوتر شخصی
- استفاده ساده و ابتدایی از گیت
- ثبت نام در گیت هاب و داشتن یک اکانت
شروع
قدم اول، مدیریت محتوا
صفحات ایستا رو میشه به راحتی با استفاده از html و css ساخت و آپلود کرد، اما اگر بخوایم کنترل بییشتری برای مدیریت محتوایی که تولید میکنیم، قالب بندی پوستهها، آرشیو کردن و دسته بندی اتوماتیک موضوعات، صفحه بندی نوشتههای قدیمیتر و مسائلی مثل اینها داشته باشیم، باید از یک سایت ساز استاتیک استفاده کنیم، که البته از تیتر این نوشته مشخصه که تصمیم داریم از میرا استفاده کنیم، اما چرا؟ برای من چند دلیل وجود دارد:
- میرا را خودم نوشتهام :) دلیل منطقی نیست اما به هر حال یک دلیل است دیگر
- بیشتر از یک پروژه یا سایت را میشود با میرا در یک مخزن مدیریت کرد و نیازی نیست برای هر سایت جدید یک مخزن جدید ایجاد کنیم
- انعطاف پذیری بالایی دارد و برای هرکاری میتونه مورد استفاده قرار بگیره
- ...
پس کار را با نصب میرا شروع میکنیم، میرا برای نصب به پرل نسخه 5.12 به بالا نیاز دارد، برای تست این که پرل را روی سیستم خود دارید یا نه، terminal یا command line را باز کنید و تایپ کنید:
perl -v
اگر پرل از قبل نصب شده باشد متنی شبیه به این را خواهید دید که ورژن پرل نصب شده را به شما نشان خواهد داد
This is perl 5, version 26, subversion 0 (v5.26.0)
اگر از سیستم عاملهای شبه یونیکس استفاده میکنید احتمالا پرل روی دستگاه شما نصب شده است، اما اگر از ویندوز استفاده میکنید Strawberry Perl یا «پرل توت فرنگی» را ابتدا نصب کنید توت فرنگی cpan minus را به شکل توکار همراه خود دارد، برای نصب میرا تایپ کنید:
cpanm Mira
و برای سیستمهای شبه یونیکس اگر capan minus را ندارید آنرا نصب کنید
curl -L https://cpanmin.us | perl - --sudo App::cpanminus
و بعد برای نصب میرا
sudo cpanm Mira
یا بدون استفاده از cpanm و مستقیم از طریق perl shell میرا را نصب کیند:
$ sudo perl -MCPAN -e shell
> install Mira
حالا برای محل نگهداری منابع، نوشتههای خام و خروجی سایت یک دایرکتوری جدید میسازیم، داخل این دایرکتوری جدید میشویم و این دستور را تایپ میکنیم:
mira init میرا در این مسیر جدید پیکربندی شده و تمام دایرکتوریها و فایلهای مورد نیاز خودش رو میسازه. قدم بعدی نوشتن یک پست جدید در وبلاگ هست
mira new -t "hello word" -f blog
بعد از تایپ این دستور میرا یک پیام نمایش میده که محل ذخیره شدن و اسم فایل رو نشون میده، فایل رو ویرایش میکنیم و هر متنی بخوایم توی بدنه ای فایل بعد از --- دوم مینویسیم، مثلا اولین نوشته همین وبلاگ چیزی شبیه به این هست:
---
utid: 20180301002154
date: 2018-03-01 00:21:54
title: سلام دنیا از دریچهی میرا
_index: hello world from mira
categories:
- میرا
tag:
- میرا
- سلام دنیا
---
من اهل تجربه کردن هر چیز جدیدی هستم، حتی شاید بشه گفت که به شکلی معتاد تست کردن باشم، البته اکثرا بعد از مدتی به خاطر تکرار نشدن از یادم میرن و از اونجایی که هیچ وقت هم دیگه نیازی بهشون پیدا نمیکنم چندان برام مهم نیست، اما خیلی وقتها هم بوده که چیزهایی که بارها بهشون نیاز پیدا کردم یا کس دیگهای براش سوال شده بوده رو فراموش کرده بودم. سالها بود که تصمیم داشتم مواردی که رو به نظرم کاربردیتر میان رو به شکل یک وبلاگ بنویسم تا هم آرشیوی برای خودم باشه و همینکه شاید به کار یکی دیگه بیاد.
نهایتا تصمیم گرفتم که یک وبلاگ رو به شکل استاتیک برای این کار بسازم، مدتی رو میگشتم و دنبال گزینه برای ساختن وبلاگ استاتیک بودم، هر کدوم از سایتسازهای استاتیک نکات مثبت و منفی خودشون رو داشتن، تصمیم گیری برام سخت شده بود و خوب چون من اهل اختراع کردن دوبارهی چرخ هستم، تصمیم گرفتم که تمام نکاتی رو که از نظر خودم مثبت بودن و حس میکردم مورد نیازم هستن رو کنار هم جمع کنم و مشکل خودم رو یک بار برای همیشه حل کنم، این شد که نوشتن [میرا](miraxy.githu.io/fa/) رو شروع کردم.
مطمینا میرا هنوز کار زیادی برای انجام دادن داره و تبدیل به اون ایدهآلی که توی ذهنم بود نشده، اما به مرحلهای هم رسیده که کارش رو بتونه انجام بده. بزرگترین ضعف میرا اینه که هنوز از نظر مستند سازی و نوشتن راهنمای کاربردی خیلی کمبود داره و مستنداتش هنوز گنگ و نامفهموم هستن که امیدوار به کمک دوستان هستم برای سر و سامان دادن بهش و نوشتن یک راهنمای کاربری ساده برای استفاده عمومی و البته یکی از کمبودهای دیگه میرا هم نبودن قالبها و استراکچرهای آماده براش هست که برای این قسمت هم چشم امیدم به کمک دوستان و جامعه کاربری هست.
میرا به شکل یک نرم افزار آزاد و با لایسنس GPL-3.0 توسعه پیدا میکنه و به کدهاش میتونید در مخازن [گیتهاب](https://github.com/kiamazi/mira) پروژه دسترسی داشته باشید.
### سلام دنیا.
این اولین نوشته این وبلاگ است که با کمک [میرا](miraxy.githu.io/fa/) ساخته شده.
در آخر کار هم خروجی سایت رو میسازیم
mira build
میرا تمام چیزی که برای انتشار نیاز داریم رو توی دایرکتوری public برامون ساخته و فقط کافیه که به محلی که میخوایم توی اینترنت منتشر بشه منتقلش کنیم. اگر دوست داشته باشیم پیش نمایشی از چیزی که تولید شده رو ببینیم هم میتونیم از این دستور استفاده کنیم:
mira view
یک سرور از محتوایی که تولید کردیم روی کامپیوتر شخصیمون استارت میشه که روی لوکال هاست و پورت ۵۰۰۰ قابل دیدن هست.
برای خواندن بیشتر در مورد میرا و کارکردش میتونید به صفحات مستندات میرا مراجعه کنید
قدم دوم، انتشار محتوا
تصمم داریم که از گیت هاب به عنوان بستر انتشار استفاده کنیم، پس اولین کاری که میکنیم یک مخزن در گیتهاب با الگویی شبیه به این میسازیم:
username.github.io
به جای username اسم یوزر خودمون راباید بنویسیم، حالا بر میگردیم به ترمینال و وارد دایرکتوری public میشیم، گیت رو توی این دایرکتوری پیکربندی میکنیم و محتوای تولید شده توی این دایرکتوری رو به مخزنی که توی گیت هاب ساختیم push میکنیم
تمام، چند دقیقه صبر کنید و به این آدرس مراجعه کنید
https://username.github.io/
برای دیدن جزییات بیشتر برای انتخاب محل انتشار میتونید این قسمت از مستندات میرا رو مطالعه کنید: انتخاب محل انتشار
https://github.com/kiamazi/kiavash.one/blob/master/content/blog/2018-03-11-weblog-with-mira-and-github.md
میتوانید آنرا ویرایش کنید. البته باید یادآوری کنم که هر ویرایشی قبل از اتشار نیاز به تایید دارد.
این وبلاگ از disqus برای سیستم نظردهی استفاده میکند، اگر فرم نظردادن را نمیبینید احتمالا کسی به جای شما تشخیص داده که این سرویس مناسبتان نیست و آن را از دسترس شما خارج کرده، برای نظردادن در این شرایط از ابزار رفع فیلتر استفاده کنید