質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

295閲覧

mod_wsgiを使ってPythonをApacheで動かしたい(cd Python-3.6.0がエラーになる)

ChristainRoman

総合スコア2

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/06/23 12:32

前提・実現したいこと

mod_wsgiを使ってPythonをApacheで動かしたいと考えています。

CentOSを使用しています。

発生している問題・エラーメッセージ

以下構文のとおり、Python3.6をソースコードからコンパイルしてインストールしたいのですが、

$ cd /usr/local/src $ curl -O https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz $ tar zxf Python-3.6.0.tgz $ cd Python-3.6.0 $ ./configure --enable-shared --prefix=/usr/local LDFLAGS="-Wl,-rpath /usr/local/lib" $ make & make altinstall

cd Python-3.6.0を実行すると、Permission deniedとなります。

イメージ説明

試したこと

上記いくつかの構文の分末に --user を追記ましたが、構文が実行されませんでした。

お手数をおかけしますが、原因と対策を教えて頂けないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

/usr/local/srcの所有者がrootでおそらくパーミッションが700となっているためです。解決方法としては

  • Python-3.6.0のコンパイルを/home/ユーザ名/以下にディレクトリを作成して行う (推奨)
  • /usr/local/src/Python-3.6.0の所有者を変える (あまり推奨しない) sudo chown -R ユーザ名 Python-3.6.0
  • /usr/local/src/Python-3.6.0のパーミッションを変える (強く推奨しない) sudo chmod 755 Python-3.6.0
  • rootで作業する (強く推奨しない) sudo su -

のどれかになります。

Linuxを安全に使うために一般ユーザでやるべきことをrootでしないという考え方があります。Pythonのコンパイルは一般ユーザで行うべきでrootで作業すべきではありません。rootで行うのはinstallくらいです(make install)。したがって一般ユーザのホームディレクトリで展開してコンパイルする方が良いと思います。近年はDockerが流行って良く分からずにrootで作業する人たちが増えているので、いつか大きな事故が起きるだろうなとも思っています。

あとCentOSということですので追加でアドバイスすると

  • yumにSCLリポジトリを追加してyum installでインストールする (推奨)
  • minicondaを使用する
  • pyenv(anyenv)を使用する

のどれかを検討して下さい。

CentOS上でのコンパイルはLinuxの初心者が手を出すには難しいと思います。Pythonのコンパイルオプションが複雑です(最近はインターネット上で良い記事が多いのと--enable-optimizationsのおかげでそこまで大変な作業ではないです)。少なくとも現在ついているオプションだけでは、機能が強く制限されたPythonが出来上がります。

もしCentOSのバージョンが6.xであればminicondaを強く推奨します。yumで用意されているパッケージがことごとく古く多くのライブラリをソースコードから全てコンパイルすることになるでしょう。

またインターネットに公開して仕事として使用する予定であれば、リポジトリを追加してyumによるインストールが良いです。脆弱性が報告されるたびにコンパイルしてインストールするのは時間の無駄です。

投稿2020/06/23 13:07

編集2020/06/23 21:27
yymmt

総合スコア1615

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ChristainRoman

2020/06/24 06:59

上記にて解決いたしました。 ご回答くださり有難うございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問