دریم فکتوری چیست ؟ خودتان ببینید
نصب و راه اندازی
بر اساس متسندات موجود در وب سایت 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 ~ $ mkdir bin $ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" $ 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/ $ sudo chmod -R 2775 storage/ bootstrap/cache/ $ php artisan cache:clear
حالا برای اینکه دریم فکتوری را در مرورگر ببینیم میبایست فایل کانفیگ جدیدی برای nginx ایجاد کنیم و کانفیگ زیر را در آن قرار میدهیم :
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html/dreamfactory/public; index index.php index.html index.htm; server_name drfactory.local; gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; location / { try_files $uri $uri/ /index.php?$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass php:9000; try_files $uri $uri/ /index.php?$query_string; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
و در نهایت دامنه drfactory.local را به 127.0.0.1 در فایل hosts سیستم تنظیم میکنیم با این وجود دیگر کسی از خارج از سرور و با استفاده از آی پی سرور هم قادر به دستیابی به پنل و api دریم فکتوری نخواهد بود اما برای ابتدای کار و زمانی که میخواهد Api را ایجاد کنید باید بتوانید وارد پنل دریم فکتوری از طریق مرورگر شوید لذا لازم است در ابتدا یک دامنه و یا آی پی صحیح برای آن ست کرد. ویا اینکه بجای استفاده از دامنه لوکال میتوان در بخش location فایل کانفیگ بالا عبارات زیر را قرار داد:
location / { allow 127.0.0.1; allow x.x.x.x; deny all; ...}
و به جای x.x.x.x آی پی اختصاصی خودمان (سرور) را تنظیم کرد.
حال با وارد کردن آدرس دامنه مورد نظر در مرورگر میتوانید به پنل دریم فکتوری دسترسی داشته باشید و با استفاده از ادمینی که در مراحل نصب ساختید لاگین کنید.
برای مشاهده داکیومنت نصب به این شیوه در سایت دریم فکتوری میتوانید به اینجا مراجعه کنید
کانفیگ و راه اندازی
برای راه اندازی اولیه می بایست وارد پنل دریم فکتوری شوید
در ابتدا باید یک role ایجاد کرد و دسترسی های مورد نیاز آن را تنظیم نمود سپس یک یوزر ایجاد کرد و به رول مورد نظر وصل کرد و پس از آن در بخش Services یک سرویس جدید ایجاد کرد و نوع دیتابیس آن را تعیین کرد به عنوان مثال mysql و نام دیتابیس را تعیین و نام کاربری و رمز و .. را وارد کرد در اینجا میتوان دسترسی نوشتن را برای این سرویس فعال کرد همچنین میتوان کش را برای آن فعال کرد.
حال با مراجعه به تب api docs می توان به api این سرویس که ایجاد کردیم دسترسی داشته باشیم.