英文:
how to install php8.1 imagick on awa app runner?
问题
I am installing project on aws app runner.
Project uses php imagick so I tried to install it.
I imported project form github source code (Laravel 10 + php 8.1) and running it automatically through configuration file (apprunner.yaml).
I tried to add several lines on build.sh file but project still can't get imagick.
How to enable this imagick on aws app runner php runtime?
我正在安装项目到 AWS App Runner。
项目使用 PHP Imagick,所以我尝试安装它。
我从 GitHub 源代码导入了项目(Laravel 10 + PHP 8.1),并通过配置文件(apprunner.yaml)自动运行它。
我尝试在 build.sh 文件中添加了几行代码,但项目仍然无法获取 Imagick。
如何在 AWS App Runner 的 PHP 运行时中启用 Imagick?
我附上了我的当前代码。
英文:
I am installing project on aws app runner.
Project uses php imagick so I tried to install it.
I imported project form github source code (Laravel 10 + php 8.1) and running it automatically through configuration file (apprunner.yaml).
I tried to add several lines on build.sh file but project still can't get imagick.
How to enable this imagick on aws app runner php runtime?
I attached my current code.
#!/usr/bin/env bash
echo "build"
sudo yum list installed | grep php
sudo yum remove php*
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php81
sudo yum install php81
ln -s /usr/bin/php81 /usr/bin/php
# Install Composer & necessary packages
EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')"
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]
then
>&2 echo 'ERROR: Invalid installer checksum'
rm composer-setup.php
exit 1
fi
php composer-setup.php
rm composer-setup.php
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo yum -y update
sudo yum-config-manager --enable remi-php81
sudo yum -y install --enablerepo=remi-php81 php81 php81-php php81-php-common php81-php-mbstring php81-php-mysqlnd php81-php-xml php81-php-bcmath php81-php-gd php81-php-intl php81-php-pecl-mcrypt
sudo yum -y install --enablerepo=remi-php81 --disablerepo=amzn2-core php81-php-pecl-zip
sudo yum -y install --enablerepo=remi-php81 php81-php-pecl-imagick-im7
sudo yum -y install --enablerepo=remi-php81 php81-php-fpm php81-php-pecl-apcu php81-php-opcache
yum install nginx -y
# Install dependencies
php composer.phar install
cp -p .env.staging .env
php artisan key:generate
php artisan config:cache
php artisan config:clear
sudo chmod -R 755 ./storage
# Install PHP Imagick
echo "Installing imagick packages--------------------------------------------------------------------->>>>>"
yum install -y libpng-devel libjpeg-devel openjpeg2-devel libtiff-devel libwebp-devel giflib-devel
yum install -y gcc gcc-c++ autoconf automake
pecl install Xdebug
sudo service httpd restart
yum groupinstall "Development Tools" -y
yum install build-essential -y
yum install -y tar
curl -OL https://www.imagemagick.org/download/ImageMagick.tar.gz
tar -vxf ImageMagick.tar.gz
cd ImageMagick*
./configure --prefix=/ \
--with-bzlib=yes \
--with-fontconfig=yes --with-freetype=yes \
--with-gslib=yes --with-gvc=yes \
--with-jpeg=yes --with-openjp2=yes \
--with-png=yes \
--with-tiff=yes \
--disable-dependency-tracking
make && sudo yum install -y ImageMagick-devel & sudo make install
sudo service nginx stop
sudo service php-fpm stop
yum -y install yum-utils
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php81
yum repolist
echo 'php devel install----------------------------->'
yum install -y php-cli
yum install -y php-pear
yum install -y php-dev php81-php-devel php-devel pcre-devel make
ln -s /usr/bin/phpize81 /usr/bin/phpize
ln -s /usr/bin/pecl81 /usr/bin/pecl
sudo /usr/bin/pecl install imagick
sudo echo "extension=imagick.so" > /etc/php.d/imagick.ini
sudo /etc/init.d/httpd restart
sudo service php-fpm start
sudo service nginx start
echo 'Check imagick installed status'
php -m|grep imagick
echo "Finish imagick packages--------------------------------------------------------------------->>>>>"
# Nginx And PHP-FPM Configuration
cp -p /app/scripts/resources/nginx.conf /etc/nginx/nginx.conf
cp -p /app/scripts/resources/www.conf /etc/php-fpm.d/www.conf
# Directory Permission
chown -R :nginx /app/storage
chown -R :nginx /app/bootstrap/cache
chown -R :nginx /app/public
find /app/storage -type d -exec chmod 775 {} \;
find /app/storage -type f -exec chmod 664 {} \;
find /app/bootstrap/cache -type d -exec chmod 775 {} \;
find /app/bootstrap/cache -type f -exec chmod 664 {} \;
find /app/storage -type d -exec chmod g+s {} \;
find /app/bootstrap/cache -type d -exec chmod g+s {} \;
setfacl -R -d -m g::rwx /app/storage
setfacl -R -d -m g::rwx /app/bootstrap/cache
# Log Configuration
ln -s /dev/stdout /var/log/nginx/error.log
ln -s /dev/stdout /var/log/nginx/access.log
ln -s /dev/stdout /var/log/php-fpm/error.log
ln -s /dev/stdout /var/log/php-fpm/www-access.log
ln -s /dev/stdout /var/log/php-fpm/www-error.log
# NPM Build
echo "node js, npm install"
curl -fsSL https://rpm.nodesource.com/setup_16.x | bash - && yum -y install nodejs
yum install gcc-c++ make -y
echo "npm install"
npm install
echo "npm build"
npm run build
答案1
得分: 0
你的安装看起来一团糟,你混合使用了 php-* 和 php81-php-* 软件包,参见 FAQ。
在你的过去,有 EL-7 和 EL-8 的混合指令。
要进行正确的存储库配置和使用,请遵循 向导 中的说明。
简而言之,在 EL-7 上:
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum install yum-utils
# yum-config-manager --enable remi-php81
# yum install php-cli php-imagick
但请注意,EL-7 还有大约 1 年左右即将结束生命周期。
简而言之,在 EL-8 或 EL-9 上:
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# dnf module reset php
# dnf module install php:remi-8.1
# dnf install php-cli php-imagick
然后
# php --ri imagick
imagick
imagick 模块 => 已启用
imagick 模块版本 => 3.7.0
...
无需构建任何内容,也无需更改任何配置文件。
英文:
Your installation looks like a mess, you are mixing php-* and php81-php-* packages, see FAQ
In your past, there is a mix of EL-7 and EL-8 instructions
For a proper repository configuration an usage, follow the wizard instructions
In short, on EL-7
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum install yum-utils
# yum-config-manager --enable remi-php81
# yum install php-cli php-imagick
But remind that EL-7 is close to its EOL in ~1 year.
In short, on EL-8 or EL-9
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# dnf module reset php
# dnf module install php:remi-8.1
# dnf install php-cli php-imagick
And then
# php --ri imagick
imagick
imagick module => enabled
imagick module version => 3.7.0
...
The is no need to build anything, and no need to alter any configuration files.
答案2
得分: 0
这是我的最终解决方案。
echo "构建"
#基本配置
yum update -y
sudo amazon-linux-extras enable epel
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils -y
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php81
yum clean metadata
yum update -y php php-cli php-intl php-common php-devel php-fpm php-gd php-mbstring php-mysqlnd php-opcache php-pdo php-process php-xml --disableplugin=priorities
# 安装 PHP Imagick
echo "安装 Imagick 包--------------------------------------------------------------------->>>>>"
sudo yum install -y --enablerepo=remi libstdc++.so.6 LibRaw LibRaw-devel --disableplugin=priorities
yum install -y php-imagick --disableplugin=priorities
php --ri imagick
# 安装 Imagick 结束
echo '检查 imagick 安装状态'
php -m|grep imagick```
<details>
<summary>英文:</summary>
This is my solution finally.
````#!/usr/bin/env bash
echo "build"
#basic configuration
yum update -y
sudo amazon-linux-extras enable epel
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils -y
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php81
yum clean metadata
yum update -y php php-cli php-intl php-common php-devel php-fpm php-gd php-mbstring php-mysqlnd php-opcache php-pdo php-process php-xml --disableplugin=priorities
# Install PHP Imagick
echo "Installing imagick packages--------------------------------------------------------------------->>>>>"
sudo yum install -y --enablerepo=remi libstdc++.so.6 LibRaw LibRaw-devel --disableplugin=priorities
yum install -y php-imagick --disableplugin=priorities
php --ri imagick
# end install imagick
echo 'Check imagick installed status'
php -m|grep imagick````
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论