Posted at

uwsgiをEC2インスタンスにインストールしようとして失敗した話

More than 1 year has passed since last update.


概要

EC2インスタンスにuwsgiをインストールして失敗したので、

トラブルシューティング用のメモ


背景

もともと、pythonのフレームワーク"Django"を使ってWEBアプリケーションを作っていました。

それをEC2上でnginx+wsgiで動かそうとして、インストール中にエラーが出たという感じです。

開発経験は皆無なので、なんでその仕様で動かそうとしたの?って突っ込まれたら、

(特に理由は)ないです

って答えちゃうと思うのですが、コメントいただければ参考にします。


環境


EC2インスタンスのスペック


  • OS:Red Hat 7.3

  • インスタンスタイプ:t2.micro


手順

というわけでEC2インスタンスにインストール

pip install uwsgi

しようとしたら、こんなエラーが出てきてしまった。


Traceback (most recent call last):

File "", line 1, in

File "/tmp/pip-build-pV1pAc/uwsgi/setup.py", line 124, in

distclass=uWSGIDistribution,

File "/usr/lib64/python2.7/distutils/core.py", line 152, in setup

dist.run_commands()

File "/usr/lib64/python2.7/distutils/dist.py", line 953, in run_commands

self.run_command(cmd)

File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command

cmd_obj.run()

File "/usr/lib/python2.7/site-packages/wheel/bdist_wheel.py", line 215, in run

self.run_command('install')

File "/usr/lib64/python2.7/distutils/cmd.py", line 326, in run_command

self.distribution.run_command(command)

File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command

cmd_obj.run()

File "/tmp/pip-build-pV1pAc/uwsgi/setup.py", line 77, in run

conf = uc.uConf(get_profile())

File "uwsgiconfig.py", line 742, in init

raise Exception("you need a C compiler to build uWSGI")

Exception: you need a C compiler to build uWSGI


Failed building wheel for uwsgi


C compilerが必要だぞ!って怒られちゃいました。

じゃあC compilerが使えるようにしよう。

そしてググってみた。

結果、そういえばDevelopment Toolをインストールしていなかったので、

インストールしてみよう。

sudo yum groupinstall "Development Tools"

これでインストールできた。

というわけで再度インストール。


In file included from plugins/python/python_plugin.c:1:0:

plugins/python/uwsgi_python.h:2:20: 致命的エラー: Python.h: そのようなファイルやディレクトリはありません

#include <Python.h>


コンパイルを停止しました。

うわぁ。。。マジか。。。

ファイルがないと怒られてしまったので、再度ググりました。

参考記事:http://zashikiro.hateblo.jp/entry/2012/10/02/130031

というわけで、python2.7-devというパッケージをインストール。

sudo yum install python-devel

これでPython.hが参照できるようになるはず。

再度挑戦してみよう。

すると。。。


Collecting uwsgi

Using cached uwsgi-2.0.14.tar.gz

Building wheels for collected packages: uwsgi

Running setup.py bdist_wheel for uwsgi ... done

Stored in directory: /root/.cache/pip/wheels/c4/ad/56/f70a70b63fa4b0f2c0518db6f41381c9d33cd5cc5ac9a9494b

Successfully built uwsgi

Installing collected packages: uwsgi

Successfully installed uwsgi-2.0.14


インストールできた!やったね!

というわけで今度はデプロイするところまでやってみようかな〜