Amazon S3의 마 젠토 미디어 자산


21

Amazon S3에 모든 마 젠토 미디어 자산을 저장하는 방법을 묻습니다. https://github.com/punkave/aS3StreamWrapper 와 같은 PHP 스트림 래퍼 사용에 대해 생각 하고 미디어 폴더를 s3 : \ mybucket \ mediaFolder로 설정하십시오.

누구든지 이것에 경험이 있습니까?

또는 다음과 같이 더 잘 사용하십시오 : https://github.com/sstoiana/magento-s3 그러나이 확장은 좋지 않습니다. 다른 권장 사항이 있습니까?


1
옆으로 당신의 동기는 정확히 무엇입니까? 전 세계 잠재 고객에게 서비스를 제공하거나 서버 인터페이스 (> 100Mbit / 1Gbit)보다 더 많은 트래픽을 제공하거나 대중 교통이 좋지 않은 서버 제공 업체 (문제 자체)를 갖지 않는 한 CDN은 일반적으로 직접 콘텐츠를 제공하는 것보다 느립니다 같은 기계에서. 혼잡 한 네트워크, 먼 브레이크 아웃 포인트 및 열악한 경로는 일반적으로 단순히 직접 호스팅하는 것보다 컨텐츠 전송 속도가 느려집니다.
Ben Lessani-Sonassi

1
동기는 : 누군가 내 경험과 의견을 부탁하고 나는 그것에 대해 생각 솔루션 래퍼 스트림을 선호하지만, 우리는이 멋진 사이트가 어쩌면 누군가 :-) 나를 위해 그의 두 센트가
파비안 Blechschmidt

@sonassi CDN 사용 경험이 다소 오래된 것 같습니다. 모든 성숙한 CDN 솔루션은 웹 서버에 제공 할 수있는 것보다 훨씬 더 큰 규모로 컨텐츠를 지리적으로 배포하며 가장 가까운 지리적 위치에서 요청 클라이언트까지 컨텐츠를 제공합니다. js / css 연결 및 축소를위한 자산 파이프 라인을 사용하여 사이트에서 HTTP 요청 수를 최적화하는 것이 중요하지만 특히 Magento 사이트의 경우 훨씬 더 복잡합니다.
Ralph Tice

@RalphTice 3 개 대륙에 걸쳐 자체 BGP 애니 캐스트 네트워크를 운영한다는 점을 고려하면 구식이 아닙니다. 대부분의 '저렴한'CDN에는 국가 당 (일부 대륙에 따라) 단일 PoP가 있으므로 웹 서버 자체보다 지리적으로 더 가까운 것은 아닙니다. 예 : 아마존에 대한 GB의 가장 가까운 PoP는 아일랜드이며 영국 기반 머신보다 대기 시간이 훨씬 더 깁니다. 따라서 전 세계 고객을 대상으로하지 않는 한 국내 고객은 CDN의 혜택을 전혀 볼 수 없을 것입니다. 어떤 경우에는 더 비싸고 복잡한 것은 말할 것도없고 속도가 느립니다.
Ben Lessani-Sonassi

여러분, 저는 s3 버킷에 thaiphan / magento-s3 확장명을 사용했습니다 .s3의 제품 이미지 업로드 작업 및 제품 이미지와 연결되어 있지만 시스템 서버에서도 제품 이미지를 생성합니다. 이미지에 s3 버킷을 사용해야하므로 시스템의 pub / media / catalog를 삭제하려고 시도했지만로드 사이트 페이지 후에 제품 이미지가 시스템 서버에서도 다시 생성됩니다. 로컬 서버에서 작성된이 이미지를 중지해야합니까?
Camit1dk

답변:


6

이 사람들이 해결책을 찾는 것 같습니다 : ( http://thinkglobal.co/resources/moving-the-magento-media-directory-to-s3/ )

Magento가 모든 미디어 자산을 생성 할 때 S3에 푸시하고 다른 하나는 미디어 디렉토리를 S3 버킷에 마운트하고 Magento가 로컬 디스크에 쓰고 있다고 생각하게하는 두 가지 방법이 있습니다. 우리는 후자를 선택했습니다.

우리는 s3fs라는 도구를 사용했는데,이 도구는 퓨즈라는 광범위한 기술을 사용합니다. 매우 간단한 구성 (아래 설명)을 사용하면 s3fs를 시작할 수 있습니다. AWS 또는 다른 PAAS 공급자를 사용하는 경우 S3 버킷 이름 또는 API 액세스 자격 증명을 하드 코딩하지 않도록주의하십시오.

다음 변수를 특정 구성에 대한 값으로 바꾸십시오.

  • {{S3_BUCKET}} (S3 버킷 이름)
  • {{API_PUBLIC_ACCESS_KEY}} (AWS 제공)
  • {{API_SECRET_ACCESS_KEY}} (AWS 제공)
  • {{UID}} (nginx / apache 사용자의 사용자 ID)
  • {{GID}} (nginx / apache 사용자의 그룹 ID)
  • {{MOUNTED_DIRECTORY}} (마 젠토 미디어 디렉토리 경로)

설정은 다음과 같습니다.

yum install -y gcc libstdc++-devel gcc-c++ curl curl* curl-devel libxml2 libxml2* libxml2-devel openssl-devel mailcap

cd /usr/local/src
wget http://downloads.sourceforge.net/project/fuse/fuse-2.X/2.9.3/fuse-2.9.3.tar.gz
tar -xzf fuse-2.9.3.tar.gz
rm -f fuse-2.9.3.tar.gz
mv fuse-2.9.3 fuse
cd fuse/
./configure prefix=/usr
make
make install
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib64/pkgconfig/
ldconfig
modprobe fuse
pkg-config modversion fuse

wget http://s3fs.googlecode.com/files/s3fs-1.74.tar.gz
tar -xzvf s3fs-1.74.tar.gz
rm -f s3fs-1.74.tar.gz
mv s3fs-1.74 s3fs
cd s3fs
./configure prefix=/usr
make
make install

echo “{{S3_BUCKET}}:{{API_PUBLIC_ACCESS_KEY}}:{{API_SECRET_ACCESS_KEY}}” > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs

echo user_allow_other > /etc/fuse.conf

echo s3fs#{{S3_BUCKET}} {{MOUNTED_DIRECTORY}} fuse use_cache=/tmp,allow_other,uid={{UID}},gid={{GID}} 0 0″ >> /etc/fstab

s3fs -o allow_other -o uid={{UID}} -o gid={{GID}} -ouse_cache=/tmp {{S3_BUCKET}} {{MOUNTED_DIRECTORY}}

2
이것은 또한 AWS s3.amazonaws.com/quickstart-reference/magento/latest/doc/… 에서 권장하는 방법 인 것 같습니다 . 11 페이지 (최소한 AWS EFS가 제공 될 때까지)
pH

1
이 솔루션은 좋지만 실행 속도가 매우 느립니다. 이 문제를 어떻게 처리 했습니까? Magento가 URL을 생성 할 때 파일 시스템이 파일이 존재하는지 확인하는 것처럼 보입니다.
greatwitenorth

2

OnePica의 CDN 확장 은이 기능을 위해 매우 편리하며 S3 이상을 지원합니다. 인용 : "현재 확장 프로그램은 Amazon S3, Coral CDN, Mosso / Rackspace Cloud 파일 및 FTP, FTPS 또는 SFTP를 지원하는 모든 CDN, 서버 또는 서비스와 통합됩니다."


+1-OnePica가 잘 작동하고 S3와 Rackspace Cloud를 모두 지원함을 확인할 수 있습니다.
philwinkle

4
OnePica 만 CDN 매니저 파일이 여전히 로컬 의미
파비안 Blechschmidt

@FabianBlechschmidt 댓글에 더 구체적이어야합니다. OnePica의 확장 기능은 파일을 올바르게 설치 / 구성 할 때 파일을 로컬에 그대로 두지 않으며 Amazon S3가있는 프로덕션 환경에서 사용하고 있습니다.
Ralph Tice

어쩌면 나는 뭔가를 놓쳤다. 파일이 S3에 업로드되고 더 이상 media / catalog / ...에 업로드되지 않았 음을 의미합니까?
Fabian Blechschmidt

1
참고로, 이는 DreamObjects 드롭 인 S3 교체 솔루션에서도 작동합니다. 지금까지 다른 모든 S3 버킷과 잘 작동했습니다.
ylluminate

1

OnePica의 CDN 확장은 기본 Magento보다 훨씬 일찍 시간이 초과되는 자체 캐시 수명에 대해 올바른 TTL을 설정해야하는 것은 말할 것도없이 제품 이미지에만 작동하는 솔루션이 아닙니다. cms wysiwyg 이미지는 모두 미디어 폴더에 있지만 S3를 사용하지 않으면 모든 미디어 이미지가 S3에 업로드됩니다.

클라우드 프론트를 사용하는 것이 좋지만 모든 프런트 엔드 노드와 백엔드 노드에서 미디어 폴더를 공유하려면 여전히 NFS가 필요합니다. 또는 S3에 파일을 저장하기 위해 자체 인터페이스를 구축해야하며 오류도 처리해야합니다 (S3 API 시간 초과 전에 코드에서 처리 할 수 ​​있는지 여부를 누군가가 매우 큰 파일을 업로드 할 수 있는지 생각해보십시오)

다른 방법은 여분의 RDS (데이터베이스)에 미디어 스토리지를 저장하고 개별 크기 조정 캐시 이미지는 여전히 앱 서버 로컬 미디어 폴더에 저장되지만 클라우드 프론트가 이미 캐시하므로 괜찮습니다.


1

별도의 "admin"노드 (admin.example.com)를 갖고 미디어 폴더를 유지하는 것이 좋습니다. 이렇게하면 NFS 비용을 절약하고 동기화 등의 문제를 해결할 수 있습니다. CDN (클라우드 프론트 사용)을 관리 노드 미디어 폴더에 연결하고 모든 상점에 대해 구성 할 수 있습니다.

관리 노드를 사용하면 관리 노드에서 모든 크론 (재색 인화 및 기타 크론), 예약 된 작업 (제품 가져 오기, 재고 및 주문 동기화 등)을 이동하고 프런트 엔드 노드 CPU 처리를 저장할 수 있다는 이점도 있습니다.

편집 : 마지막 대답은 실제로 OP의 질문을 해결하지 못했습니다. Amazon S3의 마 젠토 미디어 자산? 글쎄, Magento는 이미 너무 많은 처리 오버 헤드를 가지고 있다고 생각하므로 s3 동기화 / 스트리밍에서 유지하고 로컬 미디어 폴더를 대신 사용하는 것이 좋습니다.


감사! 실제로 업로드가 불가능한 클라우드 호스트를 확인했습니다. 나중에 손실 된 :-)
파비안 Blechschmidt

1

글쎄, 이제 몇 년이 지났으므로 S3 / CDN에서 자산을 이동하고 제공 할 수있는 여러 플러그인이 있음을 주목하는 것이 중요하다고 생각합니다.

Google 검색은 많은 옵션을 제공합니다.

GitHub에 다음이 있습니다.

https://github.com/magefm/cdn

다음은 Magento의 Connect 마켓 플레이스에있는 것입니다.

http://www.magentocommerce.com/magento-connect/aws-s3-cdn-for-product-images.html

나는이 특정 확장을 아직 시도하지 않았지만 곧 프로젝트를 위해있을 것입니다. 다른 사람들도 있습니다.

@Sonassi에 동의하지 않으면서도 별도의 스토리지를 사용하여 가장 저렴한 서버 구성을 여전히 우수한 성능으로 유지하는 것이 오늘날 모범 사례로 간주됩니다. 예를 들어 S3을 사용하여 모든 정적 콘텐츠를 웹 서버 밖으로 옮기면 서버가 훨씬 적은 대역폭을 사용하고 동시 사용자 수와 전체 서버 전원이 덜 필요합니다. 그리고 요즘 대부분의 사람들과 같은 단일 데이터 센터에 있고 Dallas에 있다고 말하면 서유럽의 사람들이 Cloudfront와 같은 Global CDN으로 훨씬 빠르게 서비스를 제공받을 것이라는 데는 의심의 여지가 없습니다. 따라서 웹 서버와 분리 된 스토리지를 사용하여 대역폭 사용량을 줄이면이 ​​방법없이 더 빨리 필요할 때 하나의 서버 만 사용할 수 있으며 CDN을 사용하면 전체로드 시간이 크게 늘어납니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.