Tutorial CLI: Menyebarkan Situs Web Tier dan Tie WordPress - Panduan Pengembang Aplikasi AMS Advanced

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tutorial CLI: Menyebarkan Situs Web Tier dan Tie WordPress

Bagian ini menjelaskan cara menerapkan WordPress situs ketersediaan tinggi (HA) ke lingkungan AMS menggunakan AMS CLI. Kumpulan instruksi ini mencakup contoh pembuatan file paket WordPress CodeDeploy -kompatibel (misalnya zip) yang diperlukan.

catatan

Panduan penerapan ini dirancang untuk digunakan dengan lingkungan AMZN Linux.

Parameter variabel penting dinotasikan sebagaireplaceable; Namun, Anda mungkin ingin memodifikasi parameter lain agar sesuai dengan situasi Anda.

Ringkasan tugas dan diperlukan RFCs:

  1. Buat infrastruktur:

    1. Buat RDS Stack (CLI)

    2. Membuat penyeimbang beban

    3. Buat grup penskalaan Otomatis dan ikat ke penyeimbang beban

    4. Buat bucket S3 untuk aplikasi CodeDeploy

  2. Buat bundel WordPress aplikasi (tidak memerlukan RFC)

  3. Terapkan bundel WordPress aplikasi dengan CodeDeploy:

    1. Buat CodeDeploy aplikasi

    2. Buat CodeDeploy grup penyebaran

    3. Unggah bundel WordPress aplikasi Anda ke bucket S3 (tidak memerlukan RFC)

    4. Menyebarkan aplikasi CodeDeploy

  4. Validasi penerapan

  5. Meruntuhkan penyebaran

Ikuti semua langkah di baris perintah dari akun Anda yang diautentikasi.

Membuat RFC menggunakan CLI

Untuk informasi rinci tentang pembuatan RFCs, lihat Membuat RFCs; untuk penjelasan tentang parameter RFC umum, lihat Parameter umum RFC.

Buat WordPress Application Bundle untuk CodeDeploy

Bagian ini memberikan contoh pembuatan bundel penerapan aplikasi.

  1. Unduh WordPress, ekstrak file dan buat file. /scripts direktori.

    Perintah Linux:

    wget https://github.com/WordPress/WordPress/archive/master.zip

    Windows: Tempel https://github.com/WordPress/WordPress/archive/master.zip ke jendela browser dan unduh file zip.

    Buat direktori sementara untuk merakit paket.

    Linux:

    mkdir /tmp/WordPress

    Windows: Buat direktori WordPress "", Anda akan menggunakan jalur direktori nanti.

  2. Ekstrak WordPress sumber ke direktori WordPress "" dan buat file. /scripts direktori.

    Linux:

    unzip master.zip -d /tmp/WordPress_Temp cp -paf /tmp/WordPress_Temp/WordPress-master/* /tmp/WordPress rm -rf /tmp/WordPress_Temp rm -f master cd /tmp/WordPress mkdir scripts

    Windows: Buka direktori "WordPress" yang Anda buat dan buat direktori “skrip” di sana.

    Jika Anda berada di lingkungan Windows, pastikan untuk mengatur jenis istirahat untuk file skrip ke Unix (LF). Di Notepad ++, ini adalah opsi di kanan bawah jendela.

  3. Buat file CodeDeploy appspec.yl, di WordPress direktori (jika menyalin contoh, periksa lekukan, setiap spasi dihitung). PENTING: Pastikan jalur “sumber” benar untuk menyalin WordPress file (dalam hal ini, di WordPress direktori Anda) ke tujuan yang diharapkan (/var/www/html/WordPress). Dalam contoh, file appspec.ymlada di direktori dengan WordPress file, jadi hanya “/” yang diperlukan. Juga, bahkan jika Anda menggunakan RHEL AMI untuk grup Auto Scaling Anda, biarkan baris “os: linux” apa adanya. Contoh file appspec.yml:

    version: 0.0 os: linux files: - source: / destination: /var/www/html/WordPress hooks: BeforeInstall: - location: scripts/install_dependencies.sh timeout: 300 runas: root AfterInstall: - location: scripts/config_wordpress.sh timeout: 300 runas: root ApplicationStart: - location: scripts/start_server.sh timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server.sh timeout: 300 runas: root
  4. Buat skrip file bash di file. WordPress /scripts direktori.

    Pertama, buat config_wordpress.sh dengan konten berikut (jika Anda mau, Anda dapat mengedit file wp-config.php secara langsung).

    catatan

    Ganti DBName dengan nilai yang diberikan dalam HA Stack RFC (misalnya,wordpress).

    Ganti DB_MasterUsername dengan MasterUsername nilai yang diberikan dalam HA Stack RFC (misalnya,admin).

    Ganti DB_MasterUserPassword dengan MasterUserPassword nilai yang diberikan dalam HA Stack RFC (misalnya,p4ssw0rd).

    Ganti DB_ENDPOINT dengan nama DNS endpoint dalam output eksekusi HA Stack RFC (misalnya,). srt1cz23n45sfg.clgvd67uvydk.us-east-1.rds.amazonaws.com Anda dapat menemukannya dengan GetRfcoperasi (CLI: get-rfc --rfc-id RFC_ID) atau di halaman detail RFC Konsol AMS untuk HA Stack RFC yang sebelumnya Anda kirimkan.

    #!/bin/bash chmod -R 755 /var/www/html/WordPress cp /var/www/html/WordPress/wp-config-sample.php /var/www/html/WordPress/wp-config.php cd /var/www/html/WordPress sed -i "s/database_name_here/DBName/g" wp-config.php sed -i "s/username_here/DB_MasterUsername/g" wp-config.php sed -i "s/password_here/DB_MasterUserPassword/g" wp-config.php sed -i "s/localhost/DB_ENDPOINT/g" wp-config.php
  5. Di direktori yang sama buat install_dependencies.sh dengan konten berikut:

    #!/bin/bash yum install -y php yum install -y php-mysql yum install -y mysql service httpd restart
    catatan

    HTTPS diinstal sebagai bagian dari data pengguna saat peluncuran untuk memungkinkan pemeriksaan kesehatan berfungsi sejak awal.

  6. Di direktori yang sama buat start_server.sh dengan konten berikut:

    • Untuk instance Amazon Linux, gunakan ini:

      #!/bin/bash service httpd start
    • Untuk instance RHEL, gunakan ini (perintah tambahan adalah kebijakan yang memungkinkan SELINUX menerima): WordPress

      #!/bin/bash setsebool -P httpd_can_network_connect_db 1 setsebool -P httpd_can_network_connect 1 chcon -t httpd_sys_rw_content_t /var/www/html/WordPress/wp-content -R restorecon -Rv /var/www/html service httpd start
  7. Di direktori yang sama buat stop_server.sh dengan konten berikut:

    #!/bin/bash service httpd stop
  8. Buat bundel zip.

    Linux:

    $ cd /tmp/WordPress $ zip -r wordpress.zip .

    Windows: Buka direktori "WordPress" Anda dan pilih semua file dan buat file zip, pastikan untuk menamainya wordpress.zip.

Menyebarkan WordPress Application Bundle dengan CodeDeploy

CodeDeploy Ini adalah layanan penerapan AWS yang mengotomatiskan penerapan aplikasi ke instans Amazon. EC2 Bagian dari proses ini melibatkan pembuatan CodeDeploy aplikasi, membuat grup CodeDeploy penyebaran, dan kemudian menyebarkan aplikasi menggunakan. CodeDeploy

Buat CodeDeploy Aplikasi

CodeDeploy Aplikasi ini hanyalah nama atau wadah yang digunakan oleh AWS CodeDeploy untuk memastikan bahwa grup revisi, konfigurasi penerapan, dan penerapan yang benar direferensikan selama penerapan. Konfigurasi penerapan, dalam hal ini, adalah WordPress bundel yang sebelumnya Anda buat.

DATA YANG DIBUTUHKAN:

  • VpcId: VPC yang Anda gunakan, ini harus sama dengan VPC yang digunakan sebelumnya.

  • CodeDeployApplicationName: Harus unik di akun. Lihat CodeDeploy Konsol untuk memeriksa nama aplikasi yang ada.

  • ChangeTypeIddanChangeTypeVersion: ID tipe perubahan untuk panduan ini adalahct-0ah3gwb9seqk2, untuk mengetahui versi terbaru, jalankan perintah ini:

    aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=ct-0ah3gwb9seqk2
  1. Output parameter eksekusi skema JSON untuk CodeDeploy aplikasi CT ke file di folder Anda saat ini; contoh nama itu Buat CDApp Params.json.

    aws amscm get-change-type-version --change-type-id "ct-0ah3gwb9seqk2" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateCDAppParams.json
  2. Ubah dan simpan file JSON sebagai berikut; Anda dapat menghapus dan mengganti isinya.

    { "Description": "Create WordPress CodeDeploy App", "VpcId": "VPC_ID", "StackTemplateId": "stm-sft6rv00000000000", "Name": "WordPressCDApp", "TimeoutInMinutes": 60, "Parameters": { "CodeDeployApplicationName": "WordPressCDApp" } }
  3. Output template JSON untuk CreateRfc ke file di folder Anda saat ini; contoh nama itu Buat CDApp RFC.json.

    aws amscm create-rfc --generate-cli-skeleton > CreateCDAppRfc.json
  4. Ubah dan simpan file JSON sebagai berikut; Anda dapat menghapus dan mengganti isinya. Perhatikan bahwa RequestedStartTime dan RequestedEndTime sekarang opsional; mengecualikan mereka menyebabkan RFC dieksekusi segera setelah disetujui (yang biasanya terjadi secara otomatis). UntukKirim RFC “terjadwal”, tambahkan nilai-nilai tersebut.

    { "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-0ah3gwb9seqk2", "Title": "CD-App-For-WP-Stack-RFC" }
  5. Buat RFC, tentukan file Create CDApp Rfc dan file parameter eksekusi:

    aws amscm create-rfc --cli-input-json file://CreateCDAppRfc.json --execution-parameters file://CreateCDAppParams.json

    Anda menerima ID RFC dari RFC baru dalam tanggapan. Simpan ID untuk langkah selanjutnya.

  6. Kirim RFC:

    aws amscm submit-rfc --rfc-id RFC_ID

    Jika RFC berhasil, Anda tidak menerima output.

  7. Kirim RFC:

    aws amscm get-rfc --rfc-id RFC_ID

Membuat Grup CodeDeploy Deployment

Buat grup CodeDeploy penyebaran.

Grup CodeDeploy penyebaran mendefinisikan satu set instance individual yang ditargetkan untuk penerapan.

DATA YANG DIBUTUHKAN:

  • VpcId: VPC yang Anda gunakan, ini harus sama dengan VPC yang digunakan sebelumnya.

  • CodeDeployApplicationName: Gunakan nilai yang Anda buat sebelumnya.

  • CodeDeployAutoScalingGroups: Gunakan nama grup Auto Scaling yang Anda buat sebelumnya.

  • CodeDeployDeploymentGroupName: Nama untuk grup penyebaran. Nama ini harus unik untuk setiap aplikasi yang terkait dengan grup penyebaran.

  • CodeDeployServiceRoleArn: Gunakan rumus yang diberikan dalam contoh.

  • ChangeTypeIddanChangeTypeVersion: ID tipe perubahan untuk panduan ini adalahct-2gd0u847qd9d2, untuk mengetahui versi terbaru, jalankan perintah ini:

    aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=ct-2gd0u847qd9d2
  1. Output parameter eksekusi skema JSON ke file di folder Anda saat ini; contoh nama itu Buat CDDep GroupParams .json.

    aws amscm get-change-type-version --change-type-id "ct-2gd0u847qd9d2" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateCDDepGroupParams.json
  2. Ubah dan simpan file JSON sebagai berikut; Anda dapat menghapus dan mengganti isinya.

    { "Description": "CreateWPCDDeploymentGroup", "VpcId": "VPC_ID", "StackTemplateId": "stm-sp9lrk00000000000", "Name": "WordPressCDAppGroup", "TimeoutInMinutes": 60, "Parameters": { "CodeDeployApplicationName": "WordPressCDApp", "CodeDeployAutoScalingGroups": ["ASG_NAME"], "CodeDeployDeploymentConfigName": "CodeDeployDefault.HalfAtATime", "CodeDeployDeploymentGroupName": "UNIQUE_CDDepGroupNAME", "CodeDeployServiceRoleArn": "arn:aws:iam::ACCOUNT_ID:role/aws-codedeploy-role" } }
  3. Output template JSON untuk CreateRfc ke file di folder Anda saat ini; contoh nama itu Create CDDep GroupRfc .json.

    aws amscm create-rfc --generate-cli-skeleton > CreateCDDepGroupRfc.json
  4. Ubah dan simpan file JSON sebagai berikut; Anda dapat menghapus dan mengganti isinya. Perhatikan bahwa RequestedStartTime dan RequestedEndTime sekarang opsional; mengecualikan mereka menyebabkan RFC dieksekusi segera setelah disetujui (yang biasanya terjadi secara otomatis). Untuk mengirimkan RFC “terjadwal”, tambahkan nilai-nilai tersebut.

    { "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-2gd0u847qd9d2", "Title": "CD-Dep-Group-For-WP-Stack-RFC" }
  5. Buat RFC, tentukan CDDep GroupRfc file Buat dan file parameter eksekusi:

    aws amscm create-rfc --cli-input-json file://CreateCDDepGroupRfc.json --execution-parameters file://CreateCDDepGroupParams.json

    Anda menerima ID RFC dari RFC baru dalam tanggapan. Simpan ID untuk langkah selanjutnya.

  6. Kirim RFC:

    aws amscm submit-rfc --rfc-id RFC_ID

    Jika RFC berhasil, Anda tidak menerima output.

  7. Periksa status RFC:

    aws amscm get-rfc --rfc-id RFC_ID

Unggah WordPress Aplikasi

Anda secara otomatis memiliki akses ke instans bucket S3 apa pun yang Anda buat. Anda dapat mengaksesnya melalui Bastions (lihat Mengakses Instans), atau melalui konsol S3, dan mengunggah bundel. CodeDeploy Bundel harus ada untuk terus menerapkan tumpukan. Contoh menggunakan nama bucket yang dibuat sebelumnya.

aws s3 cp wordpress/wordpress.zip s3://ACCOUNT_ID-codedeploy-bundles/

Menyebarkan WordPress Aplikasi dengan CodeDeploy

Menyebarkan CodeDeploy aplikasi.

Setelah Anda memiliki bundel CodeDeploy aplikasi dan grup penyebaran, gunakan RFC ini untuk menyebarkan aplikasi.

DATA YANG DIBUTUHKAN:

  • VPC-ID: VPC yang Anda gunakan, ini harus sama dengan VPC yang digunakan sebelumnya.

  • CodeDeployApplicationName: Gunakan nama untuk CodeDeploy aplikasi yang Anda buat sebelumnya.

  • CodeDeployDeploymentGroupName: Gunakan nama grup CodeDeploy penyebaran yang Anda buat sebelumnya.

  • S3Location(tempat Anda mengunggah bundel aplikasi)S3Bucket:: BucketName Yang sebelumnya Anda buat, S3BundleType danS3Key: Jenis, dan nama, bundel yang Anda letakkan di toko S3 Anda.

  • ChangeTypeIddanChangeTypeVersion: ID tipe perubahan untuk panduan ini adalahct-2edc3sd1sqmrb, untuk mengetahui versi terbaru, jalankan perintah ini:

    aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=ct-2edc3sd1sqmrb
  1. Output parameter eksekusi skema JSON untuk CT penerapan CodeDeploy aplikasi ke file di folder Anda saat ini; contoh nama itu Deploy Params.json. CDApp

    aws amscm get-change-type-version --change-type-id "ct-2edc3sd1sqmrb" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > DeployCDAppParams.json
  2. Ubah file JSON sebagai berikut; Anda dapat menghapus dan mengganti isinya. UntukS3Bucket, gunakan BucketName yang Anda buat sebelumnya.

    { "Description": "Deploy WordPress CodeDeploy Application", "VpcId": "VPC_ID", "Name": "WP CodeDeploy Deployment Group", "TimeoutInMinutes": 60, "Parameters": { "CodeDeployApplicationName": "WordPressCDApp", "CodeDeployDeploymentGroupName": "WordPressCDDepGroup", "CodeDeployIgnoreApplicationStopFailures": false, "CodeDeployRevision": { "RevisionType": "S3", "S3Location": { "S3Bucket": "ACCOUNT_ID.BUCKET_NAME", "S3BundleType": "zip", "S3Key": "wordpress.zip" } } } }
  3. Output template JSON untuk CreateRfc ke file di folder Anda saat ini; contoh nama itu Deploy CDApp RFC.json:

    aws amscm create-rfc --generate-cli-skeleton > DeployCDAppRfc.json
  4. Ubah dan simpan file Deploy CDApp RFC.json; Anda dapat menghapus dan mengganti isinya.

    { "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-2edc3sd1sqmrb", "Title": "CD-Deploy-For-WP-Stack-RFC", "RequestedStartTime": "2017-04-28T22:45:00Z", "RequestedEndTime": "2017-04-28T22:45:00Z" }
  5. Buat RFC, tentukan file parameter eksekusi dan file Deploy CDApp Rfc:

    aws amscm create-rfc --cli-input-json file://DeployCDAppRfc.json --execution-parameters file://DeployCDAppParams.json

    Anda menerima RFC baru sebagai tanggapan. RfcId Simpan ID untuk langkah selanjutnya.

  6. Kirim RFC:

    aws amscm submit-rfc --rfc-id RFC_ID

    Jika RFC berhasil, Anda tidak menerima output.

Validasi Penerapan Aplikasi

Arahkan ke titik akhir (ELB CName) penyeimbang beban yang dibuat sebelumnya, dengan jalur yang WordPress diterapkan:/. WordPress Misalnya:

http://stack-ID-FOR-ELB.us-east-1.elb.amazonaws.com/WordPress

Meruntuhkan Penerapan Aplikasi

Untuk meruntuhkan penerapan, Anda mengirimkan Delete Stack CT ke tumpukan database RDS, penyeimbang beban aplikasi, grup Auto Scaling, bucket S3, dan aplikasi dan grup Code Deploy - enam secara keseluruhan. RFCs Selain itu, Anda dapat mengirimkan permintaan layanan untuk snapshot RDS yang akan dihapus (mereka dihapus secara otomatis setelah sepuluh hari, tetapi biayanya sedikit saat berada di sana). Kumpulkan tumpukan IDs untuk semua dan kemudian ikuti langkah-langkah ini.

Panduan ini memberikan contoh penggunaan konsol AMS untuk menghapus tumpukan S3; prosedur ini berlaku untuk menghapus tumpukan apa pun menggunakan konsol AMS.

catatan

Jika menghapus ember S3, itu harus dikosongkan dari objek terlebih dahulu.

DATA YANG DIBUTUHKAN:

  • StackId: Tumpukan untuk digunakan. Anda dapat menemukannya dengan melihat halaman AMS Console Stacks, tersedia melalui tautan di navigasi kiri. Menggunakan AMS SKMS API/CLI, jalankan referensi Untuk AMS SKMS API, lihat tab Laporan di AWS Artifact Console. operasi (di CLI). list-stack-summaries

  • ID tipe perubahan untuk panduan ini adalahct-0q0bic0ywqk6c, versinya adalah “1.0", untuk mengetahui versi terbaru, jalankan perintah ini:

    aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=ct-0q0bic0ywqk6c

BUAT SEBARIS:

  • Keluarkan perintah buat RFC dengan parameter eksekusi yang disediakan sebaris (tanda kutip saat memberikan parameter eksekusi sebaris). E

    aws amscm create-rfc --change-type-id "ct-0q0bic0ywqk6c" --change-type-version "1.0" --title "Delete My Stack" --execution-parameters "{\"StackId\":\"STACK_ID\"}"
  • Kirim RFC menggunakan ID RFC yang dikembalikan dalam operasi create RFC. Sampai diserahkan, RFC tetap di Editing negara bagian dan tidak ditindaklanjuti.

    aws amscm submit-rfc --rfc-id RFC_ID
  • Pantau status RFC dan lihat output eksekusi:

    aws amscm get-rfc --rfc-id RFC_ID

TEMPLATE MEMBUAT:

  1. Keluarkan template RFC ke file di folder Anda saat ini; contoh menamainya DeleteStackRfc .json:

    aws amscm create-rfc --generate-cli-skeleton > DeleteStackRfc.json
  2. Ubah dan simpan DeleteStackRfc file.json. Karena menghapus tumpukan hanya memiliki satu parameter eksekusi, parameter eksekusi dapat berada di DeleteStackRfc file.json itu sendiri (tidak perlu membuat file JSON terpisah dengan parameter eksekusi).

    Tanda kutip internal dalam ekstensi ExecutionParameters JSON harus diloloskan dengan garis miring terbalik (\). Contoh tanpa waktu mulai dan berakhir:

    { "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-0q0bic0ywqk6c", "Title": "Delete-My-Stack-RFC" "ExecutionParameters": "{ \"StackId\":\"STACK_ID\"}" }
  3. Buat RFC:

    aws amscm create-rfc --cli-input-json file://DeleteStackRfc.json

    Anda menerima RFC baru sebagai tanggapan. RfcId Misalnya:

    { "RfcId": "daaa1867-ffc5-1473-192a-842f6b326102" }

    Simpan ID untuk langkah selanjutnya.

  4. Kirim RFC:

    aws amscm submit-rfc --rfc-id RFC_ID

    Jika RFC berhasil, Anda tidak menerima konfirmasi di baris perintah.

  5. Untuk memantau status permintaan dan untuk melihat Output Eksekusi:

    aws amscm get-rfc --rfc-id RFC_ID --query "Rfc.{Status:Status.Name,Exec:ExecutionOutput}" --output table