1-8.サーバーの設定

Last-modified: Mon, 11 May 2020 18:41:46 JST (1437d)
Top > 1-8.サーバーの設定

いろいろなサーバーの設定

http://www.knts.net/Xlc/modules/pico/category0016.html
ここらへんを参考に。
EdenにOMVインストールする前に、
apache, rep2, torrent, dice, ぐらいやっとけば良い。

コンピュータ名の変更

/etc/hosts
/etc/hostname
を変更

apache2

ソフトウェア管理から入れれば完了。

webminインストール

webminホームページから、debパッケージダウンロード。
https://localhost:10000/と入力します。
httpsでの接続確認
セキュリティ例外の追加
ログイン画面:管理権限のあるユーザーとそのパスワードを入力
Webmin画面に入ったらまず日本語化をします。
左メニュー:check Language and Theme をクリック
Languageは Japanese (JA_JP.UTF-8)を選択
webmin変更後の初期画面
Webmin設定ボタンをリクック
もう一度言語選択 - 言語アイコンをクリック
Webminが使用する言語を選択:japanese(JA_JP.UTF-8)
Webminのインストールと初期設定
外部からのアクセスの禁止:アクセスはローカルPCのみ
Webminのアクセス制限をします。
Webminボタン-Webminの設定-IPアドレスの制御をクリック
チェックボックス リストされたアドレスのみ許可にチェック
一覧にローカルネットワークを含める

PHPとmysql

ソフトウェアの管理からPHP5インストール
ソフトウェアの管理からmysql-serverインストール
ソフトウェアの管理から、php5-mysqlインストール

apache modules

Webmin:サーバ Apache Webサーバをクリック
グローバル設定をクリック
Configure Apache Modulesをクリック
userdir include rewriteをチェック
Enable Selectd Modulessをクリック
ソフトウェアの管理からPHP5-curlをインストール
ソフトウェアの管理からPHP5-gdをインストール
ソフトウェアの管理からphp5-imagickをインストール
ソフトウェアの管理からphp5-mcryptをインストール
Webminサーバより - Apache Webサーバ - Apacheを停止 - Apacheを起動を行い
ブラウザより http://localhost/test.php で組み込まれているか確認します。

http://www.server-world.info/query?os=Ubuntu_14.04&p=httpd&f=2

自分ひとりだけで使うので気にするのは

<Directory "/var/www/html/">
   Options +ExecCGI
   AddHandler cgi-script .cgi .pl
</Directory>

ぐらいでいい。
ユーザディレクトリ使った方が、パーミッション設定とかはやりやすいような気もするが。
不具合がでるまでこれで。

rep2

sudo apt-get -y install apache2 php5 php-pear php-compat php-http-request php-pager php-file php5-curl curl unzip
sudo pear install Net_UserAgent_Mobile
curl -L -o /tmp/rep2.zip http://akid.s17.xrea.com/cgi/dl/dl.php?dl=p2
sudo unzip -x /tmp/rep2.zip -d /var/www/html
sudo cp -r /tmp/rep2.old/data /var/www/html/rep2/data
sudo chown -R www-data:www-data /var/www/rep2/html
firefox http://localhost/rep2/

Opcache ← eAccelerator

非力だったのでWindowsの時にはeAccelerator入れていたけど、どーすっかな…。
まー入れるか。
https://docs.moodle.org/24/en/Installing_eAccelerator_In_Ubuntu_Server
eAcceleratorは入れなくていい。今のPHPは既にOPCacheが入っているので、これをenableすればいいだけ。
/etc/php5/apahce2/php.iniを見てここら辺の値を変えたりコメントアウトしたり。

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

phpのcacheには2種類あって、オペコードキャッシュ(コンパイル後のコードをメモリに保存して再利用)と
ユーザーキャッシュ(オブジェクトや変数をメモリに保存して、別のリクエストからそれを再利用)がある。
php5.5+からは、
opecode cache : Zend OPcache
data cache : APCu

なので、owncloudとかのこと考えるなら、data cacheも有効にする。
http://qiita.com/nntsugu@github/items/63099b829befb57859d7
http://oki2a24.com/2014/09/20/update-php-5-5-and-change-apc-to-apcu-opcache/
http://www.atmarkit.co.jp/ait/articles/1604/12/news030.html
https://blog.apar.jp/linux/2936/#Memcached
あたりを参考に、ソフトウェアの管理からphp5-acpuをインストールする。
/etc/php5/apache2/php.iniに以下を加える。

[apcu]
apc.enabled=1
apc.shm_size=64M
apc.ttl=3600
apc.gc_ttl=3600

2chproxy

2chproxy.pl
git clone https://github.com/yama-natuki/2chproxy.pl.git

変更

DEDICATED_BROWSER => “rep2”,                    #使用している専ブラの名前
DAT_DIRECTORY => “/var/www/html/rep2/data/”,    #datファイルが置いてあるディレクトリ

あとは起動時にdaemonで動くように設定。「自動起動するアプリの設定」で充分。
rep2のuser confでプロキシ使うように設定。

samba

http://t-akiyama.at.webry.info/201404/article_9.html
http://t-akiyama.at.webry.info/201405/article_5.html

bittorrent client

デフォルトで入っているtransmissonの問題点は、ラベルがつけられないこと。
qbittorrentを入れてみる。qbittorrent-noxとatコマンドで(cronでも)なんとかなる。
ktorrentだとかなり細かい時間指定ができる。しかしでかい。これのためにKDE?それに起動オプション不明。wikiは死んでるし。
結局utorrentを入れるのが正解か。ワンクリック全ストップ/全再開ができないが。→できる。FirefoxアドオンのTorrent Status Toolを入れればいい。
http://askubuntu.com/questions/530955/how-to-install-utorrent-v3-3-on-14-04
http://helpdeskgeek.com/how-to/install-and-configure-utorrent-server-in-ubuntu-linux/
utorrent web uiを他マシンから使うのは、Windows10からだと大丈夫なのだが他のだと上手くいかない。何故か不明。 FirefoxのAdblockとかちゃんと「このページのみで無効」にしておこう。
bittorent(utorrent) remote使う?これってプライバシー上問題なのかどうなのか、なんも情報がない。
でもremote使えばスマホからも操作可能。
起動スクリプト作って~/binにおいて、「自動起動するアプリの設定」で起動。

DDNS updater

はじめDiCEのLinux版入れたけど、バイナリって…。
つーかDiCE使っているとなんかOfflineになるし。バイナリで直せないしゴミですね。
スクリプト拾ってきてやるほうがいいんでないの?

http://ieserver.net/ddns-update.txt
http://ai-line.com/linux/
https://www.cphub.net/?id=40&pid=304 Synology NAS用
http://sourceforge.net/projects/ddclient/
とかGnuDIP clientとか。たぶんGnuDIP clientがユーザー・パスワードの隠蔽とかちゃんとできるししいんだろうが、どうせ俺しか触らないサーバーだし。

変更しやすいのでhttp://ieserver.net/ddns-update.txtを使う。
外スクリプトとか使わないで、ルーターにBasic認証付きでステータスページにアクセスしてグローバルアドレス取得するように変更…だがルータのパスワード見せるのも…という感じなので、もともとのipcheck.shtmlのままに戻す。以下の変更は行い、ユーザ権限でcron回す。

  • 前回更新からx分以内では更新しない
  • 前回更新からy日過ぎた場合は強制的に更新する
  1. #!/usr/bin/perl
  2.  
  3. # 下記のスクリプトを
  4. # 1. グローバルIPアドレスを使用しているルータから取得 >> できるけど外した
  5. # 2. 前回更新からx分以内では更新しない
  6. # 3. 前回更新からy日過ぎた場合は強制的に更新する
  7. # ように自分で変更した。
  8.  
  9. # ieServer.Net 専用 DDNS IP アドレス更新スクリプト - ddns-update.pl
  10. # 作成者:山本恭弘@Agora Inc. 作成日:2004/03/24
  11. #
  12. # 回線割り当てグローバルIPアドレスを確認し、変化があれば新IPアドレスを
  13. # DDNSに登録。当コマンドを一定の間隔で実行し、IPアドレスの変化を監視&
  14. # 更新処理する。利用には perl wget cron が利用可能である必要あり。
  15. #
  16. # 回線に割り当てられた IPアドレス は http://ieserver.net/ipcheck.shtml
  17. # へのアクセスによって確認。
  18. #
  19. # cron にて当コマンドを等間隔で実行し、回線IPを確認。変化があればDDNSに
  20. # IPアドレスを登録。DDNSサーバーへの負荷軽減の点から実行間隔は10分以上と
  21. # すること。
  22. # crontab設定例(/usr/local/ddns/ddns.plにスクリプトを置き10分間隔で実行)
  23. # 5,15,25,35,45,55 * * * * /usr/local/ddns/ddns-update.pl
  24.  
  25. # 以下2ファイルの配置ディレクトリは好みに応じ設定
  26. # 1. 設定IPアドレスワークファイル
  27. $CURRENT_IP_FILE = "/home/hoge/log/current_ip";
  28.  
  29. # 2. 設定状況ログファイル
  30. $LOG_FILE        = "/home/hoge/log/ip_update.log";
  31.  
  32. # 3. 最終更新時間
  33. $LAST_TIME=0;
  34. @fileinfo = (stat $CURRENT_IP_FILE);
  35. $LAST_TIME = $fileinfo[9];
  36.  
  37. # 前回アップデートからこの時間(min)以内では更新しない
  38. $UPDATE_INTERVAL_MIN = 60;
  39.  
  40. # 前回アップデートからこの時間(day)過ぎたら強制的に更新する。
  41. $FORCE_UPDATE_DAY = 7;
  42.  
  43. # 回線IP確認ページURL
  44. $REMOTE_ADDR_CHK = "http://ieserver.net/ipcheck.shtml";
  45. # DDNS更新ページURL
  46. # wgetをSSL接続可能でビルドしているなら、https:// での接続を推奨
  47. $DDNS_UPDATE     = "http://ieserver.net/cgi-bin/dip.cgi";
  48.  
  49. # ieServer.Netにて取得したアカウント(サブドメイン)情報を記入
  50. $ACCOUNT         = " "; # アカウント(サブドメイン)名設定
  51. $DOMAIN          = " "; # ドメイン名設定
  52. $PASSWORD        = " "; # パスワード設定
  53.  
  54. if(!open(FILE,"$CURRENT_IP_FILE")) {
  55.     $CURRENT_IP = '0.0.0.0';
  56.     } else {
  57.     $CURRENT_IP = <FILE>;
  58.     close FILE;
  59. }
  60. #print $CURRENT_IP;
  61.  
  62. $NEW_IP = '0.0.0.0'; # meaning offline
  63. $NEW_IP = `wget -q -O - $REMOTE_ADDR_CHK`;
  64.  
  65. ### My case, get global ip from router instead of outside:
  66. #open(STANET, "wget -q --http-user=xxx --http-password=xxx http://192.168.11.1/stanet.asp -O - |")  || die "can't wget : $!";
  67. ##or# open(STANET, "curl -u xxx:xxx http://192.168.11.1/stanet.asp - |")  || die "can't wget : $!";
  68. #while (<STANET>) {
  69. #    if(/name=\"ip\" value=\"/){
  70. #        $NEW_IP=substr($', 0, length($')-3);
  71. #        print $NEW_IP;
  72. #    }
  73. #}
  74. #close(STANET) || die "can't close wget : $!";
  75.  
  76. #
  77. # offline | >1wks | unchange | <60min | action
  78. # 1       | x     | x        |        | No & log(offline) if ($CURRENT_IP != '0.0.0.0')
  79. # 0       | 1     | x        | x(0)   | Update & log
  80. # 0       | 0     | 1        | x      | No
  81. # 0       | 0     | 0        | 1      | No
  82. # 0       | 0     | 0        | 0      | Update & log
  83.  
  84. if ($NEW_IP eq "0.0.0.0" ) {
  85.     if ($CURRENT_IP != '0.0.0.0') {
  86.         open (FILE ,">$CURRENT_IP_FILE");
  87.         print FILE $NEW_IP;
  88.         close FILE;
  89.         $TIME = localtime;
  90.         open (FILE ,">>$LOG_FILE");   
  91.         print FILE "$TIME offline\n";
  92.         close FILE;
  93.     } else {
  94. ;
  95.     }
  96. } elsif (((time-$LAST_TIME) >= $FORCE_UPDATE_DAY * 24 * 60 * 60 )
  97. ||(($CURRENT_IP ne $NEW_IP) && ((time-$LAST_TIME) >= $UPDATE_INTERVAL_MIN * 60))) {
  98.     $STATUS = `wget -q -O - '$DDNS_UPDATE?username=$ACCOUNT&domain=$DOMAIN&password=$PASSWORD&updatehost=1'`;
  99.     if ($STATUS =~ m/$NEW_IP/) {   
  100.         open (FILE ,">$CURRENT_IP_FILE");
  101.         print FILE $NEW_IP;
  102.         close FILE;
  103.         $TIME = localtime;
  104.         open (FILE ,">>$LOG_FILE");
  105.         print FILE "$TIME $ACCOUNT.$DOMAIN Updated $CURRENT_IP to $NEW_IP\n";
  106.         close FILE;
  107.     } else {
  108.         $TIME = localtime;
  109.         open (FILE ,">>$LOG_FILE");
  110.         print FILE "$TIME $ACCOUNT.$DOMAIN Update aborted $CURRENT_IP to $NEW_IP\n";
  111.         close FILE;
  112.     }
  113. }
  114.  

cronは動いているはず。

%/etc/init.d/cron status

で確認。ユーザー権限で十分なので、

%crontab -e

でcrontabの編集。

%crontab -l

でcrontabの確認。cronのログは/var/log/syslogをgrep CRONでもすること。

Cloud Strage

ownCloud(android client有料) or Seafile(中国チーム作) or Pydio