SSH
- پیکربندی
- استفاده پایه
- وظایف
- دانلودهای SFTP
- آپلودهای SFTP
- دم کردن سیاهههای مربوط از راه دور
- Envoy Task Runner
پیکربندی
لاراول شامل یک راه ساده برای انتقال 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;});
وظایف
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