Penggunaan fungsi LOCALHOST80 pada PHP

Untuk situs web yang didasarkan pada WordPress , Joomla atau Laravel dan tidak memiliki konten khusus pengguna, disarankan untuk menyimpan semua halaman dalam cache HTML statis dan hanya membuat ulang cache secara manual (atau otomatis) ketika ada perubahan di backend. Namun, jika halaman berisi konten dinamis yang bergantung pada sesi dan cookie atau juga pada bahasa dan lokasi, OPcache cocok .


Waktu boot yang disebut untuk ketiga sistem yang disebutkan adalah lebih dari 100 ms dengan server CentOS7 yang baru diinstal (dengan SSD dan PHP 7.1). Setiap kali skrip PHP dijalankan, itu harus dikompilasi menjadi bytecode pada saat runtime. OPcache sekarang mengimplementasikan cache untuk bytecode ini - jika skrip PHP yang sama dijalankan dengan permintaan berikutnya, itu tidak harus dikompilasi ulang. Setelah mengaktifkan OPcache, kami mengatur pengaturan berikut:

9006cec6c5d3d2498ee26c5bfd91590a

Waktu eksekusi (rata-rata lebih dari 10 eksekusi) kini telah berkurang secara signifikan:

WordPress 4.7.4 Joomla 3.7.0 Laravel 5.4
tanpa OPcache 295 md 201 md 110 ms
dengan OPcache 54 ms 59 ms 13 md
Faktor 5,5 3,5 8,5

Karena kami telah menyetel validate_timestamps ke 0 dan pada saat yang sama revalidate_freq ke durasi satu hari, cache hampir tidak pernah dibangun ulang secara otomatis (kami secara sadar melakukannya secara manual). Dengan git hook kecil, skrip PHP dijalankan dengan setiap "tarikan". Cara mengaktifkan kail:

a1678610c8b4c7db5997375944183830

a1678610c8b4c7db5997375944183830

Fungsi helper berikut juga berguna untuk mengukur bagian kode individual (atau seluruh waktu eksekusi):

085f4291bbcc4e8a64bbea951ff49ab9

Jika Anda ingin mendapatkan informasi bermanfaat seperti status, memori yang digunakan atau jumlah file yang di-cache, Anda menggunakan fungsi PHP ini:

3f6309d04bc7e48dd909859321b96209

Untuk memanfaatkan OPcache dalam lingkungan pengembangan lokal (yang umumnya tidak disarankan), kami menggunakan trik.

OPcache aktif di semua server yang memiliki modul OPcache diinstal dan di mana pengaturan opcache.enable tidak ditetapkan secara eksplisit. Kami biarkan seperti itu. Kami hanya menyetel opcache.validate_timestamps = 1 di php.ini, artinya opcache.revalidate_freq = 2. Ini berarti OPcache divalidasi ulang hampir terus menerus untuk setiap proyek. Untuk proyek-proyek di mana kami ingin mengaktifkan OPcache secara permanen, kami menggunakan yang terkait dengan proyek di .htaccess pengaturan berikut:

1dd64a3f2fe4425b29b1409410fe3fc0

Kemudian kami merestart web server dan membuat script berikut:

91fb5289160e410607c9ea89112a575b

Skrip ini membersihkan cache dan membangunnya kembali pada waktu yang sama. Sekarang kami menetapkan perintah RunOnSave terkait ruang kerja di editor favorit kami VSCode:

91fb5289160e410607c9ea89112a575b

Untuk jenis kontainer PHP, Anda menggunakan file konfigurasi untuk mengaktifkan Apache HTTP Server untuk menggunakan HTTPS.

Tambahkan snippet berikut ke file konfigurasi Anda, menggantikan sertifikat dan materi kunci pribadi seperti yang diinstruksikan, dan simpan snippet di direktori .ebextensions paket sumber Anda.

File konfigurasi melakukan tugas berikut:

  • Kunci packages tersebut menggunakan yum untuk memasang mod24_ssl.

  • Kunci files tersebut membuat file berikut pada instans:

    /etc/httpd/conf.d/ssl.conf

    Mengonfigurasi server Apache. File ini memuat ketika layanan Apache dimulai.

    /etc/pki/tls/certs/server.crt

    Membuat file sertifikat pada instans. Ganti konten file sertifikat dengan konten sertifikat Anda.

    YAML bergantung pada indentasi yang konsisten. Cocokkan tingkat indentasi saat mengganti konten dalam file konfigurasi contoh dan pastikan bahwa editor teks Anda menggunakan spasi, bukan karakter tab, untuk indentasi.

    Jika Anda memiliki sertifikat menengah, sertakan sertifikat tersebut di server.crt setelah sertifikat situs Anda.

          -----BEGIN CERTIFICATE-----
      certificate file contents
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      first intermediate certificate
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      second intermediate certificate
      -----END CERTIFICATE-----
    /etc/pki/tls/certs/server.key

    Membuat file kunci pribadi pada instans. Ganti konten kunci pribadi dengan konten kunci pribadi yang digunakan untuk membuat permintaan sertifikat atau sertifikat yang ditandatangani sendiri.

contoh .ebextensions/https-instance.config

packages:
  yum:
    mod24_ssl : []

files:
  /etc/httpd/conf.d/ssl.conf:
    mode: "000644"
    owner: root
    group: root
    content: |
      LoadModule ssl_module modules/mod_ssl.so
      Listen 443
      <VirtualHost *:443>
        <Proxy *>
          Order deny,allow
          Allow from all
        </Proxy>

        SSLEngine             on
        SSLCertificateFile    "/etc/pki/tls/certs/server.crt"
        SSLCertificateKeyFile "/etc/pki/tls/certs/server.key"
        SSLCipherSuite        EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
        SSLProtocol           All -SSLv2 -SSLv3
        SSLHonorCipherOrder   On
        SSLSessionTickets     Off
        
        Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
        Header always set X-Frame-Options DENY
        Header always set X-Content-Type-Options nosniff
        
        ProxyPass / http://localhost:80/ retry=0
        ProxyPassReverse / http://localhost:80/
        ProxyPreserveHost on
        RequestHeader set X-Forwarded-Proto "https" early
        
      </VirtualHost>
      
  /etc/pki/tls/certs/server.crt:
    mode: "000400"
    owner: root
    group: root
    content: |
      -----BEGIN CERTIFICATE-----
      certificate file contents
      -----END CERTIFICATE-----
      
  /etc/pki/tls/certs/server.key:
    mode: "000400"
    owner: root
    group: root
    content: |
      -----BEGIN RSA PRIVATE KEY-----
      private key contents # See note below.
      -----END RSA PRIVATE KEY-----

Hindari melakukan file konfigurasi yang berisi kunci pribadi Anda ke kontrol sumber. Setelah Anda menguji konfigurasi dan mengonfirmasi bahwa konfigurasi berfungsi, simpan kunci pribadi Anda di Amazon S3 dan ubah konfigurasi untuk mengunduhnya selama deployment. Untuk instruksi, lihat Menyimpan kunci pribadi dengan aman di Amazon S3.

Pada lingkungan instans tunggal, Anda juga harus mengubah grup keamanan instans untuk mengizinkan lalu lintas pada port 443. File konfigurasi berikut mengambil ID grup keamanan menggunakan fungsi AWS CloudFormation dan menambahkan aturan ke dalamnya.

contoh .ebextensions/https-instance-single.config

Resources:
  sslSecurityGroupIngress: 
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      CidrIp: 0.0.0.0/0

Untuk lingkungan yang seimbang dengan beban, Anda mengonfigurasi penyeimbang beban ke keduanyamelewati lalu lintas aman melalui tak tersentuh, ataumendekripsi dan mengenkripsi ulanguntukend-to-endenkripsi.