Linux & Backend
5 دقیقه مطالعه
۱۳۹۷/۱۱/۷

راهنمای نصب و کانفیگ DreamFactory در لینوکس

مهدی امیری متین
مهدی امیری متین
برنامه‌نویس ارشد فول‌استک و مهندس ارشد DevOps
اشتراک‌گذاری
𝕏
راهنمای نصب و کانفیگ DreamFactory در لینوکس
منبع رسمی این یادداشت فنی در وبلاگ Virgool
برای مطالعه کامل، دسترسی به کامنت‌ها و مشارکت در گفتگو به Virgool مراجعه فرمایید.
مشاهده و نظردهی در Virgool
نحوه استقرار و پیکربندی پلتفرم مدیریت خودکار APIهای RESTful دریم‌فکتوری در محیط سرور لینوکس با Nginx و PHP-FPM.

دریم فکتوری چیست ؟‌ خودتان ببینید


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

بر اساس متسندات موجود در وب سایت Dream factory برای نصب آن روش های مختلفی وجود دارد که هر کدام از آنها مزیت های خاص خودشان را دارند و ما ساده ترین روش و بی دردسر ترین روش را انتخاب کردیم و آن این است که فرض میکنیم از قبل php و mysql و nginx را در داکر نصب داریم پس نیازی به نصب مجدد آنها نیست لذا از آنجایی که dream factory هم یک پروژه مبتنی بر فریم ورمک لاراول است آنرا به عنوان یک پروژه لارول بر اساس مستنداتی که در وب سایت دریم فکتوری موجود است نصب میکنیم.

نکته مهم : دریم فکتوری نیازمند به یکسری پیشنیازهایی می باشد که قبل از نصب باید در لینوکس نصب و فعال باشند.

برای نصب پیشنیاز ها کامند های زیر را اجرا میکنیم.

$ sudo apt-get install git curl zip unzip

پس از نصب موارد بالا نیاز هست تا برخی از قابلیت های php را نیز نصب و فعال کنیم در اینجا ما این قابلیت ها را برای nginx نصب و فعال میکنیم و نسخه php ما هم 7.0 می باشد.

sudo apt-get install php7.0-fpm php7.0-common php7.0-xml php7.0-cli php7.0-curl php7.0-json php7.0-mcrypt php7.0-mysqlnd php7.0-sqlite php7.0-mbstring php7.0-zip php7.0-bcmath

سپس فایل php.ini را با استفاده از کامند زیر جهت ویرایش باز میکنیم:

sudo nano /etc/php/7.0/fpm/php.ini

سپس به دنبال عبارت زیر میگردیم و آنرا به شکل ذکر شده تغییر میدهیم:

;cgi.fix_pathinfo=1

تغییر به

cgi.fix_pathinfo=0

از آنجایی که دریم فکتوری از mongoDb در بعضی از پکیج هایش استفاده میکند باید قابلیت پشتیبانی از mongoDB را نیز برای php باید فعال کنیم بدین منظور ابتدا نیازمندی های آنرا نصب میکنیم :

sudo apt-get install php7.0-dev php-pear build-essential libsslcommon2-dev libssl-dev libcurl4-openssl-dev pkg-config

سپس برای نصب آن کامند زیر را اجرا میکنیم:

sudo pecl install mongodb

سپس اگر فایل ini آن خودکار ایجاد نشد با کامند زیر آنرا ایجاد میکنیم:

sudo sh -c 'echo "extension=mongodb.so" > /etc/php/7.0/mods-available/mongodb.ini'

و در نهایت قابلیت پشتیبانی از mongodb را برای php با کامند زیر فعال میکنیم:

sudo phpenmod mongodb

اگر composer در سیستم نصب نباشد ابتدا باید آنرا با کامند های زیر نصب کنید:

$ cd ~\n$ mkdir bin\n$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"\n$ php composer-setup.php --install-dir=/home/dfuser/bin --filename=composer

حالا برای نصب دریم فکتوری یک دایرکتوری به نام dreamfactory در مسیر /var/www/html ایجاد میکنیم:

$ sudo mkdir /var/www/html/dreamfactory

سپس وارد آن میشویم و سورس لاراول دریم فکتوری را با کامند زیر از github دریافت میکنیم:

$ git clone https://github.com/dreamfactorysoftware/dreamfactory.git ./

پس از clone شدن کامل پروژه کافی است با استفاده از کد زیر پکیج های مورد نیاز دریم فکتوری را دانلود و نصب کنید:

$ composer install --no-dev

حالا برای ایجاد فایل .env پروژه دستور زیر را اجرا میکنیم:

$ php artisan df:env

در این مرحله نوع دیتابیس را سوال میکند که ما mysql را که در داکر قبلا نصب داشتیم انتخاب میکنیم دقت کنید این دیتابیس مربوط به خود سیستم دریم فکتوری هست و ارتباطی به Api ندارد شما بعدا میتوانید هر تعداد دیتابیس را api بدهید.نام دیتابیس و کاربر و رمز عبور و هاست آن را که میپرسد بدهید اگر اشتباهی رخ داد میتوانید فایل .env را ویرایش کنید.

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

php artisan df:setup

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

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

$ sudo chown -R www-data:root storage/ bootstrap/cache/\n$ sudo chmod -R 2775 storage/ bootstrap/cache/\n$ php artisan cache:clear

حالا برای اینکه دریم فکتوری را در مرورگر ببینیم میبایست فایل کانفیگ جدیدی برای nginx ایجاد کنیم و کانفیگ زیر را در آن قرار میدهیم :

server {\nlisten 80 default_server;\nlisten [::]:80 default_server ipv6only=on;\nroot  /usr/share/nginx/html/dreamfactory/public;\nindex index.php index.html index.htm;\nserver_name drfactory.local;\ngzip on;\ngzip_disable "msie6";\ngzip_vary on;\ngzip_proxied any;\ngzip_comp_level 6;\ngzip_buffers 16 8k;\ngzip_http_version 1.1;\ngzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;\nlocation / {\ntry_files $uri $uri/ /index.php?$args;\n}\nerror_page 404 /404.html;\nerror_page 500 502 503 504 /50x.html;\nlocation = /50x.html {\nroot /usr/share/nginx/html;\n}\nlocation ~ \\.php$ {\nfastcgi_pass   php:9000;\ntry_files $uri $uri/ /index.php?$query_string;\ninclude        fastcgi_params;\nfastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;\n}\n}

و در نهایت دامنه drfactory.local را به 127.0.0.1 در فایل hosts سیستم تنظیم میکنیم با این وجود دیگر کسی از خارج از سرور و با استفاده از آی پی سرور هم قادر به دستیابی به پنل و api دریم فکتوری نخواهد بود اما برای ابتدای کار و زمانی که میخواهد Api را ایجاد کنید باید بتوانید وارد پنل دریم فکتوری از طریق مرورگر شوید لذا لازم است در ابتدا یک دامنه و یا آی پی صحیح برای آن ست کرد. ویا اینکه بجای استفاده از دامنه لوکال میتوان در بخش location فایل کانفیگ بالا عبارات زیر را قرار داد:

location / {\nallow 127.0.0.1;\n\tallow x.x.x.x;\n\tdeny all;\n...}\n

و به جای x.x.x.x آی پی اختصاصی خودمان (سرور) را تنظیم کرد.

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

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

کانفیگ و راه اندازی

برای راه اندازی اولیه می بایست وارد پنل دریم فکتوری شوید

در ابتدا باید یک role ایجاد کرد و دسترسی های مورد نیاز آن را تنظیم نمود سپس یک یوزر ایجاد کرد و به رول مورد نظر وصل کرد و پس از آن در بخش Services یک سرویس جدید ایجاد کرد و نوع دیتابیس آن را تعیین کرد به عنوان مثال mysql و نام دیتابیس را تعیین و نام کاربری و رمز و .. را وارد کرد در اینجا میتوان دسترسی نوشتن را برای این سرویس فعال کرد همچنین میتوان کش را برای آن فعال کرد.

حال با مراجعه به تب api docs می توان به api این سرویس که ایجاد کردیم دسترسی داشته باشیم.

برچسب‌ها:
#Linux#DreamFactory#REST API#Backend#Nginx

مهدی امیری متین (Mahdi Amiri Matin)

Senior Full-Stack Developer & Senior DevOps Engineer

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

راهنمای نصب و کانفیگ DreamFactory در لینوکس | مهدی امیری متین | مهدی امیری متین