新規にEC2イメージを作ったところかたスタート。まずはVirtualBoxをインストール。色々と大ハマリ。結局、Oracleページよりrpmをダウンロードしてインストール
# yum install VirtualBox-5.1-5.1.12_112440_el7-1.x86_64.rpm --skip-broken (中略) 飛ばしました (依存性の問題): VirtualBox-5.1.x86_64 0:5.1.12_112440_el7-1 libXcursor.x86_64 0:1.1.14-2.1.9.amzn1 libXinerama.x86_64 0:1.1.2-2.7.amzn1 libXmu.x86_64 0:1.1.1-2.8.amzn1 libXt.x86_64 0:1.1.4-6.1.9.amzn1 libvpx.x86_64 0:1.2.0-1.0.amzn1
【参考】skip-brokenとは
続いて、Vagrantインストール。こちらも、本家よりrpmを入手してインストール。続いてGraphite。
$ wget https://github.com/obfuscurity/synthesize/archive/master.zip $ unzip master.zip $ cd synthesize-master/ $ vagrant plugin install vagrant-vbguest $ vagrant up No usable default provider could be found for your system. Vagrant relies on interactions with 3rd party systems, known as "providers", to provide Vagrant with resources to run development environments. Examples are VirtualBox, VMware, Hyper-V. The easiest solution to this message is to install VirtualBox, which is available for free on all major platforms. If you believe you already have a provider available, make sure it is properly installed and configured. You can see more details about why a particular provider isn't working by forcing usage with `vagrant up --provider=PROVIDER`, which should give you a more specific error message for that particular provider.
どうもVirtualBoxがVagrantから見えない・・・。色々はまったが、Amazon LinuxはXenで稼働しており、VirtualBoxはインストールできないとか。(仮想化上ではそもそもVirtualBoxが動かないとか)。Graphiteはソースを入手。
$git clone https://github.com/graphite-project/graphite-web.git $git clone https://github.com/graphite-project/carbon.git $git clone https://github.com/graphite-project/whisper.git $git clone https://github.com/graphite-project/ceres.git
各フォルダでビルド。
python setup.py install
オフィシャルに従いもろもろ追加。
yum install python-devel cairo-devel libffi-devel
djangoをインストール
pip install Django==1.10.5
次は怒られた。
$ pip install cairocffi You are using pip version 6.1.1, however version 9.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command. Collecting cairocffi Downloading cairocffi-0.7.2.tar.gz (75kB) 100% |████████████████████████████████| 77kB 2.9MB/s Complete output from command python setup.py egg_info: unable to execute 'gcc': No such file or directory unable to execute 'gcc': No such file or directory
まずはpipをアップグレードして、gccもインストール。他もろもろ。
$pip install --upgrade pip $yum install gcc $/usr/local/bin/pip install cairocffi $/usr/local/bin/pip install django-tagging $/usr/local/bin/pip install pytz $/usr/local/bin/pip install pyparsing $
いよいよDBセットアップがエラー
PYTHONPATH=/opt/graphite/webapp/ django-admin.py migrate --settings=graphite.settings --run-syncdb /opt/graphite/webapp/graphite/settings.py:249: UserWarning: SECRET_KEY is set to an unsafe default. This should be set in local_settings.py for better security warn('SECRET_KEY is set to an unsafe default. This should be set in local_settings.py for better security') Traceback (most recent call last): File "/usr/local/bin/django-admin.py", line 5, in <module> management.execute_from_command_line() File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line utility.execute() File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 341, in execute django.setup() File "/usr/local/lib/python2.7/site-packages/django/__init__.py", line 27, in setup apps.populate(settings.INSTALLED_APPS) File "/usr/local/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate app_config.import_models(all_models) File "/usr/local/lib/python2.7/site-packages/django/apps/config.py", line 199, in import_models self.models_module = import_module(models_module_name) File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/opt/graphite/webapp/graphite/account/models.py", line 16, in <module> from django.contrib.auth import models as auth_models File "/usr/local/lib/python2.7/site-packages/django/contrib/auth/models.py", line 4, in <module> from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager File "/usr/local/lib/python2.7/site-packages/django/contrib/auth/base_user.py", line 52, in <module> class AbstractBaseUser(models.Model): File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 119, in __new__ new_class.add_to_class('_meta', Options(meta, app_label)) File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py", line 316, in add_to_class value.contribute_to_class(cls, name) File "/usr/local/lib/python2.7/site-packages/django/db/models/options.py", line 214, in contribute_to_class self.db_table = truncate_name(self.db_table, connection.ops.max_name_length()) File "/usr/local/lib/python2.7/site-packages/django/db/__init__.py", line 33, in __getattr__ return getattr(connections[DEFAULT_DB_ALIAS], item) File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 211, in __getitem__ backend = load_backend(db['ENGINE']) File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 115, in load_backend return import_module('%s.base' % backend_name) File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 28, in <module> raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
MySQLが無いらしいのでインストール。python-mysqlを入れようとすると、
$pip install mysql-python Collecting mysql-python Using cached MySQL-python-1.2.5.zip Installing collected packages: mysql-python Running setup.py install for mysql-python ... error Complete output from command /usr/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-9lfWr3/mysql-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-bKFVV6-record/install-record.txt --single-version-externally-managed --compile: running install running build running build_py creating build creating build/lib.linux-x86_64-2.7 copying _mysql_exceptions.py -> build/lib.linux-x86_64-2.7 creating build/lib.linux-x86_64-2.7/MySQLdb copying MySQLdb/__init__.py -> build/lib.linux-x86_64-2.7/MySQLdb copying MySQLdb/converters.py -> build/lib.linux-x86_64-2.7/MySQLdb copying MySQLdb/connections.py -> build/lib.linux-x86_64-2.7/MySQLdb copying MySQLdb/cursors.py -> build/lib.linux-x86_64-2.7/MySQLdb copying MySQLdb/release.py -> build/lib.linux-x86_64-2.7/MySQLdb copying MySQLdb/times.py -> build/lib.linux-x86_64-2.7/MySQLdb creating build/lib.linux-x86_64-2.7/MySQLdb/constants copying MySQLdb/constants/__init__.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants copying MySQLdb/constants/REFRESH.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-2.7/MySQLdb/constants running build_ext building '_mysql' extension creating build/temp.linux-x86_64-2.7 gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/include/mysql55 -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC -fPIC -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -DMY_PTHREAD_FASTMUTEX=1 mysql.c:44:23: fatal error: my_config.h: そのようなファイルやディレクトリはありません
大胆に以下をやったら、通った♡
$yum install mysql-* pip install mysql-python Collecting mysql-python Using cached MySQL-python-1.2.5.zip Installing collected packages: mysql-python Running setup.py install for mysql-python ... done Successfully installed mysql-python-1.2.5
次はスキーマ構築
PYTHONPATH=/opt/graphite/webapp/ django-admin.py migrate --settings=graphite.settings --run-syncdb
さあ起動と思ったらApacheが無かった。
$yum install httpd24 httpd24-tools $yum install mod24_wsgi-py27 $pip install twisted
その後も公式を見ながら悪戦苦闘も断念。。。