1-8.サーバーの設定 の変更点

Top > 1-8.サーバーの設定

*いろいろなサーバーの設定 [#ab5b4908]
http://www.knts.net/Xlc/modules/pico/category0016.html
ここらへんを参考に。
EdenにOMVインストールする前に、
apache, rep2, torrent, dice, ぐらいやっとけば良い。


**コンピュータ名の変更 [#t5e5a0af]
/etc/hosts
/etc/hostname
を変更

**apache2 [#cf54c1e7]
ソフトウェア管理から入れれば完了。
**webminインストール [#vc38a3fb]
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 [#c098c1f0]
ソフトウェアの管理からPHP5インストール
ソフトウェアの管理からmysql-serverインストール
ソフトウェアの管理から、php5-mysqlインストール

**apache modules [#l383d28f]
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 [#k228ed49]
 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 [#o01b2c50]
非力だったので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 [#k18c4238]
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 [#ga9d0792]
http://t-akiyama.at.webry.info/201404/article_9.html
http://t-akiyama.at.webry.info/201405/article_5.html

**bittorrent client [#ae4d2433]
デフォルトで入っている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 [#o669d5c6]
はじめ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日過ぎた場合は強制的に更新する

#geshi(perl,number){{
#!/usr/bin/perl

# 下記のスクリプトを
# 1. グローバルIPアドレスを使用しているルータから取得 >> できるけど外した
# 2. 前回更新からx分以内では更新しない
# 3. 前回更新からy日過ぎた場合は強制的に更新する
# ように自分で変更した。 

# ieServer.Net 専用 DDNS IP アドレス更新スクリプト - ddns-update.pl
# 作成者:山本恭弘@Agora Inc. 作成日:2004/03/24
#
# 回線割り当てグローバルIPアドレスを確認し、変化があれば新IPアドレスを
# DDNSに登録。当コマンドを一定の間隔で実行し、IPアドレスの変化を監視&
# 更新処理する。利用には perl wget cron が利用可能である必要あり。
#
# 回線に割り当てられた IPアドレス は http://ieserver.net/ipcheck.shtml
# へのアクセスによって確認。
#
# cron にて当コマンドを等間隔で実行し、回線IPを確認。変化があればDDNSに
# IPアドレスを登録。DDNSサーバーへの負荷軽減の点から実行間隔は10分以上と
# すること。
# crontab設定例(/usr/local/ddns/ddns.plにスクリプトを置き10分間隔で実行)
# 5,15,25,35,45,55 * * * * /usr/local/ddns/ddns-update.pl

# 以下2ファイルの配置ディレクトリは好みに応じ設定
# 1. 設定IPアドレスワークファイル
$CURRENT_IP_FILE = "/home/hoge/log/current_ip";

# 2. 設定状況ログファイル
$LOG_FILE        = "/home/hoge/log/ip_update.log";

# 3. 最終更新時間
$LAST_TIME=0;
@fileinfo = (stat $CURRENT_IP_FILE);
$LAST_TIME = $fileinfo[9];

# 前回アップデートからこの時間(min)以内では更新しない 
$UPDATE_INTERVAL_MIN = 60;

# 前回アップデートからこの時間(day)過ぎたら強制的に更新する。
$FORCE_UPDATE_DAY = 7;

# 回線IP確認ページURL
$REMOTE_ADDR_CHK = "http://ieserver.net/ipcheck.shtml";
# DDNS更新ページURL
# wgetをSSL接続可能でビルドしているなら、https:// での接続を推奨
$DDNS_UPDATE     = "http://ieserver.net/cgi-bin/dip.cgi";

# ieServer.Netにて取得したアカウント(サブドメイン)情報を記入
$ACCOUNT         = "	";	# アカウント(サブドメイン)名設定
$DOMAIN          = "	";	# ドメイン名設定
$PASSWORD        = "	";	# パスワード設定

if(!open(FILE,"$CURRENT_IP_FILE")) {
    $CURRENT_IP = '0.0.0.0';
    } else {
    $CURRENT_IP = <FILE>;
    close FILE;
}
#print $CURRENT_IP;

$NEW_IP = '0.0.0.0';				# meaning offline
$NEW_IP = `wget -q -O - $REMOTE_ADDR_CHK`;

### My case, get global ip from router instead of outside:
#open(STANET, "wget -q --http-user=xxx --http-password=xxx http://192.168.11.1/stanet.asp - O - |")  || die "can't wget : $!";
#open(STANET, "wget -q --http-user=xxx --http-password=xxx http://192.168.11.1/stanet.asp -O - |")  || die "can't wget : $!";
##or# open(STANET, "curl -u xxx:xxx http://192.168.11.1/stanet.asp - |")  || die "can't wget : $!";
#while (<STANET>) {
#    if(/name=\"ip\" value=\"/){
#        $NEW_IP=substr($', 0, length($')-3);
#        print $NEW_IP;
#    }
#}
#close(STANET) || die "can't close wget : $!";

#
# offline | >1wks | unchange | <60min | action
# 1       | x     | x        |        | No & log(offline) if ($CURRENT_IP != '0.0.0.0') 
# 0       | 1     | x        | x(0)   | Update & log
# 0       | 0     | 1        | x      | No
# 0       | 0     | 0        | 1      | No 
# 0       | 0     | 0        | 0      | Update & log

if ($NEW_IP eq "0.0.0.0" ) {
    if ($CURRENT_IP != '0.0.0.0') {
        open (FILE ,">$CURRENT_IP_FILE");
        print FILE $NEW_IP;
        close FILE;
        $TIME = localtime;
        open (FILE ,">>$LOG_FILE");   
        print FILE "$TIME offline\n";
        close FILE;
    } else {
	;
    }
} elsif (((time-$LAST_TIME) >= $FORCE_UPDATE_DAY * 24 * 60 * 60 )
	 ||(($CURRENT_IP ne $NEW_IP) && ((time-$LAST_TIME) >= $UPDATE_INTERVAL_MIN * 60))) {
    $STATUS = `wget -q -O - '$DDNS_UPDATE?username=$ACCOUNT&domain=$DOMAIN&password=$PASSWORD&updatehost=1'`;
    if ($STATUS =~ m/$NEW_IP/) {    
        open (FILE ,">$CURRENT_IP_FILE");
        print FILE $NEW_IP;
        close FILE;
        $TIME = localtime;
        open (FILE ,">>$LOG_FILE");
        print FILE "$TIME $ACCOUNT.$DOMAIN Updated $CURRENT_IP to $NEW_IP\n";
        close FILE;
    } else {
        $TIME = localtime;
        open (FILE ,">>$LOG_FILE");
        print FILE "$TIME $ACCOUNT.$DOMAIN Update aborted $CURRENT_IP to $NEW_IP\n";
        close FILE;
    }
}

exit;
}}

cronは動いているはず。
 %/etc/init.d/cron status
で確認。ユーザー権限で十分なので、
 %crontab -e
でcrontabの編集。
 %crontab -l
でcrontabの確認。cronのログは/var/log/syslogをgrep CRONでもすること。



**Cloud Strage [#ge3b19c0]
ownCloud(android client有料) or Seafile(中国チーム作) or Pydio