


Dalam bahagian pertama siri tutorial kami ini, kami akan menjalankan langkah-langkah untuk menggunakan aplikasi PHP (Laravel) ke Amazon ECS. Kami akan bermula dengan mencipta imej Docker, menolaknya ke Amazon ECR, mencipta Definisi Tugasan ECS, Kluster ECS, Perkhidmatan ECS dan menyambungkan nama domain kepada perkhidmatan.
Bekerja dengan Docker dan ECR
Buat fail Docker dan konfigurasi nginx
Dalam akar repo git anda, buat fail Docker dengan kandungan berikut:
# Use the official PHP-FPM image as the base FROM public.ecr.aws/docker/library/php:fpm # Define a user variable ARG user=www-data # Install system dependencies and PHP extensions RUN apt-get update && apt-get install -y \ git curl \ libpng-dev \ libonig-dev \ libxml2-dev \ zip unzip libzip-dev \ nginx \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* \ && docker-php-ext-install \ pdo_mysql \ mbstring \ exif \ pcntl \ bcmath \ gd \ zip # Install Composer COPY --from=public.ecr.aws/composer/composer:latest-bin /usr/bin/composer /usr/bin/composer # Create a system user for running Composer and Artisan commands RUN mkdir -p /home/$user/.composer && \ chown -R $user:$user /home/$user # Copy Nginx configuration and entrypoint script COPY ./docker/default.conf /etc/nginx/sites-enabled/default COPY ./docker/entrypoint.sh /etc/entrypoint.sh # Make the entrypoint script executable RUN chmod +x /etc/entrypoint.sh # Set the working directory WORKDIR /var/www # Copy the application code COPY --chown=www-data:www-data . /var/www # Install PHP dependencies RUN composer install # Expose port 80 EXPOSE 80 # Define the entrypoint ENTRYPOINT ["/etc/entrypoint.sh"]
Buat folder baharu bernama docker dan letakkan dua fail berikut di dalam.
- docker/entrypoint.sh
#!/usr/bin/env bash # Start Nginx service service nginx start # Run Laravel migrations php artisan migrate --force # Create symbolic link for storage php artisan storage:link # Clear and optimize the application cache php artisan optimize:clear php artisan optimize # Start PHP-FPM php-fpm
- docker/default.conf
server { listen 80 default_server; index index.php index.html; server_name localhost; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/public; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_hide_header X-Powered-By; # Tells PHP we're using a reverse proxy with TLS termination fastcgi_param HTTPS on; fastcgi_param HTTP_X_FORWARDED_PROTO $scheme; fastcgi_param HTTP_X_FORWARDED_SSL on; add_header Content-Security-Policy "upgrade-insecure-requests" always; } location / { try_files $uri $uri/ /index.php?$query_string; } }
Dan jadikan entrypoint.sh boleh laku dengan menjalankan chmod x docker/entrypoint.sh.
Menolak imej ke Amazon ECR
Langkah pertama ialah menolak imej ke ECR. Anda perlu melakukan langkah ini secara manual terlebih dahulu, sebelum anda boleh meneruskan dan menggunakan aplikasi ke ECS.
Buat repositori ECR
Buat repositori ECR dengan menuju ke konsol Amazon ECR, mengklik Buat repositori dan menaip nama repositori. Untuk contoh ini, kami akan menggunakan apl demo.
Setelah dibuat, salin URI repositori. Anda akan memerlukan URI ini nanti.
Tolak imej ke ECR
Pilih repositori yang baru anda buat, klik pada Lihat arahan tolak, dan jalankan arahan dalam terminal anda. Arahan akan kelihatan seperti ini (pastikan untuk memilih rantau yang betul dan menggunakan ID Akaun yang betul):
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com docker build -t demo-app . docker tag demo-app:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/demo-app:latest docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/demo-app:latest
Setelah arahan berjaya dijalankan, kembali ke konsol Amazon ECR, masukkan repositori dan sahkan bahawa imej telah berjaya ditolak dengan teg terkini.
Bekerja dengan Amazon ECS
Buat Definisi Tugas ECS
Langkah seterusnya ialah mencipta Definisi Tugasan ECS dengan imej Docker yang baru kami tolak ke ECR.
Mulakan dengan menuju ke konsol Amazon ECS, di bawah Takrifan Tugasan, klik Buat definisi tugas baharu.
Pilih nama unik untuk definisi tugasan (kami akan menggunakan apl demo), dan pastikan Fargate dipilih sebagai jenis pelancaran. Jangan ubah apa-apa lagi dalam bahagian ini buat masa ini.
Tatal ke bawah ke bahagian Bekas - 1 dan taipkan nilai berikut:
- Nama: apl tunjuk cara
- Imej: 123456789012.dkr.ecr.us-east-1.amazonaws.com/demo-app:latest (ganti dengan URI ECR anda sendiri yang kami salin tadi)
Kemudian, anda mungkin mahu melaraskan tetapan memori dan CPU bergantung pada aplikasi anda. Anda juga boleh menambah Pembolehubah Persekitaran dan Jilid EFS di sini, jika anda perlu. Kami akan membincangkannya dalam tutorial berasingan.
Jangan ubah apa-apa lagi dalam bahagian ini buat masa ini. Tatal ke bawah dan klik Buat.
Buat Kluster ECS
Kami kini perlu mencipta Kluster ECS. Kluster ialah tempat kami menjalankan perkhidmatan yang ditakrifkan dalam definisi tugas yang baru kami buat.
Pergi ke konsol Amazon ECS, di bawah Kluster, klik Buat kluster, taip nama kluster dan pastikan anda memilih AWS Fargate (tanpa pelayan) sebagai infrastruktur:
Kluster akan mengambil masa beberapa minit untuk dibuat. Penciptaan kluster kadangkala boleh gagal, terutamanya pada akaun baharu; cuma tunggu beberapa minit dan cuba lagi, pilih nama kluster yang berbeza.
Buat Perkhidmatan ECS
Buka kluster yang baru anda buat, tatal ke bawah ke jadual Perkhidmatan, klik Buat dan taipkan nilai berikut:
- Keluarga: apl tunjuk cara
- Semakan: 1 (biarkan ini seperti sedia ada)
- Nama perkhidmatan: apl demo
Jangan klik Buat lagi.
Tambah Pengimbang Beban
Memandangkan kami mungkin menyediakan aplikasi melalui HTTPS, kami ingin menambah pengimbang beban. Anda tidak boleh melakukannya kemudian.
Tatal ke bawah ke bahagian Rangkaian dan pilih VPC yang anda mahu gunakan perkhidmatan itu. Pastikan VPC mempunyai Subnet Awam dengan Gerbang Internet dilampirkan padanya. Jika anda tidak mempunyai VPC, anda boleh menciptanya dengan mengklik Buat VPC baharu dan mengikut wizard.
Setelah anda memilih VPC, teruskan membaca.
Tatal ke bawah ke bahagian Pengimbangan beban, pilih Pengimbang Beban Aplikasi dan pilih pilihan Buat pengimbang beban baharu.
Jika pilihan ini tidak tersedia, anda mungkin tidak memilih VPC dalam langkah sebelumnya.
Laraskan nilai berikut:
- Nama pengimbang beban: demo-app-alb
- Tempoh tangguh pemeriksaan kesihatan: 300 (Saya syorkan tetapkan ini kepada 300 saat, iaitu 5 minit, untuk membolehkan apl anda bermula dan stabil)
Di bawah bahagian Pendengar, pastikan pilihan Buat pendengar baharu dipilih, tetapi laraskan nilai untuk menggunakan port 443 dan protokol HTTPS. Untuk mengesahkan pemilihan ini, anda memerlukan sijil ACM untuk domain yang ingin anda gunakan; lihat dokumentasi AWS untuk mendapatkan maklumat lanjut tentang cara mendapatkannya.
Di bawah bahagian Kumpulan sasaran, laraskan nilai berikut:
- Protokol: HTTP (ia adalah lalai, pastikan untuk menyimpannya kerana bekas nginx kami mendengar pada port 80)
- Kelewatan penyahdaftaran: 60 (Saya syorkan untuk menetapkan ini kepada 60 saat dan bukannya 5 minit lalai untuk membuat penggunaan lebih cepat)
- Laluan pemeriksaan kesihatan: / (Saya syorkan untuk menetapkan ini kepada laluan, seperti /healthcheck, anda buat secara khusus dalam apl anda; anda boleh membiarkannya sebagai lalai buat masa ini)
Klik Buat.
Semak Status Perkhidmatan
Perkhidmatan mungkin mengambil masa beberapa minit untuk dipaparkan dalam jadual Perkhidmatan. Tunggu sebentar dan muat semula halaman jika anda tidak melihat perkhidmatan baharu dengan segera.
Jika semuanya berjalan lancar, anda seharusnya melihat perkhidmatan yang disenaraikan dalam jadual Perkhidmatan, dengan status Aktif dan Pengerahan dan tugas menunjukkan 1/1 menjalankan tugas.
Ralat agihan ditunjukkan seperti ini:
Untuk menyahpepijat ralat penggunaan, buka perkhidmatan, kemudian klik pada tab Pengaturan; tatal ke bawah ke bahagian Acara, dan klik pada Id tugasan yang paling baru dimulakan. Bahagian Log pelaksanaan tugas akan menunjukkan kepada anda butiran lanjut tentang perkara yang salah.
Laravel biasanya mengadu tentang struktur folder storan yang tidak lengkap (mis., kehilangan salah satu rangka kerja, cache, sesi). Kami akan melihat cara untuk melampirkan volum EFS pada definisi tugasan untuk membetulkannya dalam tutorial yang berasingan.
Sambungkan nama domain kepada perkhidmatan
Anda mungkin ingin menyambungkan nama domain kepada perkhidmatan yang baru kami gunakan. Dalam langkah sebelumnya, kami telah mencipta Pengimbang Beban Aplikasi, iaitu komponen AWS yang bertanggungjawab untuk menghalakan trafik internet ke perkhidmatan.
Kami juga telah menyediakan sijil ACM, yang digunakan untuk menyulitkan trafik antara pengguna akhir dan pengimbang beban.
Untuk melengkapkan proses dan menjadikan aplikasi anda boleh diakses melalui HTTPS daripada internet awam, anda perlu mencipta rekod DNS yang menghalakan nama domain anda ke pengimbang beban. Proses ini berbeza bergantung pada pembekal DNS yang anda gunakan; sila rujuk dokumentasi mereka untuk maklumat lanjut.
Mulakan dengan mendapatkan nama DNS Pengimbang Beban Aplikasi. Navigasi ke bar Carian dalam AWS Console (Pilihan S pada macOS), taip Pengimbang Beban dan pilih Pengimbang Beban (Ciri EC2). Anda akan melihat jadual dengan Pengimbang Beban yang kami perlukan untuk menyambungkan nama domain kami kepada:
Salin nama DNS pengimbang beban.
Jika anda menggunakan Laluan 53, ikut arahan ini:
- Navigasi ke konsol Laluan 53, klik pada Zon dihoskan dan pilih nama domain anda.
- Klik pada butang Buat rekod.
- Tetapkan jenis rekod kepada A.
- Semak pilihan Alias.
- Dalam medan Halakan trafik ke, pilih Alias ??ke Aplikasi dan Pengimbang Beban Klasik dan pilih kawasan pengimbang beban.
- Daripada menu lungsur Pilih pengimbang beban, pilih pengimbang beban yang kami perlukan untuk menyambungkan nama domain kami. Jika anda mempunyai berbilang pengimbang beban, semak yang anda pilih daripada menu lungsur mesti sepadan dengan nama DNS pengimbang beban yang kami salin sebelum ini.
- Matikan Nilai Kesihatan Sasaran.
- Klik pada Buat rekod.
Jika anda tidak menggunakan Laluan 53:
Sila rujuk dokumentasi pembekal DNS anda untuk mendapatkan maklumat lanjut. Anda mungkin perlu mencipta rekod CNAME yang mempunyai nama DNS pengimbang beban sebagai sasaran/nilainya.
tahniah
Setelah anda mencipta rekod DNS, tunggu beberapa minit untuk merebak, kemudian cuba akses aplikasi anda melalui nama domain.
Tahniah! Anda kini telah berjaya menggunakan aplikasi PHP (Laravel) ke AWS ECS.
Akan datang dalam siri tutorial ini
- Melampirkan volum EFS pada definisi tugas untuk menyelesaikan masalah struktur folder storan Laravel
- Menggunakan AWS CodePipeline untuk menggunakan kod baharu secara automatik pada perkhidmatan
- Mengautomasikan peruntukan infrastruktur dengan AWS CDK
Atas ialah kandungan terperinci Bahagian Menggunakan aplikasi PHP (Laravel) ke Amazon ECS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Dalam PHP, anda boleh menggunakan kurungan persegi atau pendakap keriting untuk mendapatkan aksara indeks spesifik rentetan, tetapi kurungan persegi disyorkan; Indeks bermula dari 0, dan akses di luar julat mengembalikan nilai null dan tidak dapat diberikan nilai; MB_SUBSTR dikehendaki mengendalikan watak multi-bait. Sebagai contoh: $ str = "hello"; echo $ str [0]; output h; dan watak -watak Cina seperti MB_SUBSTR ($ str, 1,1) perlu mendapatkan hasil yang betul; Dalam aplikasi sebenar, panjang rentetan perlu diperiksa sebelum gelung, rentetan dinamik perlu disahkan untuk kesahihan, dan projek berbilang bahasa mengesyorkan menggunakan fungsi keselamatan multi-bait secara seragam.

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech
