3

DIY カートリッジを使用して、最小限の Scalatra アプリケーションを Openshift にデプロイしようとしています。SBT を動作させることができましたがcontainer:start、 になると次のエラーが表示されます。

FAILED SelectChannelConnector@0.0.0.0:8080: java.net.SocketException: Permission denied

明らかに、埋め込まれた Jetty は 0.0.0.0 でソケットを開こうとしますが、これは Openshift によって禁止されています ($OPENSHIFT_INTERNAL_IP でのみポートを開くことができます)。どの IP をリッスンする必要があるかを Jetty に正確に伝えるにはどうすればよいですか?

4

3 に答える 3

0

DIY カートリッジを使用して Openshift で jetty 9.2.13.v20150730 を実行するには、次のように Java8 を実行するように設定して実行する必要があり$OPENSHIFT_INTERNAL_IPます。最初にホストに ssh し、jdk8 をダウンロードします。

cd $OPENSHIFT_DATA_DIR
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u5-b13/jdk-8u5-linux-x64.tar.gz
tar -zxf jdk-8u5-linux-x64.tar.gz
export PATH=$OPENSHIFT_DATA_DIR/jdk1.8.0_05/bin:$PATH
export JAVA_HOME="$OPENSHIFT_DATA_DIR/jdk/jdk1.8.0_05"
java -version

次に、次の.openshift\action_hooks\startような同じエクスポートされた変数があることを確認します。

# see http://stackoverflow.com/a/23895161/329496 to install jdk1.8 no DIY cartridge
export JAVA_HOME="$OPENSHIFT_DATA_DIR/jdk/jdk1.8.0_05"
export PATH=$OPENSHIFT_DATA_DIR/jdk1.8.0_05/bin:$PATH
nohup java -cp ${OPENSHIFT_REPO_DIR}target/dependency/jetty-runner.jar org.eclipse.jetty.runner.Runner --host ${OPENSHIFT_DIY_IP} --port ${OPENSHIFT_DIY_PORT} ${OPENSHIFT_REPO_DIR}/target/thinbus-srp-spring-demo.war > ${OPENSHIFT_LOG_DIR}server.log 2>&1 &

(jdk-8u20-linux-x64.tar.gzこれも動作することが報告されているので、利用可能な最新のものを確認することをお勧めします。)

とをjetty.xml設定して正しいインターフェイスにバインドし、ビルドされた war ファイルを実行するため、その設定には は必要ありません。必要なのは、jetty-runner.jar が ivy キャッシュからターゲット フォルダーにコピーされることです。それを行うmavenを使用すると、次のようなものを追加できます。--host--port

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>org.eclipse.jetty</groupId>
                                <artifactId>jetty-runner</artifactId>
                                <version>${jetty.version}</version>
                                <destFileName>jetty-runner.jar</destFileName>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Google は、SBT に相当するものは単にretrieveManaged := true. ホストに ssh して実行findし、jetty-runner.jar依存関係がコピーされた場所を特定し、開始コマンドを適切に更新することができます。

于 2015-10-13T23:07:59.210 に答える
0

I've never used Openshift, so I'm groping a bit here.

Do you have a jetty.host set?

You may need to set up a jetty.xml file and set it in there. See http://docs.codehaus.org/display/JETTY/Newbie+Guide+to+Jetty for how to set the host. You can tell the xsbt web plugin about jetty.xml by setting your project up like this:

https://github.com/JamesEarlDouglas/xsbt-web-plugin/wiki/Settings

Alternately, you may be able to pass the parameter to Jetty during startup. That'd look like this: -Djetty.host="yourhostname"

于 2013-04-04T13:32:00.663 に答える