Mac(El Captitan) にPython3系を入れてみた
今回はMacに、Python3系を入れようとしたので、その備考録。
Macには元々、Python2.7が入っていたけど、それも共存させながら切り替えて使用できるっぽいので、それを試してみました。
Macにパスを設定
参考[1]より丸っとコピペさせてもらいました。
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)"
Pythonのインストール
今回は「Python 3.5.0a4」を入れてみようかと。
$ pyenv install --list //とりあえず何があるか確認する $ pyenv install 3.5.0a4
ここでエラー
以下のようなエラーが出た。
Downloading Python-3.5.0a4.tgz... -> https://www.python.org/ftp/python/3.5.0/Python-3.5.0a4.tgz Installing Python-3.5.0a4... ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib? Please consult to the Wiki page to fix the problem. https://github.com/yyuu/pyenv/wiki/Common-build-problems BUILD FAILED (OS X 10.11.4 using python-build 20141028) Inspect or clean up the working tree at /var/folders/89/bc34h7h57g993dw_17pryfb00000gn/T/python-build.20160504030211.19754 Results logged to /var/folders/89/bc34h7h57g993dw_17pryfb00000gn/T/python-build.20160504030211.19754.log Last 10 log lines: (cd /Users/takuma/.pyenv/versions/3.5.0a4/share/man/man1; ln -s python3.5.1 python3.1) if test "xupgrade" != "xno" ; then \ case upgrade in \ upgrade) ensurepip="--upgrade" ;; \ install|*) ensurepip="" ;; \ esac; \ ./python.exe -E -m ensurepip \ $ensurepip --root=/ ; \ fi Ignoring ensurepip failure: pip 6.1.1 requires SSL/TLS
解決法を検索
「ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?」でググッて、以下を実行
$ xcode-select --install CFLAGS="-I$(brew --prefix openssl)/include" \ LDFLAGS="-L$(brew --prefix openssl)/lib" \ pyenv install -v 3.5.0a4 CFLAGS=-I/usr/include/openssl \ LDFLAGS=-L/usr/lib64 \ pyenv install -v 3.5.0a4
効果なし…
以上のことをやってみても、エラーは解消しなかった。
今回の解決法
今回は以下の方法で、無事にPython 3.5.1を入れることができました。
pyenvのアップデート
pyenvのバージョンを調べてみたところ「pyenv-20150404」が私のには入っているようでした。
しょうがないので、最新版を入れてみることに。
brewのアップデート
pyenvのバージョンを最新にするために、brewをアップデートしてみた。
方法は以下。
$ brew update
但し、ここで以下のようなエラーが出てしまった場合は
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/Library/brew.rb:15:in `<main>'
たぶん、このままではbrewコマンドが一切使えない気がするので、以下を実行。
//一旦brewのディレクトリを元に戻す $ cd /usr/local $ git reset --hard && git clean -df $ sudo chown -R $(whoami):admin /usr/local brew update
これでbrewが最新にアップデートできた。
$ brew --version Homebrew 0.9.9 (git revision f653c; last commit 2016-05-04)
このあと、pyenvを最新にするために以下を。
$ brew install pyenv Error: pyenv-20150404 already installed To install this version, first `brew unlink pyenv` $ brew unlink pyenv Unlinking /usr/local/Cellar/pyenv/20150404... 5 symlinks removed $brew install pyenv
これでpyenvが最新になった。
$ pyenv --version pyenv 20160422
あとはこの状態で下を実行すると、「pyenv-20150404」ではでてこなかった、「python 3.5.1」が出てきた。
//インストールできるリストを確認 $ pyenv install --list //インストールしてみる $ pyenv install 3.5.1
以上でpython3.5.1を入れることができました。
Pythonを3.5.1に切り替える
インストールだけでは以下のようになっている.
$ pyenv versions * system (set by /Users/takuma/.pyenv/version) 3.5.1
Python3系に切り替えてみる。
$ pyenv global 3.5.1 $ pyenv rehash
確認。
$ pyenv versions system * 3.5.1 (set by /Users/takuma/.pyenv/version) $ python --version Python 3.5.1
長くなったけど、これでPython3.5.1のインストールができて使用できる状態になりました。
Twitterに自分のサイトがスパム判定されてしまいました…
タイトルの通りですが…
ConoHaでサーバをレンタルして、一日。
Nodejsで作ったTwitter連携アプリをwebに公開してみよう!と意気込んで、初レンタル鯖を手に入れ
ついにアプリ公開だ!!ってテンション高めで作業をしていたら、自分のVPS上で起動しているアプリケーションで
Twitterのoauth認証ページに飛ぼうとすると、以下のようなエラーが…
Error: The given URL is considered malware
さすがに英語できない僕でも理解できました…Twitterにマルウェアだと見なされた?!って。。。
とりあえず検索かけると、どうやらTwitterに間違ってスパム判定されてしまいました〜解除してください!って連絡すればいいとのこと。
全くめんどくさいことをしてくれますよ…
しょうがないので、以下の説明を読み、
Unsafe links on Twitter | Twitter Help Center
文章内の「こちら」をクリックし
以下の二番目「Twitterがスパムと判断したため、リンクをツイートできません。」にチェックを入れて、チケットの作成をしました。
すると、少ししてから登録したメールアドレス宛てに、以下の様なメール。
不自然な日本語だけど、「Twitterでは安全性を高めるために、自動でスパムっぽいサイトを検出して、ツイートできないようにしてるよ。とりあえず報告してもらった、サイトはあとで内容チェックして対応するね!」みたいな感じらしい。
これで、スパムじゃないと判定されればきっと解除されるはずだ。
はたして、ここからどれくらい待てばスパムじゃないと判断されて解除されるのだろうか…もしくはやっぱりこれスパム!!って判定されて解除されないとか??
まあ待つしかないですかね。
ちなみに、自分の場合はOauthの認証ページに飛べなくて気がついたけど、自分のサイトのURLをツイートしようとすると、エラーがでてツイートできなくなってましたね…
めんどくさいけど、まあしょうがないです。
きっと、デバッグ中にアクセスしすぎたのが原因ですかね。
もっとしっかり、ローカルでデバッグするようにすればよかったと反省。
追記 (2016/03/26)
スパム判定が解除されました
結論から言うとスパム判定は解除されていまでは、通常どおりにURLをTwitterにツイートすることもできるようになりました。
ただ、この記事の追記以前に書いた方法は何やら必要なかったようです。
原因はspamhaus.orgにスパムリスト登録されてしまっていた
The Spamhaus Projectというのは「ワールドワイドのスパム対策で非常に評判の高いブロックリスト」らしい。
(ここより引用 => Spamhausとは - はてなキーワード)
ようするに、今回はこいつに自分のドメインがスパムとして、リストに登録されていたのが原因のようだ。
そのため、Twitter側にいくら報告しても何の返事もないし解決しないわけです。
とりあえず今回スパム判定されてしまっていたのを、どう解決したか順番に書きます。
所要時間は作業で10分、解除待ちで30分くらいでしょうかね。
step.1 spamhaus.orgに自分のドメインがリスト登録されているか調べる
「https://www.spamhaus.org/query/domain/sample.com」のように、自分のドメインを入力してアクセス。
そして以下のように「sample.com is listed in the DBL」となっていたら、きっとスパムリストに入れられている、くそめ!
step.2 リストから削除してくださいとお願いします
step1で、自分のドメインをクリックすると、以下のような画面になるので、「DBL removal form」をクリック
step.3 ファームにメールアドレスなどを入力して、解除してくれ申請します
とりあえずフォームに必要事項書いて、送信します。
※メールアドレスはgmailなどのフリーのやつはダメらしい。しょうがないので、ezweb.ne.jpのものを使用した。
step.4 入力したメールアドレスに送られてきたメールをチェック
入力したメールアドレスにメールが届くので中身を確認し、中身に記載されているURLを踏むと、解除完了。
以下のような画面が出ればOKだとおもわれ。
step.5 休憩
step4までできっとスパムリストからの解除ができているが、すぐには反映されないためちょっとの間休憩しましょう。
自分の場合は、20分ほど放置してソシャゲ(クラロワを数戦)していたら、Twitterに自分のドメインでURLを書き込めるし、連携アプリケーションのログイン(oauth認証)も通るようになっていた。
一件落着である。
終わりに
長かった…初めTwitterのヘルプセンターに連絡していたが、そっちではなくspamhaus側で対応しなくてはいけなかったらしい。ここに気が付かなければTwitterヘルプセンターから連絡こないな〜とより無駄な時間を過ごしていただろう。
はぁー、Twitterがspamhausなるものを利用していることを知らなかった。外部のスパムリストを利用してスパムからユーザを保護しようとしているのですね。いやー本当に、サーバ借りて初日でスパム登録されるからびっくりしちゃいました。
参考
とりあえず今回この記事によって全てが解決したので、本当にありがとうございました、と言いたいです。
CentOS7で自動起動設定を行う
centOS6までは、mongoDBやnginxなどをOS起動時に自動で起動するようにするには「chkconfig」を利用していたようですが、
centOS7から「systemctl」になった模様。
CentOS6までは
$ sudo chkconfig mongod on
CentOS7
//自動起動を設定 $ systemctl enable nginx.service //自動起動を解除 $ systemctl disable nginx.service
らしいです。
※よくわからないけど、CentOS7でもmongoDBは以下でできた。
chkconfig mongod on
全部が全部、systemctlってわけではないのかなー
centos 7 + nginx + nodejsのnginxの設定メモ
nginxの設定を以下にメモ。
参考にさせて頂いた記事
設定ファイルの作成
/etc/nginx/conf.d/default.confを同じ階層にコピーして、sample.confみたいにする。
/etc/nginx/conf.d/sample.conf
upstream node-sampleapp { server localhost:3000; } server { listen 80; server_name www.aaa.bbb.ccc; charset utf-8; access_log /var/log/nginx/access-nodeApp.log main; error_log /var/log/nginx/error-nodeApp.log; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { proxy_pass http://node-sampleapp/; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
これで、www.aaa.bbb.cccにアクセスするだけで、www.aaa.bbb.ccc:3000などを指定する必要がなくなる!
注意
//これは☓ proxy_pass node-sampleapp/; //これでOK proxy_pass http://node-sampleapp/;
ここを気をつけないと以下のエラーがでてしまうようだ。しっかり、「http://」を付けましょう。
nginx: [emerg] invalid URL prefix in /etc/nginx/conf.d/node-app.conf:21 nginx: configuration file /etc/nginx/nginx.conf test failed
CentOS 7 にemacs24.3をインストール
以下を参考に行いました
[1]CentOS 6.4 に Emacs 24.3 をインストールする | Jaxx2104.info
こちらも簡単に利用したコマンドのみメモ
事前準備
sudo yum -y install gcc make ncurses-devel
emacs24.3を入れる
//ダウンロード(バージョンは適宜設定) $ wget http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-24.3.tar.gz //解答 $ tar xvf emacs-24.3.tar.gz //移動 $ cd emacs-24.3 //makeするために $ ./configure //makeします! $ make $ sudo make install
これで使えました。
元からemacs23などが入っている場合は、プロファイルの設定が必要かもしれないです。
Linuxでディレクトリ以下のgrep
メモ
$ grep -r "search-word" ディレクトリ ex : カレントディレクトリ以下で「hoge」を含む行 $ grep -r "hoge" ./
Emacsでsudoをして、ファイルを開く
$ sudo emacs test.txt
とすると、怒られた。
とりあえず以下で対応
//emacsを開いてから、Ctrl + Fでファイルを開こうとする. //そして、ファイルのパスをいれるミニバッファが開くので Find file: /sudo::/etc/.../.../test.txt
パスワードを聞かれるので、sudoするときに使うパスワードぶち込んでsudoで開けた。
簡単に書くと
「/sudo::「ファイルパス」」
これで書き込み権限ないって言われるやつも編集できそう。