5

有沒有人有任何使用PostGIS設置Amazon Elastic Beanstalk的經驗(以便我可以利用Geodjango)?使用PostGIS配置Amazon Elastic Beanstalk

有許多的默認設置(RDS,設有MySQL的)當前不支持開箱的特徵: 1. PostgreSQL的+ PostGIS的 2.安裝C/C++庫如GEOS和PROJ的能力0.4

在此先感謝

回答

9

如果你想與亞馬遜彈性青苗使用GeoDjango內置您需要創建一個自定義AMI在那裏你可以旋轉起來時,安裝了PostGIS,然後點你的魔豆彈性應用到AMI。

這是一個很好的tutorial on how to customize an EBS AMI。還有一個AWS tutorial for that,但我發現第一個更容易理解。在我的自定義AMI上,我從源代碼安裝了geos,gdal,proj4和postgis,以及使用yum install postgres的postgres。以下是我用來將所有庫安裝到AMI中的命令。

對於django應用程序來查找庫,我還在AWS EBS控制檯中設置了一個額外的環境變量。在我的環境的菜單欄中,我去了配置 - >軟件配置並編輯了環境屬性通過添加屬性LD_LIBRARY_PATH設置爲/usr/local/lib/:$LD_LIBRARY_PATH

由於beanstalk應用程序實例不是自己運行數據庫的前提,因此我還設置了一個Amazon RDS Postgres託管數據庫,這是一個相對較新的服務,它支持PostGIS。

如果你把這一切放在一起,你應該得到一個非常可擴展的GeoDjango應用程序!

sudo yum install postgresql postgresql-devel postgresql-server postgresql9-contrib gcc gcc-c++ make libtool curl libxml2 libxml2-devel python-devel 

wget http://download.osgeo.org/proj/proj-4.8.0.zip 
unzip proj-4.8.0.zip 
cd proj-4.8.0 
./configure 
make 
sudo make install 
cd .. 

wget http://download.osgeo.org/geos/geos-3.4.2.tar.bz2 
tar -xvf geos-3.4.2.tar.bz2 
cd geos-3.4.2 
./configure 
make 
sudo make install 
cd .. 

wget http://download.osgeo.org/gdal/1.10.1/gdal1101.zip 
unzip gdal1101.zip 
cd gdal-1.10.1 
./configure --with-python=yes 
make 
sudo make install 
cd .. 

wget http://download.osgeo.org/postgis/source/postgis-2.1.1.tar.gz 
tar -xvf postgis-2.1.1.tar.gz 
cd postgis-2.1.1 
./configure 
make 
sudo make install 
+0

完美!謝謝 –

+1

LD_LIBRARYPATH應該是LD_LIBRARY_PATH嗎?它在我做這個改變後適用於我。 –

+0

是的,你是對的。那是一個錯字。感謝您指出,只是更新了答案。 – yellowcap

5

你也可以不用定製的AMI,只需使用ebextensions。我使用Amazon Instance(2013.09)ami-35792c5c對此進行了測試,因此請使用該實例而不是新實例。如果您的Django in Elastic Beanstalk 101已完成,則您可以瞭解ebextensions。下面的ebextensions將快速啓動,您可以使用以下ebextensions。只需將以下內容放置在存儲庫基礎的.ebextensions文件夾中即可。我還包括Postgres的9.3和memcached的這些配置文件:

00_repo_ostgis.config

files: 
    "/etc/yum.repos.d/pgdg-93-redhat.repo": 
    mode: "000644" 
    owner: root 
    group: root 
    content: | 
     [pgdg93] 
     name=PostgreSQL 9.3 $releasever - $basearch 
     baseurl=http://yum.postgresql.org/9.3/redhat/rhel-6-$basearch 
     enabled=1 
     gpgcheck=1 
     gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-93 

     [pgdg93-source] 
     name=PostgreSQL 9.3 $releasever - $basearch - Source 
     failovermethod=priority 
     baseurl=http://yum.postgresql.org/srpms/9.3/redhat/rhel-6-$basearch 
     enabled=0 
     gpgcheck=1 
     gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-93 

commands: 
    epel_repo: 
    command: yum-config-manager -y --enable epel 
    remi_repo: 
    command: yum-config-manager -y --enable remi 

packages: 
    rpm: 
    pgdg-redhat93-9.3-1: 'http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm' 
    remi: 'http://rpms.famillecollet.com/enterprise/remi-release-6.rpm' 
    qt4-devel: 'http://mirror.centos.org/centos/6/os/x86_64/Packages/qt-4.6.2-28.el6_5.x86_64.rpm' 

01_app_postgis.config

packages: 
    yum: 
    libtiff-devel: '' 
    libjpeg-devel: '' 
    libzip-devel: '' 
    freetype-devel: '' 
    postgresql-devel: '' 
    gdal: '' 
    gdal-python: '' 
    geos: '' 
    proj: '' 
    libmemcached: '' 
    libmemcached-devel: '' 
    cyrus-sasl-devel: '' 
    zlib-devel: '' 

container_commands: 
    01_collectstatic: 
    command: 'PYTHONPATH=.:..:../lib cd site/<your_project> && ./manage.py collectstatic -c --noinput && cd ../..' 
    leader_only: true 
    02_migrate: 
    command: 'PYTHONPATH=.:..:../lib cd site/<your_project> && ./manage.py migrate --noinput && cd ../..' 
    leader_only: true 

option_settings: 
    - namespace: aws:elasticbeanstalk:container:python 
    option_name: WSGIPath 
    value: site/<your_project>/wsgi.py 
    - namespace: aws:elasticbeanstalk:container:python:staticfiles 
    option_name: /static/ 
    value: site/<your_project>/static/ 
    - option_name: DJANGO_SETTINGS_MODULE 
    value: settings_prod 

我的項目結構有點不同。我的設置文件和urls.py我移動到我的項目目錄的根目錄,所以我不得不將路徑更改爲wsgi.py中的設置。所以相應地調整。只需使用之前使用的container_commands和option_settings即可。

requirements.txt文件應包含在最低限度:

Django==1.7.1 
Pillow 
psycopg2 

我存儲在其他大多數蟒的依賴../ lib目錄中,我包括在我的PYTHONPATH所以我的回購協議的結構是這樣的:

<your_project>/ 
├── requirements.txt 
├── .ebextensions/ 
│   ├── 00_repos_postgis.config 
│   └── 01_app_postgis.config 
└── site/ 
    ├── <your_project> 
      │ ├── wsgi.py 
      │ ├── settings_prod.py # used for EB, like settings_local.py but uses env vars 
    │   └── settings.py 
   └── lib/ 
     └── <all pip dependencies> 

結帳部署工具,我建,它使用的面料。我從EB CLI工具中獲得了我所喜歡的東西,並進行了調整,直到它爲django量身打造:https://github.com/radlws/django-awseb-tasks

注意:啓動環境時使用AMI ami-35792c5c非常重要。它是我爲此設置工作的唯一一個。如果其他實例正常工作,請隨時將其編輯到此答案中。另見my original question

+0

00_repo文件太棒了!我今天學到了一些新東西。 – po5i

1

如果您想使用radtek的解決方案並想使用最新的Amazon AMI(2014.9),則可能會遇到依賴性問題。 This爲我解決了它。

+0

我的回答很舊,請隨時更新謝謝。 – radtek

3

正如我所提到here我的解決方案爲2017.03形象是:

commands: 
    01_yum_update: 
    command: sudo yum -y update 
    02_epel_repo: 
    command: sudo yum-config-manager -y --enable epel 
    03_install_gdal_packages: 
    command: sudo yum -y install gdal gdal-devel 

files: 
    "/etc/httpd/conf.d/wsgihacks.conf": 
    mode: "000644" 
    owner: root 
    group: root 
    content: | 
     WSGIPassAuthorization On 

packages: 
    yum: 
    git: [] 
    postgresql95-devel: [] 
    gettext: [] 
    libjpeg-turbo-devel: [] 
    libffi-devel: [] 
相關問題