スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

CentOS+Nginxで80ポート以外ででアプリを起動

タイトル的にリバースプロキシ使ってどうこうって思った人すみません。
この記事ではNginxで80番以外のポートでウェブアプリ動かしてみる方法です。

1.なぜこうなったし
ローカルの自宅サーバーでとあるサイトの開発環境を整える必要がありましたが、うちのCentOSサーバーではすでにconcrete5とWPが動いてます。なるべくこっちに影響を出さない方向で開発用環境を整えたいというわけでポートを使い分けることを思い立ちました。
つまり普通にhttp://サーバーIP/concrete5 or wordpress http://サーバーIP:ポート番号 で開発用環境。

2.8080指定してドハマり
はい、代わりといえば8080、と思ってやっててドハマりしました。
結論から言うと、8080だと勝手にhttp-proxy になっちゃうので別のポートにする必要がありました。それも何らかのサービスと被らないように10000以上が望ましい。

$ curl http://192.168.0.2:8080
curl: (7) Failed connect to 192.168.0.2:8080; ホストへの経路がありません


なんだけど、サーバー上で
$ curl http://localhost:8080
するとちゃんとつながる。

3.Nginxの設定
/etc/nginx/sites-available/以下に設定ファイルを書いて/etc/nginx/nginx.confでincludeするようにしておく。
/etc/nginx/sites-enabled/以下に生きているアプリ(サイト)の設定へのシンボリックリンクをはっておく。

$ sudo ln -s /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/test.conf


みたいな感じ。この場合は/etc/nginx/sites-available/default.confへのリンクを/etc/nginx/sites-enabled/test.confという名前ではります。

/etc/nginx/nginx.confでsites-enabled/以下の設定ファイルがincludeされるように追記orコメント外す

include /etc/nginx/sites-enabled/*;



うちの環境では/var/www/以下のphp使うCMS用に/etc/nginx/sites-available/default.confを書き直してるんですが、これがデフォルトポート80、rootを/var/wwwに設定してあるので、今回はphp使わなくて/home以下においたアプリ動かしたいので別ファイルで新しく書きます。

server {
listen 10080 default_server;
server_name _;


listenを8080にしてたら別マシンから全くアクセスできなかった。

4.ポートを調べよう
netstatとかpingとかやってもよくわからなかった。たどり着いたのはnmap。

$ sudo yum install nmap
$ sudo nmap -p 1-10022 localhost

Starting Nmap 5.51 ( http://nmap.org ) at 2015-01-28 14:30 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000029s latency).
rDNS record for 127.0.0.1: localhost.localdomain
Not shown: 10011 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
875/tcp open unknown
2049/tcp open nfs
3306/tcp open mysql
8011/tcp open unknown
8080/tcp open http-proxy


はい。8080がhttp-proxyになってました。ここでやっと今までの過ちに気づきました。
Nginxで8080指定すると勝手にhttp-proxyになって、この状態だと80に飛ばされる・・・のかな?だからファイルが見つかりませんとかアクセスできませんとか出るのかな?
で、iptablesで変えようとちょっと調べてみたけどめんどそう。ufwのぬるま湯で育った俺にはiptablesの細かい設定とか難しいんですー!
結局ちょっと触ったけどやっぱりうまく行かない。
ならNginxの方を設定で10080とかにしてsystem-config-firewall-tui で10080番開けばいいんじゃないの?
というわけで上記Nginxの設定(10080番)にして

$ sudo service nginx reload


指定しただけで開いてくれるかななんて淡い期待をしましたが

$ sudo nmap -p 1-10022 localhost

Starting Nmap 5.51 ( http://nmap.org ) at 2015-01-28 14:40 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000031s latency).
rDNS record for 127.0.0.1: localhost.localdomain
Not shown: 10012 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
875/tcp open unknown
2049/tcp open nfs
3306/tcp open mysql
8011/tcp open unknown

Nmap done: 1 IP address (1 host up) scanned in 0.89 seconds


そらそうだよね。

5.system-config-firewall-tuiでポート追加
ファイアウォールは有効にして「カスタマイズ」。デフォルトの設定してあるサービスのところはすでに設定してあるので、そのまま「転送」。
「その他のポート」ってとこで10080 tcpを追加。Screenshot from 2015-01-28 15:36:02 
信頼したインターフェイス、マスカレーディングetcは何もせずに転送。

参考
iptablesルールを簡易設定できるツールを使ってみる
ファイアウォール設定による通信遮断
設定したら「転送」。最後に最初の画面に戻るので「OK」→「はい」(確認がしつこく出てくるけど、ssh無効にしちゃったりすると悲惨なことになるのでご注意ください、ってことだと思う)

6.結果
nmapしたら10080番が出てこない。

$ sudo nmap -p 1-10022 localhost

Starting Nmap 5.51 ( http://nmap.org ) at 2015-01-28 14:40 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000031s latency).
rDNS record for 127.0.0.1: localhost.localdomain
Not shown: 10012 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
875/tcp open unknown
2049/tcp open nfs
3306/tcp open mysql
8011/tcp open unknown

Nmap done: 1 IP address (1 host up) scanned in 0.89 seconds



大丈夫かなと思ったけどリモート機から

$ curl http://192.168.0.2:10080


したら通った。
ブラウザでも表示可能になりました。
ちなみにnetstatするとちゃんとnginxが10080使ってるのがわかります。

$ sudo netstat -tanp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1712/sshd
tcp 0 0 0.0.0.0:54742 0.0.0.0:* LISTEN 1650/rpc.mountd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2048/master
tcp 0 0 0.0.0.0:53499 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 2110/smbd
tcp 0 0 0.0.0.0:10080 0.0.0.0:* LISTEN 16701/nginx
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:38817 0.0.0.0:* LISTEN 1650/rpc.mountd
tcp 0 0 0.0.0.0:46786 0.0.0.0:* LISTEN 1650/rpc.mountd
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3454/mysqld
tcp 0 0 0.0.0.0:8011 0.0.0.0:* LISTEN 20992/plackup
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 2110/smbd
tcp 0 0 0.0.0.0:875 0.0.0.0:* LISTEN 1645/rpc.rquotad
tcp 0 0 0.0.0.0:41743 0.0.0.0:* LISTEN 1468/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1372/rpcbind
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 16701/nginx
tcp 0 0 192.168.0.2:22 192.168.0.7:55418 ESTABLISHED 20466/sshd
tcp 0 0 192.168.0.2:22 192.168.0.7:55507 ESTABLISHED 20531/sshd
tcp 0 0 192.168.0.2:22 192.168.0.7:55327 ESTABLISHED 20351/sshd
tcp 0 0 :::58257 :::* LISTEN 1468/rpc.statd
tcp 0 0 :::22 :::* LISTEN 1712/sshd
tcp 0 0 :::445 :::* LISTEN 2110/smbd
tcp 0 0 :::2049 :::* LISTEN -
tcp 0 0 :::52388 :::* LISTEN 1650/rpc.mountd
tcp 0 0 :::59590 :::* LISTEN 1650/rpc.mountd
tcp 0 0 :::34343 :::* LISTEN 1650/rpc.mountd
tcp 0 0 :::139 :::* LISTEN 2110/smbd
tcp 0 0 :::53999 :::* LISTEN -
tcp 0 0 :::111 :::* LISTEN 1372/rpcbind



本番とは別に開発環境とかを別ポートで立ち上げといたりするのにはよさそう。
ともあれこれでNginxで80番ポート以外にも同時に別アプリ立ち上げることは出来ました。

教訓:10000以下は気軽に使うな。
スポンサーサイト
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

LMDEでEmacsのC-Spcが使えなかった問題

諸事情でいい加減nanoを卒業(?)してEmacsを使い始めました。
サーバーにssh接続してあーだこーだやるときにやっぱりnanoじゃきつい時が多いので。

1.サーバー側にEmacsインストール
CentOSなので

$ sudo yum install emacs


で一発。
Debian系なら

$ sudo apt-get install emacs



2.ssh接続した状態でemacs起動

$ ssh サーバーIP
$ emacs hogehoge


これで俺もEmacsen。

ちなみにデスクトップ環境ではあんな感じScreenshot from 2015-01-27 21:29:09
で開くんだけど、サーバーに接続して使うには
こんな感じScreenshot from 2015-01-27 21:28:08
で開くことになるので、当然のようにショートカットキーを覚えなくてはならないです。これがハードル高いんですよね。

3.ショートカットキー
キー入力によるEmacsの基本操作
こーいうの見ればいいと思うよ。最初から色々やろうとしても無理なので、終了の仕方、save、あとはカットとかそのへんをボチボチ。しかしここで問題発生。

4.EmacsでC-spcが使えない
ファイル編集時の選択範囲開始位置のCtl-Spaceが効かない。
なんでだろ~と思いながら一行ずつ削除したり、マウスで選択してコピー(何と言う邪道・・・)でごまかしてたけど、
原因はFcitxの切り替えショートカットキーに取られてたから
はい。入力メソッドの(ibusでもとられるっぽい)オンオフキーにCtl+Spaceが割り当てられてるから、こっちに取られちゃう。

■[Ubuntu][環境構築] Ubuntu12.04 キーバインド初期設定(Ctrl-Spaceを無効にするなど)

というわけでFcitx設定で別のショートカット割り当てましょ。
Screenshot from 2015-01-27 21:21:39 オンオフのところ、Ctrl+Spaceになってるとこクリックして
キーの組み合わせを入力すると変えられます
Screenshot from 2015-01-27 21:21:51 今回はCtrl+左Shiftキーにしてみました。
切り替えはほとんど全角半角でやってたから消してもいいんだけど消し方がわからない。

これでEmacs上でC-Spcを押すと・・・
Screenshot from 2015-01-27 21:20:54 無事範囲を選択出来ました。

これでこれからEmacser。

関連記事
Emacsもvimもまともに使えない自分がLinuxMintで使っているエディタとか
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

sshでファイル転送(scp)

FTP立てるまでもないんだけど、sshでリモート接続してるサーバー機とファイルのやりとりしたいときってけっこうあるんですよねー。1ファイルだけならテキストエディタかなんか起動して内容コピペでもいいんですけど。(よくない

というわけでsshで接続できているサーバー機とファイルのやりとり(サーバーにアップロード、サーバーからダウンロード)をやってみます。使うコマンドはscp。
実行環境はローカルLMDE、サーバーはお家サーバーCentOS6.6 VPSはさくらのCentOS6.5。

参考
scpコマンドでアップロード&ダウンロード
ssh でファイル転送(SCP コマンド)
scp – リモートマシンにファイルコピー - Linuxコマンド

1.scp でサーバーからファイルをDL

$ scp ユーザー名@さーばーIP:フォルダへのパス DL先のパス



$ scp tmin@192.168.0.2:index.html ~/
tmin@192.168.0.2's password:
index.html 100% 33MB 16.3MB/s 00:02


この場合はサーバー192.168.0.2のログインディレクトリ(この場合は/home/tmin)以下のindex.htmlというファイルをローカルの~/(つまり/homeディレクトリ)にDLできます。
パスワード聞かれたらsshのパスワード入れます。公開鍵認証方式にしてたら聞かれないと思います。たぶん。
この例ではお家サーバーなので192.168.0.2なんてなってますが、VPSなんかだったりしたらグローバルIPなりドメイン入れればおっけ。

2.scp でサーバーからフォルダごとDL
基本は上と同じで、ディレクトリの時はオプションに-rをつけます。

$ scp -r ユーザー名@サーバーIP:ディレクトリのパス 保存先



$ scp -r tmin@192.168.0.2:concrete5 ~/git
tmin@192.168.0.2's password:
(中略)
button_scroller_l_active.png 100% 2696 2.6KB/s 00:00
dropdown.png 100% 1159 1.1KB/s 00:00
bg_header_editing_active.png 100% 1216 1.2KB/s 00:00
button_scroller_l.png 100% 1697 1.7KB/s 00:00
bg_pane_r.png 100% 212 0.2KB/s 00:00



この場合は192.168.0.2のログインディレクトリにあるconcrete5(解凍して/homeフォルダに放置してたもの)をローカルの/home/git 以下にDLします。
Permission deniedとかのエラーが出た時は、サーバー側のディレクトリへのパス、ローカルのディレクトリへのパスなどを見なおしてみましょう。それでもダメならほんとに権限かも知れない。

3.scp でサーバーにファイルをUpload

$ scp ファイル名 ユーザー名@サーバーIP:アップロード先ディレクトリ



$ scp Firefox_wallpaper.png tmin@192.168.0.2:~/
tmin@192.168.0.2's password:
Firefox_wallpaper.png 100% 1053KB 1.0MB/s 00:00


この場合はローカルのhome(カレントディレクトリ)のFirefox_wallpaper.png というファイルを192.168.0.2の~/に転送。
無事成功したらサーバーの/home以下にFirefox_wallpaper.png があるはず。

4.scp でサーバーにディレクトリごと転送
2と同じく-rをつければおっけ。

$ scp -r ディレクトリへのパス ユーザー名@サーバーIP:アップロード先ディレクトリ



$ scp -r mikutter tmin@192.168.0.2:~/
tmin@192.168.0.2's password:
(中略)
skin.rb 100% 909 0.9KB/s 00:00
entity.rb 100% 11KB 10.6KB/s 00:00
serialthread.rb 100% 2205 2.2KB/s 00:00
service.rb 100% 12KB 11.6KB/s 00:00
LICENSE 100% 1084 1.1KB/s 00:00



この場合はhome(カレントディレクトリ)にあるmikutterフォルダを192.168.0.2の/homeに転送。

5.おまけ
sshはデフォルトで22番ポートを使うんだけれど、scpも-P ポートでポート指定ができます。のでセキュリティやらなんやらで例えば10022番をssh に当てている場合は

$ scp -P 10022 (以下略


で同じように使えます。

上記例でhome(カレントディレクトリ)ってあるとこは、homeで実行したらこうなりますよーってことで、なので例えば/home/images以下で実行するならそこからの相対パス指定すればおっけ。(当然絶対パスでもおっけ)。

サーバーIP、ユーザー名、パスワードがあればいけるので、VPSとかでサイト構築したけどFTPやらSambaはいれてない。基本はsshで接続してコマンドライン操作で運用してるけど、サーバー吹っ飛んだ時のこと考えると一部データは手元の方にも持ってきときたいなー。けどそのためだけにわざわざFTPたてて設定するのもめんどくせーなー、って時にすぐ使えて便利。
ちなみにVPSからサイトデータまるごと(400MB25000ファイルくらい)を引っ張ってきたけど10数分って感じ。さして早くはないけど手軽で良いと思いますね。

関連記事
CentOS6.4でSamba
yumでパッケージ完全削除
CentOS6.5でNFS Serverでファイル共有
レンタルサーバーのあれやこれや
さくらVPSの初期設定
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

ブログ内検索

カスタム検索

フリーエリア

クリックで救える命がある。

レンタルサーバー

さくらのマネージドサーバ
さくらインターネットのVPS
ConoHaのVPS
WebARENA VPSクラウド
99円レンタルサーバー
【CloudCore VPS】
GMOクラウドのレンタルサーバー
転送量無制限 ABLENET
@WAPPYレンタルサーバー
SPPDレンタルサーバー

カテゴリー+月別アーカイブ

 

アクセスカウンター

現在の閲覧者数:

プロフィール

Author:tmin
PCヲタ。ライト2ちゃんねら。
スロット好きのギャンブラー。(元
むしろ人生がギャンブルだが目下のところ負けっぱなし。
座右の銘は「結果オーライ」。故に基本適当。
トラブルもまた楽しみのひとつ

コメント、トラバ、相互リンク歓迎。お気軽にどうぞ。
当ブログについて
Twitterでこっちとあっちの更新情報流すことにしてみます。
http://twitter.com/t_min
Project Mikunchu♪Wikiできました。
Mikunchu200x40.png


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。