zoukankan      html  css  js  c++  java
  • 启动erlang/OTP里面的Web服务器(补充)

    为了避免参数都在命令行中导致太长,或者不能玩一些高级配置;可以使用inets的配置文件,OTP项目已经有各种配置文件的例子:

    [root@whyang ~]# cd otp_src_17.5/lib/inets/
    [root@whyang inets]# find . -type f -name *.config
    ./test/inets.config
    ./src/inets_app/inets.config
    [root@whyang inets]# find . -type f -name *.conf
    ./examples/server_root/conf/8888.conf
    ./examples/server_root/conf/ssl.conf
    ./examples/server_root/conf/httpd.conf
    ./examples/server_root/conf/8080.conf
    ./test/ftp_SUITE_data/vsftpd.conf
    ./test/httpd_test_data/server_root/conf/8888.conf
    ./test/httpd_test_data/server_root/conf/ssl.conf
    ./test/httpd_test_data/server_root/conf/httpd.conf
    ./test/httpd_test_data/server_root/conf/8080.conf
    ./test/httpc_proxy_SUITE_data/apache2/apache2.conf
    ./test/property_test/ftp_simple_client_server_data/vsftpd.conf
    ./test/old_httpd_SUITE_data/server_root/conf/8888.conf
    ./test/old_httpd_SUITE_data/server_root/conf/ssl.conf
    ./test/old_httpd_SUITE_data/server_root/conf/httpd.conf
    ./test/old_httpd_SUITE_data/server_root/conf/8080.conf
    [root@whyang inets]#

    比如inets APP级配置文件inet_test.config,内容大约如下:

    [root@whyang inets]# cat ./test/inets.config
    [{inets,[{services,[{httpd,"/ldisk/tests/bmk/inets/priv_dir/8099.conf"}]}]}].
    [root@whyang inets]# cat ./src/inets_app/inets.config
    [{inets,[{services,[{httpd,"/var/tmp/server_root/conf/8888.conf"},
                        {httpd,"/var/tmp/server_root/conf/8080.conf"}]}]}].
    [root@whyang inets]#

    我这里inets APP级配置文件内如下:

    [root@whyang ~]# cat inets_httpd18880.config
    [{inets,[{services,[{httpd,"/root/inetsConf/18880.conf"}]}]}].
    [root@whyang ~]#

    而模块级配置文件,如8888.conf,https.conf等等,我这里模块httpd的配置文件如下:

    [root@whyang ~]# cat inetsConf/18880.conf
    Port 18880
    ServerName whyang.yang.net
    SocketType ip_comm
    Modules mod_alias mod_auth mod_esi mod_actions mod_cgi mod_include mod_dir mod_get mod_head mod_log mod_disk_log
    ServerAdmin andypeker@163.com
    ServerRoot .
    server_tokens full
    log_format common
    ErrorLog /var/log/inets/error_log_18880
    TransferLog /var/log/inets/access_log_18880
    SecurityLog /var/log/inets/security_log_18880
    ErrorDiskLog /var/log/inets/error_disk_log_18880
    ErrorDiskLogSize 200000 10
    TransferDiskLog /var/log/inets/access_disk_log_18880
    TransferDiskLogSize 200000 10
    SecurityDiskLog /var/log/inets/security_disk_log
    SecurityDiskLogSize 200000 10
    MaxClients 50
    #KeepAlive 5
    #KeepAliveTimeout 10
    DocumentRoot /var/www/html
    DirectoryIndex main.html index.html
    DefaultType text/plain
    Alias /icons/ /var/www/html/icons/
    Alias /pics/ /var/www/html/icons/
    ScriptAlias /cgi-bin/ /var/www/html/cgi-bin/
    ScriptAlias /htbin/ /var/www/html/cgi-bin/
    ErlScriptAlias /cgi-bin/erl httpd_example io
    EvalScriptAlias /eval httpd_example io
    #Script HEAD /cgi-bin/printenv.sh
    #Action image/gif /cgi-bin/printenv.sh
    
    <Directory /var/www/html>
    AuthDBType plain
    AuthName Open Area
    AuthUserFile /root/inetsConf/auth/passwd
    AuthGroupFile /root/inetsConf/auth/group
    require user franklin
    require group groupf groupm
    </Directory>
    [root@whyang ~]#

    注意到其中还有auth的配置...

    配置文件齐了,启动:

    [root@whyang ~]# erl -config inets_httpd18880.config
    Erlang/OTP 17 [erts-6.4] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]
    
    Eshell V6.4  (abort with ^G)
    1>

    上面只是加载了配置文件,接下来启动APP inets:

    1> application:start(inets).
    ok
    2>

    查看一下APP状态:

    2> application:loaded_applications().
    [{kernel,"ERTS  CXC 138 10","3.2"},
     {stdlib,"ERTS  CXC 138 10","2.4"},
     {inets,"INETS  CXC 138 49","5.10.6"}]
    3>

    有个问题需要注意,httpd模块配置文件中,server_tokenslog_format字段是无效的(经过验证),而且配置文件例子中(比如httpd.conf)中没有server_tokenslog_format字段。

    浏览器打开看看!?:

    输入用户名和密码,登录:

    登录OK:

  • 相关阅读:
    1042 Shuffling Machine
    1043 Is It a Binary Search Tree
    1044 Shopping in Mars
    1443. Minimum Time to Collect All Apples in a Tree
    1045 Favorite Color Stripe
    Java笔记八:Java内置的包装类(1)
    Java笔记七:Java数字和日期处理(2)
    Java笔记六:Java数字和日期处理(1)
    Java笔记五: Java正则表达式
    Java笔记四:Java字符串处理
  • 原文地址:https://www.cnblogs.com/andypeker/p/4643340.html
Copyright © 2011-2022 走看看