یه نویسنده

مقاله، کتاب، برنامه و ...

مقاله، کتاب، برنامه و ...

یه نویسنده

وبلاگی برای فعالیتهای پژوهشی و برنامه نویسی کامپیوتر، که شاید دفتر یادداشتی از دانسته‌های روزانه‌ی من باشد(شاید به‌کار شما هم بیاید). مطالبی که از دنیای کدباز جمع‌آوری میکنم و برای علاقه‌مندان این شاخه از فناوری انتشار میدهم. بیشتر نوشته‌های وبلاگ را برنامه‌نویسی‌php و سیستم‌عامل لینوکس تشکیل می‌دهند.

طبقه بندی موضوعی

دسترسی apache به پوشه اشتراکی vagrant

vagrant یه ابزار کمکی برای راه اندازی vm هست. معمولا از virtualbox به عنوان container پیش‌فرض استفاده میشه. در مورد این که vagrant چی هست و container چه کاری رو انجام میده، میتونید سری به ویکی vagrant بزنید.

بعد از راه اندازی vm یکی از امکانات خیلی خوبش sync folder هست. بین Host و Guest یه فولدر مشترک اسجاد میکنه و شما براحتی بر روی یه فولدر توی سیستم خودتون فایل میرید و بدون هیچ دستوری همون فایل رو بر روی vm خواهید داشت. مثلا فولدر بر روی سیستم Host در مسیر

/home/mehrdad/vm/server/www

مثلا در این فولدر کدهای برنامه نویسی وب هست و قراره بر روی vm توسط apache و php اجرا بشه. درون vm فولدر زیر جهت sync

/vagrant/www

قبل از این کار باید vboxsf رو بر روی Guest نصب کنید. همراه container ها یه فایل addition هست جهت نصب ابزارهای کمکی. همراه Virtualbox هم یه iso به اسم VBoxGuestAdditions برای دانلود هست. البته کاربران ایرانی تحریم هست و باید از راه های دیگه دانلود و نصب کنید. توجه کنید مناسب با ورژن virtualbox باید نسخه iso رو دانلود کنید. مثلا virtualbox من در منوی about  نسخه 4.3.36 رو نشون میده. برای دانلود iso لز لینک زیر استفاده کنید

http://download.virtualbox.org/virtualbox/

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

بعد از دانلود باید اون رو به عنوان یه cd به vm خودتون mount کنید

mkdir /mnt/cd

mount /dev/cdrom /media/cd

اگر هم مثل من از mount کردم مستقیم iso دانلود شده رو بیشتر میپسندید میتونید iso دانلود شده رو به vm منتقل کنید و با دستور 

mount /home/VBoxGuestAdditions_4.3.36.iso /mnt/cd

این کار رو انجام بدید. برای نصب guest addition نیاز به gcc make و  kernel headers هست. دلیلش هم کامپایل ماژول vboxsf برای کرنل لینوکس هست. یعنی یه سورس ماژول که باید روی vm شما بر اساس نسخه kernel کامپایل و در زمان اجرا insmod بشه. برای نصب نیازمندیها دستور زیر رو اجرا کنید

sudo apt-get install make gcc linux-headers-$(uname -r)

برید به پوشه /mnt/cd و دستور زیر رو اجرا کنید

./VBoxLinuxAdditions.run

با این کار شروع به کامپایل و نصب میکنه


root@S:/mnt/cd# ./VBoxLinuxAdditions.run 

Verifying archive integrity... All good.

Uncompressing VirtualBox 4.3.36 Guest Additions for Linux............

VirtualBox Guest Additions installer

Copying additional installer modules ...

Installing additional modules ...

Removing existing VirtualBox non-DKMS kernel modules ...done.

Building the VirtualBox Guest Additions kernel modules

The headers for the current running kernel were not found. If the following

module compilation fails then this could be the reason.


Building the main Guest Additions module

 ...done.

Building the shared folder support module ...done.

Building the OpenGL support module ...done.

Doing non-kernel setup of the Guest Additions ...done.

Starting the VirtualBox Guest Additions ...done.

Installing the Window System drivers

Could not find the X.Org or XFree86 Window System, skipping.


بعد از این کار سمت client همه چیز آماده هست و باید باید فایل Vagrant رو طوری کانفیگ کنیم تا این دو تا فولدر رو sync کنه

config.vm.synced_folder "./", "/vagrant" ,id: "vagrant-root",owner: "vagrant", group: "www-data",mount_options: ["dmode=775,fmode=664"]

درون پوشه اصلی یه پوشه به اسم www بسازید. در vm قرار هست apache رو بر روی این فولدر تنظیم کنیم.
با دستور vagrant up ماشین رو اجرا کنید
برای تست این که آیا sync به درستی انجام شده دستور زیر رو بزنید و در سیستم خودتون پوشه www رو ببینید که فایل ساخته شده یا نه
touch /vagrant/www/test.txt

بعد از نصب apache وphp حالا نوبت به کانفیگ apache هست تا از پوشه پیش فرض خودش که /var/www هست تغییر کنه به پوشه /vagrant/www برای این کار فایل زیر رو باز و ویرایش کنید
sudo nano /etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /vagrant/www

        ErrorLog /vagrant/log/error.log
        CustomLog /vagrant/log/access.log combined

        <Directory /vagrant/www>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order deny,allow
                Allow from all
                Require all granted
        </Directory>

</VirtualHost>

فایل رو ذخیره و با دستور service apache2 restart سرویس apache رو رستارت کنید.
برای گرفتن info از php دستور زیر رو اجرا کنید
echo '<?php phpinfo(); ?>'  > /vagrant/www/index.php
حالا به مرورگر برید و آدرس ip ماشین رو بزنید
به احتمال زیاد خطای دسترسی رو خواهید داشت

برای حل این مشکل باید کاربر vagrant و www-data رو عضو گروه vboxsf کنید با دستور زیر
adduser vagrant vboxsf
adduser www-data vboxsf

دوباره با دستور service apache2 restart سرویس apache رو رستارت کنید. اگر بازم درست نشد نیاز به راه اندازی مجدد vm هست.

  • مهرداد سیف زاده

apache

php

sync

sync folder

vagrant

vagrant sync

vagrant sync folder

نظرات  (۲)

سلام استادعزیز
میشه یه آموزش درباره کپچای جدید گوگل یا همون recaptcha و نحوه استفادش تو فریم ورک های پی اچ پی مثلا کدیگنایتر بزارین...
پاسخ:
بله ایده خوبی هست
بزودی بر روی وبلاگ قرار خواهد گرفت
ممنون از نظر شما.
سلام این آموزش در فیلم ها نیست و باید حتما انجام بشه؟
پاسخ:
اگر خطا میده بله وگرنه نیازی نیست

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی