ساخت یک نمونه شخصی از آزادقلم

از آنجایی که آزادقلم، یک نرم‌افزار آزاد است و یکی از اهداف ما این است که هر شخصی، بتواند یک نمونه از آن را برای خودش اجرا کند، این آموزش نوشته شد. همچنین لازم به ذکر است که این آموزش، برای سایر نرم‌افزارهایی که با چارچوب سیناترا (لینک) نوشته شده‌اند نیز می‌تواند کارا باشد.

تهیه کارساز

برای اجرای آزادقلم، شما نیاز به یک کارساز دارید. به طور معمول، کارسازهای داخل کشور برای کاربران داخل و کارسازهای خارج از کشور برای کاربران بین‌المللی توصیه می‌شود. طبق تجربه گذشته، کارسازهای کشور آلمان برای استفاده داخلی نیز عملکرد خوبی داشته‌اند.

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

اختصاص دادن زیردامنه

برای اختصاص دادن زیردامنه، در سامانه مدیریت نام‌دامنه (DNS) خود، کافیست یک رکورد از نوع A با آدرس پروتکل اینترنتی (IP) کارساز خود قرار دهید. پیشنهاد ما این است که اگر دامنه اصلی شما example.com است، از زیردامنه fonts.example.com استفاده کنید.

بسیاری از سامانه‌های مدیریت نام‌دامنه مانند Cloudflare راهنمای خوبی برای اختصاص دادن زیردامنه دارند. برای اطلاعات بیشتر پیرامون مدیریت دامنه‌های خود، به راهنمای سامانه مدیریت نام‌دامنه خود مراجعه کنید.

تهیه گواهینامه SSL

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

sudo apt install nginx python-certbot-nginx

با کمک دستور بالا، کارساز وب nginx و همچنین certbot – که ابزار ارائه شده توسط Let’s Encrypt است – روی کارساز شما نصب خواهند شد.

پس از نصب ابزارهای فوق، دستور زیر را با زیردامنه خود اجرا نمایید :

sudo certbot --nginx -d fonts.example.com -d www.fonts.example.com

توجه : برای این که گواهینامه برای www نیز معتبر باشد، نیاز دارید یک رکورد A برای زیردامنه www.fonts.example.com نیز اختصاص دهید.

پس از انجام این مراحل، شما با اجرای دستورات زیر، می‌توانید nginx را فعال کنید :

sudo systemctl enable nginx
sudo systemctl start nginx

خط اول، خدمت nginx را «فعال» می‌کند. یعنی اگر شما زمانی کارساز خود را خاموش یا راه‌اندازی مجدد کنید، این سرویس فعال می‌ماند. خط دوم، این خدمت را «شروع می‌کند».

نصب روبی

از آنجایی که آزادقلم با روبی نوشته شده است، شما نیاز به داشتن روبی روی کارساز خود دارید. برای نصب روبی، از RVM استفاده کنید (لینک). پس از اتمام نصب توسط rvm این دستور را اجرا کنید تا آخرین نسخه روبی (در زمان نوشتن این مطلب) که با آزادقلم سازگار است، روی کارساز شما نصب شود :

source ~/.rvm/bin/rvm
rvm install 2.6.6

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

سپس، از محیط پوسته کارساز خارج شده و دوباره به کارساز SSH کنید و دستور زیر را اجرا نمایید:

rvm use 2.6.6 --default

به این شکل، شما نسخه مورد نظر روبی را نصب و فعال کردید و آن را پیش‌فرض خود قرار دادید.

دریافت کدهای آزادقلم

برای دریافت کدهای آزادقلم، شما نیاز دارید که روی کارساز خود git نصب کنید. عموما به صورت پیش‌فرض، این بسته روی کارساز نصب است. چنانچه نبود، با اجرای دستور زیر از نصب بودن آن اطمینان حاصل کنید:

sudo apt install git

توجه داشته باشید در برخی توزیع‌ها/سیستم‌عامل‌ها این بسته ممکن است با نام‌هایی چون git-scm و یا git-lite نیز موجود باشد.

پس از نصب گیت، کافی است با دستور زیر کدهای آزادقلم را دریافت نمایید :

git clone https://gitlab.com/prp-e/font-api

کدها درون پوشه‌ای به نام font-api هستند.

اجرای آزادقلم

ابتدا یک نشست با کمک نرم‌افزار screen ایجاد کنید :

screen -S fonts

حال در این نشست، به کمک دستور cd به داخل پوشه font-api بروید (ما فرض کرده‌ایم که شما کدهای آزادقلم را در پوشه خانگی خود بارگذاری نموده‌اید). سپس، دستورات زیر را اجرا نمایید:

gem install bundler
bundle

خط اول، بسته bundler را نصب کرده و خط دوم، این نرم‌افزار را اجرا می‌کند. bundle یک ابزار مدیریت پیش‌نیاز/هم‌نیاز در زبان‌برنامه‌نویسی روبی است که جم‌های مورد نیاز شما را به صورت ایزوله برای هرپروژه دانلود می‌کند.

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

ruby api.rb

به این شکل، نرم‌افزار روی پورت ۴۵۶۷ کارساز شما اجرا می‌شود. با فشردن کلید های CTRL+A و سپس D از نشست خارج شوید.

پیکربندی nginx

پس از اجرای موفقیت آمیز آزادقلم، نوبت به پیکربندی nginx می‌رسد. با ویرایش‌گر دلخواه خود (برای سادگی بیشتر ما از nano استفاده می‌کنیم) فایل زیر را باز کنید :

sudo nano /etc/nginx/sites-enabled/default

سپس، توسط قابلیت جستجو (در نانو با CTRL+W ) به دنبال زیردامنه fonts.example.com بگردید. در این قسمت، باید تغییراتی ایجاد کنیم.

ابتدا، مسیر ریشه را به این شکل تغییر می‌دهیم :

root /home/user/font-api/public;

به جای user نام کاربری خود را قرار دهید (در بسیاری از سرویس‌دهندگان کارساز، نام کاربری پیش‌فرض معمولا نام سیستم‌عامل است. برای مثال اگر اوبونتو باشد، نام کاربری شما ubuntu است. اما ممکن است به شما دسترسی ریشه داده باشند که در این صورت، توصیه می‌شود یک کاربر غیر ریشه برای اجرای آزادقلم روی کارساز خود بسازید).

سپس، قسمت location و هرچه در آن است را حذف کرده و سپس این موارد را جایگزین کنید:

location / {
  if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain; charset=utf-8';
        add_header 'Content-Length' 0;
        return 204;
     }
     if ($request_method = 'POST') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
     }
     if ($request_method = 'GET') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
     }
  # First attempt to serve request as file, then
  # as directory, then fall back to displaying a 404.
  try_files $uri $uri /= 404;
  proxy_pass http://localhost:4567;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
}

سپس، پرونده پیکربندی خود را ذخیره کرده و ببندید. پس از آن، با اجرای دستور زیر مطمئن شوید که پیکربندی شما درست است:

sudo nginx -t

در پرونده پیکربندی، ما ابتدا مشکل CORS را حل کرده و سپس یک پیشکار پشت‌ورو (Reverse Proxy) ایجاد کردیم. سپس، مطمئن شدیم که پیکربندی‌های ما درست هستند. حالا نوبت به این است که به nginx بفهمانیم پیکربندی‌های جدیدی دارد. پس دستورات زیر را اجرا می‌کنیم :

sudo systemctl reload nginx
sudo systemctl restart nginx

خط اول، صرفا پیکربندی‌ها را بارگذاری مجدد کرده و خط دوم، خدمت nginx را از دوباره راه‌اندازی می‌کند.

آزمایش API

برای آزمایش، کافیست روی رایانه‌ای به جز کارساز خود، بسته curl را نصب کرده و دستور زیر را اجرا کنید :

curl https://fonts.example.com/list

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

افزودن قلم

اگر قلم مورد نظر شما در دسترس نبود، نگران نباشید. کافیست با الگو گیری از پوشه‌های سایر قلم‌ها، یک پوشه برای قلم خود ساخته و CSS های لازم را بنویسید (در حال حاضر متاسفانه به صورت خودکار CSS ساخته نمی‌شود). این ویژگی، به زودی به آزادقلم اضافه خواهد شد. همچنین، به زودی آموزش افزودن فونت به همین نسخه نیز منتشر می‌شود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.