スポンサーサイト

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

vncserverでgnomeの画面が表示されない現象

vncserverは起動しており、vncクライアントソフトでvncserverへ接続しても、gnome画面が表示されません。
一度、vncserverを停止させるため、下記コマンドを実行しても、

vncserver -kill:1


以下のように表示されるだけ。。。

Unable to start Xvnc, exiting


vncserverを停止することができません。
逆にvncserverコマンドを実行すると、新しいvncserverが起動されます。。

どうなってんだ・・。

どういった経緯で、この現象が発生するかわかりませんが、隠れてプロセスが起動しているようです。
プロセスの確認はpsコマンドを使いますが、ここに表示されないのです。
そこで、以下のコマンドでプロセスの状態を確認します。

/etc/rc.d/init.d/vncserver status


そうすると、以下のように表示され、psコマンドで表示するより一つ多くプロセスが表示されます。

Xvnc (pid 5088 3302) を実行中...


これを、以下のように、

# kill pid 5088
# kill pid 3302


プロセスを強制終了させ、再度vncserverコマンドで起動させると、今度は正常にgnome画面が表示されました。

。。。
スポンサーサイト

WindowsからCentOSをVNCでリモート操作

GUI育ちの僕としては、WindowsからCentOSをコマンドだけで操作するのは、限界を感じます。
できるなら、マウス、キーボードでCentOSを操作したいものです。

しかも、ディスプレイが1台しかない為、ディスプレイ切り替え器を使って、2台のマシンを1台のディスプレイで共有しています。CentOSの画面を見ながら、Windowsで操作などできませんし、何かと面倒です。キーボードとマウスも個別にありますし・・・。2つのキーボードってはっきり言って邪魔ですよね・・。

ということで、VNCを使ってWindowsからGUIによるリモート操作を実現したいと思います。

実現したいイメージはこんな感じです。
WS000021.jpg

-図1.WindowsからCentOSをVNCでリモート操作実現イメージ-

1.CentOSにVNCを設定する

CentOSではVNCサーバがあらかじめ入っています。ただし、起動状態にはなっていません。
メニューの[システム] - [管理] - [サービス]よりサービスの設定画面を起動させます。
サービスの設定

-図2.サービス設定画面-

「バックグラウンドのサービス」タブの項目に”vncserver”があるのでチェックを付けて、開始ボタンを押下します。

2.VNCサーバを起動させる

上記1の作業ではVNCサーバを使える状態にしただけで、VNCによるリモート操作はまだできません。SSHやtelnet等からコマンドで以下のように打ってやります。

# vncserver


そうすると以下のようにパスワード入力を要求されます。このパスワードはWindowsから接続するときに入力するパスワードで、初回のみ要求されます。

You will require a password to access your desktops.

Password:


※"Verify:"パスーワードは確認の為、入力をと2回要求されます。"Verify"と表示されたら1回目に入力したパスワードを入力すればOKです。

VNCサーバが起動すると以下のように表示されます。

New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log



CentOS等のLinuxでは複数のユーザがVNCでログインできるように番号が振られます。上記表示でlocaldomain:1と表示されているので1番という番号が振られています。Windowsからログインする場合にこの番号を使うので、メモしておきます。

3.CentOSファイアウォールのポート設定

CentOSでファイアウォールを有効にしている場合は、VNCで通信するポートの設定を有効にしてやる必要があります。ファイアウォールを無効にしてる場合は、4へ進んでください。
メニューから[システム] - [管理] - [セキュリティレベルとファイヤーウォールの設定]を選択し、セキュリティレベルの設定画面を開きます。

セキュリティレベルの設定

-図3.セキュリティレベルの設定-

その他のポートにVNCのポート番号を追加してやります。
VNCのポート番号ですが、5900番代が割り当てられます。今回の場合、VNCサーバは1番という番号で起動しているので、この場合5901がポート番号になります。複数ユーザを対応させるには、少々面倒ですが、図3のように設定してやればOKです。

4.Windows側のクライントVNCを用意する

以下からダウンロードできます。特に設定は必要なく、ダウンロードしてVNC Viewerを起動すればOKです。
窓の杜 - VNC

5.クライアントVNCでログインしてみる。

Windows上でVNCビューアを起動させます。VNCビューアのserverにはCentOSマシンのIPアドレスと、「:」を付けて先程のサーバ番号を付加してやります。

×××.×××.×××.×××:1


※「×」の部分はIPアドレス

VNCクライアントログイン

-図4.VNCビューアログイン-

次にパスワード入力すればCentOSの画面が・・・(図5参照)

VNC初期ログイン

-図5.VNC初期起動-

図5の通り、デフォルトのままでVNCを使うと、CentOSでログインした画面とは異なる画面が表示されます。さすがに、これではGUI操作とは言いがたいです。


6.VNCサーバでGNOMEを起動させる

CentOSでログインしたときのような(図1のようにGUIの)画面にするには、VNCサーバの設定を編集してやる必要があります。
設定を編集する前に、先程起動させたVNCサーバを以下のコマンドで停止させておきます。

vncserver -kill :1



設定を編集するファイルですが、CentOSのユーザーのホームディレクトリにある./vnc/xstartupをテキストエディタで開きます。※隠しファイルなので、デフォルトでは表示されていません。

ルート権限の場合は、以下のパスです。

/root/.vnc/xstartup



テキストエディタで開くと、以下のようになっています。

#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
twm &


これを下記このように書き換えます。twmを「#」でコメントアウトして、exec gnome-sessionを追加します。

#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
exec gnome-session


再度、上記2と5の手順でVNCを起動させ、ログインすると図1のようなグラフィカルな画面が表示されます。

テーマ : UNIX/Linux
ジャンル : コンピュータ

Windows JavaアプリケーションからCentOSマシンのMySqlサーバへの接続エラー ~1.CentOS側の問題~

Windows上のJavaアプリケーションからJDBCを使って、Linuxマシン上のMySqlサーバへ接続を試みました。Javaアプリケーションは下記のものを採用。

もしかしたら使えるかも?Java Tips集 MySqlに接続するクラスサンプル

そうしましたところ、表題にあります通り、
以下のエラーが発生しました。
- コンソール出力エラーコード1 -
ComDbUnit Init Error:com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: java.net.ConnectException: Connection timed out: connect

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection timed out: connect
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
at com.mysql.jdbc.MysqlIO.(MysqlIO.java:284)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2569)
at com.mysql.jdbc.Connection.(Connection.java:1485)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at dbCom.ComDbUnit.ComDbUnitInit(ComDbUnit.java:48)
at dbCom.ComDbUnit.(ComDbUnit.java:29)
at practice.EntryPoint.main(EntryPoint.java:27)

** END NESTED EXCEPTION **
Last packet sent to the server was 16 ms ago.


Windowsの環境は、
OS:Windows XP SP2
java version :1.6.0_03
Eclipse:Version: 3.3.1.1

Linux側の環境は、
OS:CentOS 5
MySQL:5.0.22

上記問題点は2つあり、1つはCentOS側の問題。
もうひとつは、MySqlサーバ側の問題でした。
以下に解決策を掲載しますが、正しいかどうかは知りません。

1.CentOS側の問題
他のマシンからの受付をファイアウォールで勝手にブロックしてくれてたようです。
なので、ファイアウォールを無効にしてやれば、この問題自体は解決するのですが、
ファイアウォールを有効な状態でMySqlへ接続したいので、以下の手順でMySqlのポートは安全であることを教えてやります。
メニューバーから[システム] - [管理] - [セキュリティレベルとファイウォールの設定]を選択すると、セキュリティレベルの設定画面が開きます。

ファイアウォールの設定

- 図1 セキュリティレベル設定画面 -

「追加」ボタンを押下して、MySqlのポート番号である3306で設定してやります。
これでCentOS側の問題は解決されますが、この状態で実行すると、
今度は以下のようなエラーが発生します。
- コンソール出力エラーコード2 -
ComDbUnit Init Error:java.sql.SQLException: null,  
message from server: "Host '×××.×××.×.××' is not allowed to connect to this MySQL server"

この問題に関しては長くなるので、下記で取り上げます。
Linux OSをクライアントマシンとして使ってみる Windows JavaアプリケーションからCentOSマシンのMySqlサーバへの接続エラー ~2.MySQL側の問題~

WindowsパソコンとLinuxパソコンのマシン構成

我が家にはPCが2台あり、片方はドスパラWeb通販サイトから購入したカスタマイズマシンでWindowsXPが稼働しています。
もう一台がそこら辺から集めたパーツで作ったマシンで、Cent OS 5が稼働しています。
で、そこいら辺から集めたLinuxマシンのスペックは以下の構成です。

【Linuxマシン環境】
・OS:CentOS 5
・マザーボード:BIOSTAR 945GC-M7 TE
・CPU:Intel(LGA755) Celeron420 リテールBOX
・メモリ:ノーブランドDDR2 SDRAM PC2-6400 1GB
・HDD:Maxtor 2F040J0 40GB
・CD-ROM:AOPEN CRW5232/AAO PRO
・LANカード:アイ・オー・データ機器 ETX-PCI

MSNメッセンジャーや、Windows Media Player、その他Windowsに特化したものを使う必要がなければ、十分Linuxマシンはクライアントマシンとして扱えます。また、秀丸のようなテキストエディタがなくても、Eclipseをいれてしまえば、強力なエディタとして使えますし・・・現にこうやって、Cent OS 上でブラウザを開いて、ブログを更新できているわけですから・・。まぁ、いろいろLinuxでの検証をやっていきたいと思います。

また、上記2台のPCはインターネットにつなげる必要があるので、以下のブロードバンドルータでLAN接続しています。
CG-BARMX 有線ブロードバンドルーター



で、そのブロードバンドルータを介して、旧型のADSLモデムと接続して、インターネットへ接続しています。下図がその構成です。

ネットワーク構成


モデムとルータの実物は以下の写真の通り。

モデムとルータ


プロフィール

白鯖

Author:白鯖
安い寄せ集めの部品で構築し、CentOS5をインストールしました。主に、Webサーバ、アプリケーションサーバとして運用中。ハードの知識はあまり無いプログラマですが、全部自前で作るのは、手間はかかるけど、レン鯖より面白いです。

ハードウェア構成

カテゴリー
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
Max TDP控え目なCPU
安くて静音なクーラー
検索フォーム
ユーザータグ
RSSフィード
はてな
スポンサード リンク
おすすめ書籍
twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。