VirtualBoxのシェアフォルダを利用して
ホストOSのフォルダをVirtualBox(CentOS)の開発環境から見てって感じで開発をしていました。
が、VirtualBoxのシェアフォルダが超絶遅くてストレスだったので
CentOSの開発環境をSublimeTextのSFTPパッケージを利用して同期することにしました。
参考:
Sublime Text 2 の SFTP パッケージでファイルの自動アップロード&モニタリング機能を試してみた | memobits
1. CentOSのログイン設定
/etc/ssh/sshd_config にsshでのログイン設定が書かれています。
vi /etc/ssh/sshd_config
# 使用するport Port 22 # sshでのログインを許可 PubkeyAuthentication yes # パスワードでのログインを禁止する場合はno PasswordAuthentication no # パスワードなしでログインさせない PermiyEmptyPasswords no # rootでのログインを禁止する場合はno PermitRootLogin no # ログインできるユーザーを限定する場合 AllowUsers ユーザー名1 ユーザー名2
設定をしたらsshdを再起動
service sshd restart
2. SublimeTextにSFTPパッケージをインストール。
コマンド + ship + P でパッケージコントロールを開いて
install Package、SFTPを検索してインストール!
3. 同期の設定をする
同期させたいフォルダを作って、SublimeTextのサイドバーに追加。
フォルダを右クリックして、「SFTP/FTP」→「Map to Remote」を選択。
sftp-config.json**というファイルが作られます。
{ // The tab key will cycle through the settings when first created // Visit http://wbond.net/sublime_packages/sftp/settings for help // sftp, ftp or ftps "type": "sftp", "save_before_upload": true, "upload_on_save": false, "sync_down_on_open": false, "sync_skip_deletes": false, "confirm_downloads": false, "confirm_sync": true, "confirm_overwrite_newer": false, "host": "example.com", "user": "username", //"password": "password", //"port": "22", "remote_path": "/example/path/", "ignore_regexes": [ "\\.sublime-(project|workspace)", "sftp-config(-alt\\d?)?\\.json", "sftp-settings\\.json", "/venv/", "\\.svn", "\\.hg", "\\.git", "\\.bzr", "_darcs", "CVS", "\\.DS_Store", "Thumbs\\.db", "desktop\\.ini" ], //"file_permissions": "664", //"dir_permissions": "775", //"extra_list_connections": 0, "connect_timeout": 30, //"keepalive": 120, //"ftp_passive_mode": true, //"ssh_key_file": "~/.ssh/id_rsa", //"sftp_flags": ["-F", "/path/to/ssh_config"], //"preserve_modification_times": false, //"remote_time_offset_in_hours": 0, //"remote_encoding": "utf-8", //"remote_locale": "C", }
このファイルの必要な部分を変更して同期の設定をします。
// ゲストOS(CentOS)のホストに変更 "host": "192.168.56.101", // ゲストOSのログインユーザーに変更 "user": "kikikikii", // ゲストOSの開発環境のパスに変更 (同期元) "remote_path": "/www/homepage/", // sshで繋ぐ場合はコメントアウトを外し //ホストOS(Mac)のsshキーの場所を記述 "ssh_key_file": "~/.ssh/id_rsa", // portがCentOSの設定と違っていたら //コメントアウトを外して合わせる //"port": "22", // パスワードで繋がないようにコメントアウト //"password": "password",
4. CentOSの開発環境を環境にSublimeTextで同期してLocalに持ってくる
同期設定をしたフォルダを右クリック
「SFTP/FTP」→「Sync Remote -> Local...」を選択すれば
SublimeTextの下にコンソールが開いて同期が始まります。
逆にCentOSにアップしたい場合は「SFTP/FTP」→「Sync Local -> Remote...」で。
5. 同期がエラーになってしまう場合
rootユーザーではSyncできるのに、
指定したユーザーではエラーになって同期できないトラブルに遭遇しました。
ターミナルからsftpでCentOSに繋がるかどうか試します。
sftp username@192.168.56.101
なんかエラーが返ってきました
Connecting to hostname...
Received message too long 1970496800
このエラーで検索したところbashrcに問題があるっぽい。
サーバーにsftpできないときは - console.lealog();
CentOSにSublimeTextで同期するユーザーでログインして、bashrcを修正します。
ssh username@192.168.56.101 vi .bashrc
bashrcの先頭に下記を追記して保存
# .bashrc for interactive terminal [ -z "$PS1" ] && return
ターミナルからsftpで接続できる事を確認して、
再びSublimeTextで「SFTP/FTP」→「Sync Remote -> Local...」
無事同期することができました。
すごくハマッた!!