これはある程度わかってる人向けです。ご了承ください。
ちょっとAndroidアプリでSubstreamerっていうAndroidでサーバー建てて音楽聞くことできるらしいんすよ。自分の好きな音楽を自分の好きなようにできるんでこれ入れました。他にも、WindowsとAndroidで同期再生できないかなって思ったり。Windowsの方では臨場感出すために複数のスピーカー使ってます。けど3.5mmジャックをさす箇所がパソコンにもうないのでとりあえずの処置でこのサーバーを導入してます。他にも外で聞くときとかにもデータの節約なるかも?(わかりませんが)
ほんとはubuntuの方にインストールしようとしていたのですがまえがきにあった通り同期再生をWindowsの方でできるか確かめるためです(ほんとはubuntuが起動不能になったから)。いやまあ気が向いたらLinux側でもやりたいと思います。ということで本題入ります。まず私が選んだのはAmpacheです。guiとかも高度な機能ありそうだったので。substreamerに対応したサーバーはここに色々あるので使いやすそうなの選んでください(全部のサーバーのセットアップ方法は解説しません)。
注意
PHPのバージョン関係のことがあるのでまだダウンロードしないでください
まずはApacheサーバーからです。このURLからダウンロードしてください。流石にビルドするのはめんどいので事前にコンパイルされたやつ使いましょう。私はApache Loungeからダウンロードしました。そのzipを解凍したらApache24というフォルダがあると思うので適当な場所に配置してApache24のなかにあるbinフォルダをpathを通してそれが終わったらcmdでこれ確認してください。
httpd -version
バージョンが出てきたらインストール成功です。
このあとphpをインストールします。このバージョンはさっき確認したphpのバージョンのものをインストールします。phpバージョンが8.3.xや7.2.xだった場合、8.3、7.2のAmpacheのサーバーのものを使えます。ここからphpをダウンロードしてください。non thread safeとかthread safeとかありますがこれはマルチスレッドにするかシングルスレッドにするかです。こちらは適宜ダウンロードしてください。まあ私はマルチスレッドを使っています。ダウンロード出来たら解凍してphp.ini-developmentとかphp.ini-productionとかあると思いますが私はphp.ini-production使ってます。これをリネームしてphp.iniに変えてください。次に、Apacheで必要なphpのdllをダウンロードしていきます。公式とかのやつが見つからなかったので非公式のやつにします。これです。注意ですがこれはphp8の場合です。バージョンが7だった場合適当に探してダウンロードしてこれをphpの解凍したルートに配置してください。その後にApache24のconfにあるhttpd.confを編集し、これを追加で記述します。
LoadModule php_module C:/PHP/php8apache2_4.dll
<FilesMatch "\.php$">
AddHandler php-script .php
AddType application/x-httpd-php .php
</FilesMatch>
PHPIniDir "C:/PHP"
このphp_moduleのあとのパスについてはphpのフォルダの先ほどのapache用のphpのdllのパスを指定してください。phpindirはphpフォルダのルートのパスを記入してください。
ここまでできたらこのphpのバージョンに対応したAmpacheのサーバーをダウンロードしてzipを解凍してください。
解凍されたものをApache24/htdocsに全部張り付けてください。
とりあえずは完了です。cmdで
httpd.exe
と実行して、localhostまたは127.0.0.1にブラウザでアクセスします。多分いろんなファイルが出てくると思うのでindex.phpを選択してください。言語を選択してください。そうすると、なんかOKとかWarningとか書かれているはずです。これらを適宜...だとわかりづらいので私がWarningだったりしたやつのを修正します。まずはPHP intl extensionです。これはphp.iniを編集します。extension=intlを検索して;(コメントアウト)を消してください。
次にPHP cURL extensionです。これもextension=curlと検索して;を消してください。PHP GD 拡張モジュールも同じでextenison=gdと検索して;を消してください。PHP max upload sizeはupload_max_filesizeの値を20MB以上にしてください。20MB以上だったら大丈夫です。post_max_sizeもさっき選んだ値と一緒にしてください。これは関係ないですが私は使い勝手を考えて値を変更しています。max_file_uploads 最大ファイルアップロード数です。いじりたい方はいじってください。これらを変更したらhttpd.exeを一旦切ってもう一度起動します。それで解消されるはずです。
またLinux版の手順も出したいと思うので期待して待っておいてください!今日はこれで終わります!ありがとうございました!
ってことでLinux版書いていこうと思います。
まずはApacheからインストールしていきましょう。ちなみに言っておきますがwindowsと比べたら手間が4,5倍省けます。実際ApacheとphpとMySQL入れるだけでWindowsでは2時間、下手したら4時間行きますから。(私はApacheもphpもMySQLも前からインストールしているのであんま変わんないです)それに比べてLinuxは5分でインストール終わりました笑
Windowsってインストーラー使ったりパス通したりとか色々あってめんどいんですよねー
phpのapache用のdllがなかったせいで何時間も苦戦していたときがありました。
まあということでやっていきます。
Apacheからでしたね。私はubuntuを使ってるのでそれ用のコマンド出しますね。
まずはaptをupdateしましょう。その次にapacheインストールです。
sudo apt update
sudo apt install apache2
Apacheインストール完了です。おめでとうございます笑
次にMySQLをインストールしましょう。
sudo apt install mysql-server
MySQLのインストール完了です。
次にphpをインストールしましょう。
sudo apt install php libapache2-mod-php php-mysql
これでphpインストール完了です
これらをまとめたプロンプトを記述します。個別ダウンロードめんどい方どうぞ。
sudo apt update && sudo apt install -y apache2 mysql-server php libapache2-mod-php php-mysql
なんかMySQLのルール変更によって何もしないままではエラーが出るらしいので修正します。まずmysqlのプロンプトに入ります。
sudo mysql
その次にこのコマンドの最後の'password'の部分をお好きなパスワードに変更して実行してください。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
終わったらexitすればいいです。その次にこのコマンドをターミナルで実行します。
sudo mysql_secure_installation
パスワードの設定をします。よくわからない方はyと入力しておけば大丈夫です
次にパスワードの強さを求められます。0と入力すれば易しく、1だとまあまあ、2だとかなり厳しいです。おまかせします。パスワードの入力求められると思うのでパスワードを入力してください。リタイプも忘れないでください。
後は色々聞かれますが忘れたので自分で調べてちゃっちゃとやってください笑(ごめんなさい悪い癖が出ちゃって)
なにかわからない事あったら教えてください。教えてもらうだけです(最善は尽くします)
引用 DigitalOcean
後はwebサイトにアクセスした際なんのファイルがルートで表示されるかの設定です。まあこれは任意で設定してください。一応設定方法載せておきます。
sudo nano /etc/apache2/mods-enabled/dir.conf
ここに書かれてるDirectoryIndex index.html とかのところを書き換えてindex.htmlのところに後ろっかわにあるindex.phpを引っ張り出せば良いです。これで完全にサーバーを動かす環境は整いました。
まずはAmpacheの保存先ディレクトリを作成します。
sudo mkdir /var/www/ampache
その次に、
cd /var/www/ampache
で作業ディレクトリを変えて、
php -v
で、phpのバージョンを確かめます。私の場合は8.1.2だったので8.1用のAmpacheをインストールします。AmpacheのgithubのReleasesはがこちらです。ダウンロードするコマンドがこちらです。
wget https://github.com/ampache/ampache/releases/download/6.6.0/ampache-6.6.0_all_squashed_php8.1.zip
これで/vat/www/ampacheにダウンロードできたらunzipします。sudoを忘れないでください。
sudo unzip ファイル名
その次に、
zipファイルを削除します。
sudo rm -rf ファイル名
これでおっけーです。
次にファイルのアクセス権を変更します。
sudo chown --recursive user:user /var/www/ampache/
所有権をuserにしました。適宜変更を加えてください。
これが終わったら次にffmpegをインストールします。対応していないコーデックを変換させるためです。
sudo chown www-data:www-data /data/Music
次にいろいろなモジュールをインストールしていきます。あのwindowsでwarningが出てたやつのことですね。
sudo apt install php-mysql php-curl php-json php-gd php8.1-xml
最後のphp8.1-xmlについてはバージョンのところを合ったものにしてください。
次にApacheのモジュールを有効にします。
sudo a2enmod rewrite expires
ここまで終わったら、次にapacheのwebサーバーの公開ディレクトリの変更です。
sudo nano /etc/apache2/apache2.conf
ここの
<Directory /var/www/ampache>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
デフォルトが/var/wwwなんですがそれに/ampacheを付け足してください。他にも
sudo nano /etc/apache2/sites-enabled/000-default.conf
ここにあるDocumentRootも
ServerAdmin webmaster@localhost
DocumentRoot /var/www/ampache/public
/var/www/htmlだと思うんですが/htmlを消して/ampache/publicを付け足してください。
または、VirtualHostを使う方法もあります。
このファイルを作成し編集します。
sudo nano /etc/apache2/sites-available/ampache.conf
入力内容はこちらです。
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/ampache
<Directory /var/www/ampache/>
AllowOverride All
Require all granted
</Directory>
RewriteEngine on
CustomLog /var/log/apache2/ampache.access.log common
ErrorLog /var/log/apache2/ampache.error.log
</VirtualHost>
多分これでいけます。
次にこのコマンドを実行します。
sudo apachectl configtest
行けませんでした。
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
AH0558というエラーが発生しました。この場合は、/etc/apache2/apache2.confのservicenameを記述しないといけないそうです。
sudo nano /etc/apache2/apache2.conf
ここの一番下の行にこれを追加してください。
ServiceName localhost
これで解決しました。
php.iniを編集して最大アップロードサイズや最大アップロードファイル数とか色々いじります。
sudo nano /etc/php/8.1/apache2/php.ini
8.1はそれぞれのバージョンに変更してください。そして、windowsのやつと同じように
upload_max_filesizeで検索
post_max_sizeで検索して数値を20MB以上にしてください。最大アップロードファイル数はmax_file_uploadsです。好きな値に変えてください。それとintlはextension_intlで検索してコメントアウト消して保存してください。その次に、
sudo systemctl reload apache2
で、終わりです!
ようやく終わりです!!!動作確認したいと思います。
intlができてない!!!!
もう一瞬絶望でした。けど私のただの抜けみたいなだけであっさり直って良かったです。
sudo apt install php-intl
いやあほんと良かったです。こっちはもう7時間くらいやってるので。これで次に進めます。SQLの登録とかもしていきます。
サーバーを公開するのはPlayitを使おうと思いましたがせっかくなのでDDNS(DDNS Now)使ってやりたいと思います。
ってことでやっていきたいと思います。
本当はhttps化しようとしてたんですがLet's encryptで失敗しまくってレート制限かかっちゃったんでやめることにしました。ってことで余談終わりです。
まずはDDNS Nowを使ってサブドメインを作成しましょう。作成したら、DDNS Now公式の拡張機能を使ってip自動更新をしてください。crondを使った方法もありますが手っ取り早く終わらすのと今回はこれがメインではないので拡張機能使います。それとルーターの静的NAT設定とipマスカレード設定適当にいじっといてください。多分知りませんがv6プラスの方でもできると思います。私もそうですが接続先の設定いじらなくても行けました。
後はファイアウォールについてです。httpの80番ポートと443番ポート開けます。
sudo ufw allow http
これと、
sudo ufw allow https
その次にファイアウォールの設定を有効化します。
sudo ufw enable
その次に状態確認します。
sudo ufw status
アクティブになっていて80と443という文字列が見当たったらうまくいってます。これでとりあえずDDNSは終わりです。少し時間経てば多分webサイトにアクセスできるようになると思います。
なんかデータベースって言葉かっこいいっすよね笑
まあ意外と使ってみると便利だと思うので勉強する価値ありです(俺は諦めたけど)
ってことでやっていきます。
mysql --user=root --password
これ実行してください。そしたらパスワード聞かれるので前設定したパスワードを入力してmysqlのプロンプトに入ってください。
その次にこれを実行してデータベースを作成します。
CREATE DATABASE ampache_account;
ampache-accountのところはデータベース名です。お好きなように変更してください。
注意
データベース名に-(ハイフン)を入れないでください。エラーの原因になります
その次に、データベースにアクセスするためのユーザーを作成します。
CREATE USER 'Gretard'@'localhost' IDENTIFIED BY 'password';
Gretardのところはご自由なユーザー名に、passwordのところはその通り新しいパスワードを設定してください。
次に、このデータベースのアクセス権限を付与します。
GRANT ALL PRIVILEGES ON ampache_account.* TO 'Gretard'@'localhost';
これのampache_accountのところに先ほど作成されたデータベース名を入力し、Gretardのところに先ほどのユーザー名を入力してください。
データベースが正しく作成されているのかデータベースを表示し確認します。
SHOW DATABASES;
こんなふうに出てきて作成したデータベース名が表示されていたらうまく行っています。
+--------------------+
| Database |
+--------------------+
| ampache_account |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.05 sec)
私の場合はampache_accountというデータベース名なので正しく作成されていますね。
これが確認できたらexitします。
その次に、さっき作成したユーザー名としてMySQLのデータベースにログインします。
mysql --user=Gretard --password ampache_account
Gretardにはユーザー名を、ampache_accountにはデータベース名を入力してください。
ユーザー名のパスワードの入力が求められるのでユーザー名を作成したときのパスワードを入力します。間違えてデータベースのパスワードを入力しないでください。ここでの勘違い多いです。
mysql>と表示されたらできてます。これでMySQLの設定は完了です。
localhoatか127.0.0.1でwebにアクセスしてください。OKとか書かれたやつはもう終わらせたので次行ってください。
Insert Ampache databaseとかあると思います。ここからは文字で説明するのめんどいので画像出しますね。
Desired Database Nameはさっき作成したデータベース名を入力してください。
MySQL Hostnameはそのままlocalhost
MySQL Portはまあデフォルト(3306)でいいでしょう。
MySQL MySQL Administrative Usernameはさっき作成したユーザー名
MySQL Administrative Passwordはさっき作成したユーザーのパスワード
Create Databaseはもうデータベースを作成したのでチェックを外しておいてください。
Create Tableはまだ作ってないのでチェックをつけておいてください。
Create Database Userはもう作ったのでチェックを外しておいてください
こんな感じです。これでInsert Databaseを選択してください。少しスペックが低いと読み込みに時間がかかるかもしれません。正常なのでちょっとだけ待っといてください。
それが終わったらこんな感じになると思います。
MySQL Usernameとかパスワードはもう前に入力したやつで自動的に入力されているので変える必要はないです。
installation typeについてですが私はデフォルトで行っています。標準機能はついてます。別に他のやつでもいいですが、まあ使いみちによって変わるので調べて自分で選んでください。
Allow Transcodingは対応していないコーデックを変換したり、opusをmp3に変換したりします。必要な方はffmpegを使ってやってみてください。あったほうがいいですが必須ではないです。
最後のPlayersについてですがUPnPとかDAAPとか使うなら有効化しといたほうが良いかもです。私はUPnP使うかもしれないので有効化しときました。
それが終わったらCreate Configを押します。管理者ユーザーの作成を求められるのでUsernameとPasswordを設定してCreate Accountを押してください。
これでようやく完了です!!!!終わりました!!!!
後はログインするだけです!
ユーザー名とパスワード入力してログインしてください!
その次に設定の歯車マークに行ってOptions、一番下らへんにSubsonicがあると思うのでオンにする。これで完了です!!
いやあ長かった長かった!!!半日以上やってますよ!!!(2日またいで没頭してやってました)
まあそりゃこの記事も書いてるからね笑
ということで!終わりたいと思います!ありがとうございました!!