Skip to content

Commit 77206ae

Browse files
authored
Merge pull request #56 from aws-samples/hotpatch-redis-errors
Fix Redis and Memcached driver installation errors
2 parents dad4d0f + c57880a commit 77206ae

File tree

2 files changed

+37
-18
lines changed

2 files changed

+37
-18
lines changed

templates/03-pipelinehelper.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,7 @@ Resources:
177177
#This bucket is being used for storing Code artifacts for deployment.
178178
CodeArtifactS3Bucket:
179179
Type: AWS::S3::Bucket
180-
Properties:
181-
BucketName: !Join ['-', [!Sub 'moodle-code', !Select [4, !Split ['-', !Select [2, !Split ['/', !Ref AWS::StackId]]]]]]
180+
DeletionPolicy: RetainExceptOnCreate
182181

183182
InstanceProfile:
184183
Type: AWS::IAM::InstanceProfile
@@ -486,7 +485,7 @@ Resources:
486485
export EnvIsMoodleSetupCompleted=`echo $EnvIsMoodleSetupCompleted | sed -e 's/^"//' -e 's/"$//'`
487486

488487
export EnvElastiCacheClusterEndpointAddress=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/Cache/session/ElastiCacheClusterEndpoint --query Parameters[0].Value)
489-
export EnvElastiCacheClusterEndpointAddress=`echo $EnvElastiCacheClusterEndpointAddress | sed -e 's/^"//' -e 's/"$//'`
488+
export EnvElastiCacheClusterEndpointAddress=`echo $EnvElastiCacheClusterEndpointAddress | sed -e 's/^"//' -e 's/"$//' | cut -f1 -d":"`
490489

491490
export EnvElastiCacheEngine=$(aws ssm get-parameters --region $region --names /Moodle/${ProjectName}/Cache/session/Engine --query Parameters[0].Value)
492491
export EnvElastiCacheEngine=`echo $EnvElastiCacheEngine | sed -e 's/^"//' -e 's/"$//'`
@@ -495,11 +494,12 @@ Resources:
495494
if [ "$EnvIsMoodleSetupCompleted" != "No" ] && [ "$EnvElastiCacheClusterEndpointAddress" != "null" -a "$EnvElastiCacheClusterEndpointAddress" != "" ]; then
496495
sed -i "s/\$SessionEndpoint = .*/\$SessionEndpoint = '"$EnvElastiCacheClusterEndpointAddress"';/" /var/www/moodle/html/config.php
497496

498-
if [ "$EnvElastiCacheEngine" == "Redis"]; then
497+
if [ "$EnvElastiCacheEngine" == "Redis" ]; then
499498
sed -i "s/\$SessionsCacheType = .*/\$SessionsCacheType = '"$EnvElastiCacheEngine"';/" /var/www/moodle/html/config.php
500-
else
499+
#else
500+
# Below commented out because we don't use the ElastiCache client anymore
501501
#update Moodle source to use DYNAMIC_CLIENT_MODE so Moodle can detect changes to the elasticache cluster membership
502-
sed -i '/\$this->options\[Memcached::OPT_BUFFER_WRITES\] = \$bufferwrites;/a \ \ \ \ \ \ \ \ $this->options[Memcached::OPT_CLIENT_MODE] = Memcached::DYNAMIC_CLIENT_MODE;' /var/www/moodle/html/cache/stores/memcached/lib.php
502+
#sed -i '/\$this->options\[Memcached::OPT_BUFFER_WRITES\] = \$bufferwrites;/a \ \ \ \ \ \ \ \ $this->options[Memcached::OPT_CLIENT_MODE] = Memcached::DYNAMIC_CLIENT_MODE;' /var/www/moodle/html/cache/stores/memcached/lib.php
503503
fi
504504
else
505505
sed -i "s/\$SessionEndpoint = .*/\$SessionEndpoint = '';/" /var/www/moodle/html/config.php

templates/04-web.yaml

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,22 @@ Resources:
456456
pecl install -f libsodium
457457
echo "extension=sodium.so;" > /etc/php.d/50-sodium.ini
458458
459+
# Install Redis client as well as related extensions - see here https://github.com/amazonlinux/amazon-linux-2023/issues/328
460+
pear update-channels
461+
pecl update-channels
462+
/usr/bin/yes 'no' | pecl install igbinary
463+
echo 'extension=igbinary.so' > /etc/php.d/30-igbinary.ini
464+
/usr/bin/yes 'no' | pecl install msgpack
465+
echo 'extension=msgpack.so' > /etc/php.d/30-msgpack.ini
466+
dnf install -q -y libzstd-devel
467+
/usr/bin/yes 'no' | pecl install zstd
468+
echo 'extension=zstd.so' > /etc/php.d/40-zstd.ini
469+
/usr/bin/yes 'no' | pecl install --configureoptions 'enable-lzf-better-compression="no"' lzf
470+
echo 'extension=lzf.so' > /etc/php.d/40-lzf.ini
471+
dnf install -q -y redis6-devel lz4-devel
472+
/usr/bin/yes 'no' | pecl install --configureoptions 'enable-redis-igbinary="yes" enable-redis-lzf="yes" enable-redis-zstd="yes" enable-redis-msgpack="yes" enable-redis-lz4="yes" with-liblz4="yes"' redis
473+
echo 'extension=redis.so' > /etc/php.d/41-redis.ini
474+
459475
# Adjust base php.ini
460476
sed -i 's/memory_limit =.*/memory_limit = 4096M/' /etc/php.ini
461477
sed -i 's/;max_input_vars.*/max_input_vars = 5000/' /etc/php.ini
@@ -484,21 +500,24 @@ Resources:
484500
sed -i 's/;opcache.use_cwd=.*/opcache.use_cwd=1/' /etc/php.d/10-opcache.ini
485501
sed -i 's/;opcache.validate_timestamps=.*/opcache.validate_timestamps=1/' /etc/php.d/10-opcache.ini
486502
sed -i 's/;opcache.save_comments=.*/opcache.save_comments=1/' /etc/php.d/10-opcache.ini
487-
sed -i 's/;opcache.enable_file_override=.*/opcache.enable_file_override=60/' /etc/php.d/10-opcache.ini
488503
sed -i 's/;opcache.file_cache_only=.*/opcache.file_cache_only=1/' /etc/php.d/10-opcache.ini
489504
490505
# Install ElastiCache client
491-
if [ $(uname -a | grep -c x86_64) == "1" ]; then
492-
echo "downloading x86 client for ElastiCache"
493-
wget -P /tmp/ https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-8.1/latest-64bit-X86-openssl3
494-
tar -xf '/tmp/latest-64bit-X86-openssl3'
495-
else
496-
echo "downloading ARM-64 client for ElastiCache"
497-
wget -P /tmp/ https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-8.2/latest-64bit-arm-X86-openssl3
498-
tar -xf '/tmp/latest-64bit-arm-X86-openssl3'
499-
fi
500-
mv amazon-elasticache-cluster-client.so /usr/lib64/php/modules/
501-
echo 'extension=amazon-elasticache-cluster-client.so;' > /etc/php.d/50-elasticache.ini
506+
#if [ $(uname -a | grep -c x86_64) == "1" ]; then
507+
# echo "downloading x86 client for ElastiCache"
508+
# wget -P /tmp/ https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-8.1/latest-64bit-X86-openssl3
509+
# tar -xf '/tmp/latest-64bit-X86-openssl3'
510+
#else
511+
# echo "downloading ARM-64 client for ElastiCache"
512+
# wget -P /tmp/ https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-8.2/latest-64bit-arm-X86-openssl3
513+
# tar -xf '/tmp/latest-64bit-arm-X86-openssl3'
514+
#fi
515+
#mv amazon-elasticache-cluster-client.so /usr/lib64/php/modules/
516+
#echo 'extension=amazon-elasticache-cluster-client.so;' > /etc/php.d/50-elasticache.ini
517+
# Install Memcached client - note that ElastiCache client is failing on AL2023
518+
dnf install libmemcached libmemcached-devel -y -q
519+
/usr/bin/yes 'no' | pecl install memcached
520+
echo 'extension=memcached.so' > /etc/php.d/41-memcached.ini
502521
503522
# Mount EFS
504523
availabilityzone=$(ec2-metadata -z | awk '{print $2}' | sed 's/(.)//')

0 commit comments

Comments
 (0)