Tag: ubuntu Tag: ubuntu2004

Ubuntu 20.04

2020-04-30

 Ubuntu20.04が先日正式リリースされました。2020年04月リリースバージョンということはご存知かとお見ます。偶数年の4月はLTS版。セキュリティのアップデートがそれ以外より長期間に提供されます。以前は3年だったと思いますが、今は5年になったのかな。私は派生ディストリビューションの「xubuntu」をインストールしてみました。

 最初からMOZCで日本語入力が可能となっています。インターネットブラウザは「firefox」が最初から入っています。ワープロはLibreOfficeのWriter、表計算は同じくCalcが使えます。
パソコンにあまり詳しくない人に少し前のWindowsだといっても信じるかもしれません。割とすんなり使えそうです。

 細かい設定等は、通常のUbuntuなどで確認してみようと思っています。

Ubuntu公式WEBサイト

https://ubuntu.com/

XubuntuWEBサイト

https://xubuntu.org/

参考になるWEBサイト

https://ubuntuapps.net/blog-entry-1118.html

Ubuntu 20.04 LTSのインストールと初期設定(必要最小限) | Ubuntuアプリのいいところ

インストールしてみた

2020-08-25

 Core-i3の第4世代。SDD250GB、RAM16GBがあったので。DVDからデスクトップ版をオプションは初期値のままでインストールしてみました。
 最初に、DVDメディアのチェックが9分ほど。インストールかお試しの選択でインストールを押して画面にしたがって次へと進みファイルのコピーが開始するまでに11分。完了しましたと出て再起動までに17分45秒。インストール時に設定したユーザーでログインまでに18分30秒という感じです。

電源投入時にスクリプトを実行

2020-09-29

設定は、Ubuntu14.04・・・などと同様に、 /etc/rc.local で記述することが可能です。ただし、以前には標準で存在していたこのファイルは、20.04では最初存在しません。

/etc/rc.localを作成し、

#!/bin/bash
 
スクリプトのパスhogehoge.sh
 
exit 0
# chmod 755 /etc/rc.local


Apache2

PerlのスクリプトをCGIとしてユーザーディレクトリで実行

※ テストスクリプト作成のパスなどは、適宜お使いの環境に合わせて読みかえてください。

  • モジュールを有効にする
    root@deto081:~# a2enmod cgid
    Enabling module cgid.
    To activate the new configuration, you need to run:
      systemctl restart apache2
  • 設定反映の為、apache2を再起動
    root@deto081:~# systemctl restart apache2
    root@deto081:~#
  • 簡単なテストプログラムの実行確認
    /home/ishimaru/public_html/perl_test.cgi
    を作成し、ブラウザからアクセス、
    http://192.168.1.221/~ishimaru/perl_test.cgi
    ※ URLの入力は利用環境に合わせてください
    とすると、
    #!/usr/bin/perl
    print "Content-typ: text/html\n\n";
    print "Hello Perl\n";
    とスクリプトプログラムがそのまま表示された。プログラムとして拡張子CGIが認識されていない。
    「AddHandler cgi-script .cgi」などの設定追加が必要。
  • /etc/apache2/mods-enabled/userdir.conf を変更
    • 変更前
      <IfModule mod_userdir.c>
              UserDir public_html
              UserDir disabled root
       
              <Directory /home/*/public_html> 
                      AllowOverride FileInfo AuthConfig Limit Indexes
                      Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                      Require method GET POST OPTIONS
              </Directory>     
      </IfModule>     

↓↓↓↓↓↓↓↓↓↓

  • 変更後
    <IfModule mod_userdir.c>
            UserDir public_html
            UserDir disabled root
     
            <Directory /home/*/public_html>
                    AllowOverride FileInfo AuthConfig Limit Indexes
                    #Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
                    Require method GET POST OPTIONS
                    AddHandler cgi-script .cgi .pl
            </Directory>
    </IfModule>
  • 設定を有効にする為に、apache2を再起動
    # systemctl restart apache2

再度、URLで実行を確認したところ、
「Hello Perl」と表示。実行が確認出来た。

さらに、Perlのスクリプトをでは、

#!/usr/local/bin/perl

のパスを前提としているプログラムもあるが、Ubuntu20.04では存在しないので、シンボリックリンクを作成した。

# ln -s /usr/bin/perl /usr/local/bin/perl

Perlのバージョンと過去のPerlスクリプトの実行について
言語の仕様が変更になっているのかjcode.plなどがエラーとなる。
Ubuntu20.04.2 ではPerlのバージョンは次の様になっている。

# perl -v
 
This is perl 5, version 30, subversion 0 (v5.30.0) built for x86_64-linux-gnu-thread-multi
(with 50 registered patches, see perl -V for more detail)
 
Copyright 1987-2019, Larry Wall
 
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
 
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

KENTWEBの数年前のCGIスクリプトは、
error.log では次の様に表示され、

Can't use 'defined(%hash)' (Maybe you should just omit the defined()?) at ./lib/jcode.pl line 684.
Compilation failed in require at /home/ishimaru/public_html/denpyou3/bbs/joyful.cgi line 12.

文法チェックでも同様に表示される

# perl -c jcode.pl 
Can't use 'defined(%hash)' (Maybe you should just omit the defined()?) at jcode.pl line 684.

この対策については、以下が参考となった。
http://yasuda.homeip.net/insomnia/2017/09/perl-524-cant-use-defined-hash.html


psqlコマンドを利用したphpのサンプルプログラム

  • サンプルスクリプト
    /home/ユーザー名/public_html/psql_test.php
    <?php
    $cmd="psql -U postgres -l";
    exec($cmd, $r);
    print "<pre>";
    print implode("\n", $r);
    print "</pre>";
    
    ※ pg_hba.confの記述によって「-U postgres」が出来るように調整しています。
  • 実行結果の例
                                 List of databases
       Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges
    -----------+----------+----------+---------+-------+-----------------------
     ishimaru  | postgres | EUC_JP   | C       | C     |
     template0 | postgres | EUC_JP   | C       | C     | =c/postgres          +
               |          |          |         |       | postgres=CTc/postgres
     template1 | postgres | EUC_JP   | C       | C     | =c/postgres          +
               |          |          |         |       | postgres=CTc/postgres
    (3 rows)
    ※ 過去のデータを利用する為に文字コードをEUC_JPが初期設定になるように設定しています。


PerlのImageMagickライブラリを利用する時

# apt install perlmagick 


PythonをCGIに使いたい

Perlと同様にWEBアプリの言語としてPython3を使いたい時に行う設定。

上記のPerlをCGIとして利用する設定で、拡張子がcgiであれば、Pythonをその言語として利用することが出来ます。

  • 確認方法
    簡単なスクリプトで実行環境が準備出来ているか確認します。

たとえば、public_html/python_test.cgi を以下のような内容で作成します。

#!/usr/bin/python3
 
print ("Content-type: text/html\n")
print ("Hello, World.")
chmod 705 python_test.cgi

ブラウザで「python_test.cgi」にアクセスします。

Hello, World.

と表示されれば、OKです。これで最近人気のPythonで開発が可能となります。

スクリプトの先頭行の「#!/usr/bin/python3」がpython3のパスになります。Ubuntu20.04でもまだ、pythonとすると、Pythonのバージョンは2.7.18となります。


PerlのCGIがエラーになる

[Tue Mar 02 16:22:23.863018 2021] [cgid:error] [pid 595493] [client 192.168.1.102:45504] End of script output before headers: read_tan_all.cgi, referer: http://127.0.0.1:18081/~ishimaru/denpyou3/denpyou00.php
Can't locate CGI.pm in @INC (you may need to install the CGI module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /home/ishimaru/public_html/denpyou3/read_kbn_all.cgi line 21.
BEGIN failed--compilation aborted at /home/ishimaru/public_html/denpyou3/read_kbn_all.cgi line 21.

など、モジュールが利用できない旨のエラーが出る。

ネットを参考に次の様にして追加でモジュールをインストールしました。

# apt install libcgi-session-perl

多くのエラーが解消しました。