نسخه:

SSH

پیکربندی

لاراول شامل یک راه ساده برای انتقال SSH به سرورهای راه دور و اجرای دستورات است که به شما این امکان را می دهد تا کارهای Artisan را به راحتی بسازید که روی سرورهای راه دور کار می کنند. نما SSH نقطه دسترسی برای اتصال به سرورهای راه دور و اجرای دستورات را فراهم می کند.

فایل پیکربندی در واقع شده است app/config/remote.php و شامل تمام گزینه هایی است که برای پیکربندی اتصالات راه دور خود نیاز دارید. آرایه connections حاوی لیستی از سرورهای شما است که با نام کلید شده اند. به سادگی اعتبارنامه ها را در connections آرایه پر کنید و برای شروع کارهای راه دور آماده خواهید بود. توجه داشته باشید که SSH می تواند با استفاده از رمز عبور یا کلید SSH احراز هویت شود.

توجه: آیا باید به راحتی انواع وظایف را روی سرور راه دور خود اجرا کنید؟ دونده وظیفه سفیر را بررسی کنید !

استفاده پایه

اجرای دستورات روی سرور پیش فرض

برای اجرای دستورات روی default اتصال از راه دور، از SSH::run روش زیر استفاده کنید:

SSH::run(array(
'cd /var/www',
'git pull origin master',
));

اجرای دستورات در یک اتصال خاص

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

SSH::into('staging')->run(array(
'cd /var/www',
'git pull origin master',
));

گرفتن خروجی از دستورات

شما می توانید خروجی "زنده" دستورات راه دور خود را با ارسال یک Closure به run روش دریافت کنید:

SSH::run($commands, function($line)
{
echo $line.PHP_EOL;
});

وظایف

اگر نیاز به تعریف گروهی از دستورات دارید که همیشه باید با هم اجرا شوند، می توانید از define روش برای تعریف یک استفاده کنید task :

SSH::into('staging')->define('deploy', array(
'cd /var/www',
'git pull origin master',
'php artisan migrate',
));

هنگامی که وظیفه تعریف شد، می توانید از task روش برای اجرای آن استفاده کنید:

SSH::into('staging')->task('deploy', function($line)
{
echo $line.PHP_EOL;
});

دانلودهای SFTP

این SSH کلاس شامل یک راه ساده برای دانلود فایل ها با استفاده از متدهای get و است getString :

SSH::into('staging')->get($remotePath, $localPath);
 
$contents = SSH::into('staging')->getString($remotePath);

آپلودهای SFTP

این SSH کلاس همچنین شامل یک راه ساده برای آپلود فایل ها یا حتی رشته ها در سرور با استفاده از متدهای put و است putString :

SSH::into('staging')->put($localFile, $remotePath);
 
SSH::into('staging')->putString($remotePath, 'Foo');

دم کردن سیاهههای مربوط از راه دور

لاراول شامل یک دستور مفید برای قرار دادن laravel.log فایل ها در هر یک از اتصالات راه دور شما است. به سادگی از tail دستور Artisan استفاده کنید و نام اتصال راه دوری را که می خواهید دنبال کنید را مشخص کنید:

php artisan tail staging
 
php artisan tail staging --path=/path/to/log.file

Envoy Task Runner

Laravel Envoy یک دستور ساده و حداقلی را برای تعریف وظایف رایجی که روی سرورهای راه دور خود اجرا می کنید، ارائه می دهد. با استفاده از سینتکس Blade style، می توانید به راحتی وظایفی را برای استقرار، دستورات Artisan و موارد دیگر تنظیم کنید.

توجه: Envoy به PHP نسخه 5.4 یا بالاتر نیاز دارد و فقط بر روی سیستم عامل های مک / لینوکس اجرا می شود.

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

ابتدا Envoy را با استفاده از global دستور Composer نصب کنید:

composer global require "laravel/envoy=~1.0"

مطمئن شوید که ~/.composer/vendor/bin دایرکتوری را در PATH خود قرار داده اید تا زمانی که دستور را در ترمینال خود envoy اجرا می کنید، فایل اجرایی پیدا شود . envoy

بعد، یک Envoy.blade.php فایل در ریشه پروژه خود ایجاد کنید. در اینجا یک مثال برای شروع شما آورده شده است:

@servers(['web' => '192.168.1.1'])
 
@task('foo', ['on' => 'web'])
ls -la
@endtask

همانطور که می بینید، آرایه ای از @servers در بالای فایل تعریف شده است. شما می توانید به این سرورها در on گزینه اعلان وظایف خود مراجعه کنید. در اعلانات خود @task باید کد Bash را قرار دهید که در هنگام اجرای کار روی سرور شما اجرا می شود.

این init دستور ممکن است برای ایجاد آسان یک فایل خرد Envoy استفاده شود:

envoy init user@192.168.1.1

در حال اجرا وظایف

برای اجرای یک کار، run از دستور نصب Envoy خود استفاده کنید:

envoy run foo

در صورت نیاز، می توانید متغیرها را با استفاده از سوئیچ های خط فرمان به فایل Envoy منتقل کنید:

envoy run deploy --branch=master

می توانید از طریق دستور Blade که به آن عادت دارید از گزینه ها استفاده کنید:

@servers(['web' => '192.168.1.1'])
 
@task('deploy', ['on' => 'web'])
cd site
git pull origin {{ $branch }}
php artisan migrate
@endtask

بوت استرپینگ

می توانید از @setup دستورالعمل برای اعلام متغیرها و انجام کارهای کلی PHP در داخل فایل Envoy استفاده کنید:

@setup
$now = new DateTime();
 
$environment = isset($env) ? $env : "testing";
@endsetup

همچنین می توانید @include برای گنجاندن هر فایل PHP استفاده کنید:

@include('vendor/autoload.php');

چندین سرور

شما به راحتی می توانید یک کار را در چندین سرور اجرا کنید. به سادگی سرورها را در اعلان وظیفه فهرست کنید:

@servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2'])
 
@task('deploy', ['on' => ['web-1', 'web-2']])
cd site
git pull origin {{ $branch }}
php artisan migrate
@endtask

به طور پیش فرض، وظیفه بر روی هر سرور به صورت سریال اجرا می شود. به این معنی که اجرای کار در سرور اول قبل از ادامه اجرا در سرور بعدی به پایان می رسد.

اجرای موازی

اگر می خواهید یک کار را در چندین سرور به صورت موازی اجرا کنید، به سادگی این parallel گزینه را به اعلان وظیفه خود اضافه کنید:

@servers(['web-1' => '192.168.1.1', 'web-2' => '192.168.1.2'])
 
@task('deploy', ['on' => ['web-1', 'web-2'], 'parallel' => true])
cd site
git pull origin {{ $branch }}
php artisan migrate
@endtask

ماکروهای وظیفه

ماکروها به شما این امکان را می دهند که با استفاده از یک فرمان، مجموعه ای از وظایف را برای اجرا به صورت متوالی تعریف کنید. برای مثال:

@servers(['web' => '192.168.1.1'])
 
@macro('deploy')
foo
bar
@endmacro
 
@task('foo')
echo "HELLO"
@endtask
 
@task('bar')
echo "WORLD"
@endtask

اکنون ماکرو deploy را می توان از طریق یک دستور ساده اجرا کرد:

envoy run deploy

اطلاعیه

هیپ چت

پس از اجرای یک کار، می توانید با استفاده از دستورالعمل ساده، یک اعلان به اتاق HipChat تیم خود ارسال کنید @hipchat :

@servers(['web' => '192.168.1.1'])
 
@task('foo', ['on' => 'web'])
ls -la
@endtask
 
@after
@hipchat('token', 'room', 'Envoy')
@endafter

همچنین می توانید یک پیام سفارشی برای اتاق هیپچت مشخص کنید. هر متغیری که در @setup یا همراه با آن اعلام شده است @include برای استفاده در پیام در دسترس خواهد بود:

@after
@hipchat('token', 'room', 'Envoy', "$task ran on [$environment]")
@endafter

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

سستی

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

@after
@slack('team', 'token', 'channel')
@endafter

به روز رسانی فرستاده

برای به روز رسانی Envoy کافیست self-update دستور زیر را اجرا کنید:

envoy self-update

اگر نصب Envoy شما در اینجا است /usr/local/bin ، ممکن است لازم باشد از sudo :

composer global update