ご注意下さい
この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。
さて、本日はAsteriskNow(CentOS+FreePBX)のAsteriskをAsterisk11からAsterisk13にアップグレードしてみます。
まずはバックアップを取得しましょう。
私の環境はHyper-V上にAsteriskNowをインストールしているのでチェックポイントを作成するだけです。
この記事のもくじ
Asteriskのバージョンアップ
さて、バックアップが完了したところで、FreePBXの管理画面を開き「アドミン」→「12 to 13 Upgrade Tool」を選択します。
続いて「Check the requirement!」をクリックして進みます。
有料版への移行を進められますが(Activate)、ここはSkipでOKです。
すると、Asterisk REST Interface Users、iSymphonyV3、Digium Addons、FreePBX ARI Frameworkが古いと言われてしまいました。
ところが依存関係のチェックでまずはAsteriskを12以上に上げなさい、と怒られてしまいました。
そこでsshでAsteriskBoxへログインし、asterisk-version-switchコマンドを入力します。Asterisk 13にアップグレードしたいので、「3」を入力します。
Each time you run this script we create a new log file at
/var/log/pbx/asterisk-switch-version which will include the date and time
and what version of Asterisk you had and what version you switched to
Pick the Asterisk Version you would like to change to.
Press 1 and the Enter key for Asterisk 1.8
Press 2 and the Enter key for Asterisk 11
Press 3 and the Enter key for Asterisk 13 EXPERIMENTAL
Press 9 and the Enter key to exit and not change your Asterisk Version
3 ←Asterisk 13にアップグレードしたいので、「3」を入力します
3を押すとAsterisk13へのアップグレードが始まります。
しばらく待っていると、「asterisk13 has now been verified to be installed」となり完了します。
FreePBXのアップグレード
Aseriskのバージョンアップが完了したので再度「アドミン」→「モジュール管理」からアップグレードを実施します。
前提となるモジュールのアップグレードが完了しましたので、いよいよ12 to 13 Upgrade Toolを再実行します。
今度は依存関係が解消されていますので先に進めます。「Proceed the upgrade process」を押下して先に進みましょう。
ディストリビューションはデフォルトの「FreePBX Distro」OKです。
Installing 13 Framework...ERROR: Try running this manually on the CLI to finish: 'amportal && fwconsole ma upgradeall' となり失敗してしまいました。
トラブル対応
そこでまたsshでログインし、コマンドを叩きます。こちらは30分程度時間がかかりました。
Please wait...
new amportal script detected, copying it to /usr/local/sbin and attempting to backup up old
Creating symlink for fwconsole
Removing broken fwconsole link
!!!!amportal is depreciated. Please use fwconsole!!!!
forwarding all commands to 'fwconsole'
No repos specified, using: [standard,commercial,extended] from last GUI settings
…
一応fwconsoleも使ったのですが、どちらもよかったようです。
No repos specified, using: [standard,commercial,extended] from last GUI settings
Upgrading: sms
Upgrading sms..
Starting sms download..
Processing sms
Verifying local module download...Verified
Extracting...Done
Module sms successfully downloaded
Creating SMS Message Table
Creating SMS Routing Table
Creating SMS Media Table
Generating CSS...Done
Module sms successfully installed
Updating Hooks...Done
All upgrades done!
Updating Hooks...Done
#
ここまで完了したところで念のためAsteriskBoxをリブートして、管理コンソールにアクセスしてみたところFreePBX13にアップグレードができました。
ただし、致命的なエラーが2件出ています。こちらも修正が必要そうです。設定の反映の為「Apply Config」をすると以下のエラーが表示されてしまいます。
以下の通りのエラーとなっています。
Unable to continue. Invalid argument supplied for foreach() in /var/www/html/admin/modules/sng_mcu/functions.inc/dialplan.php on line 57
#0 /var/www/html/admin/modules/sng_mcu/functions.inc/dialplan.php(57): WhoopsRun->handleError(2, 'Invalid argumen...', '/var/www/html/a...', 57, Array)
#1 /var/www/html/admin/libraries/BMO/DialplanHooks.class.php(95): sng_mcu_get_config('asterisk')
#2 /var/lib/asterisk/bin/retrieve_conf(864): FreePBXDialplanHooks->processHooks('asterisk', Array)
#3 {main}
こちらはどうやら「Sangoma MCU」を止めれば解消するようです。「アドミン」→「モジュール管理」から「Sangoma MCU」を選択し「無効」にしてしまいましょう。
しかし、また違うエラーがでてきてしまいます。
Unable to continue. SQLSTATE[42S02]: Base table or view not found: 1146 Table 'asterisk.freepbx_users' doesn't exist in /var/www/html/admin/modules/bria/Bria.class.php on line 209
#0 /var/www/html/admin/modules/bria/Bria.class.php(209): PDOStatement->execute()
#1 /var/www/html/admin/modules/bria/functions.inc/geters_seters.php(31): FreePBXmodulesBria->getAllUsers()
#2 /var/www/html/admin/modules/sysadmin/functions.inc/general.php(187): bria_get_users_enabled()
#3 /var/www/html/admin/modules/sysadmin/functions.inc/general.php(161): sysadmin_extensions_limit('remaining')
#4 /var/www/html/admin/libraries/BMO/DialplanHooks.class.php(95): sysadmin_get_config('asterisk')
#5 /var/lib/asterisk/bin/retrieve_conf(864): FreePBXDialplanHooks->processHooks('asterisk', Array)
#6 {main}
freebpx_usersテーブルが無いよ、と怒られているようなので調べてみます。
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 520
Server version: 5.1.73 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| asterisk |
| asteriskcdrdb |
| mysql |
| test |
+--------------------+
5 rows in set (0.08 sec)
mysql> use asterisk;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+---------------------------------------------+
| Tables_in_asterisk |
+---------------------------------------------+
| admin |
| ampusers |
| announcement |
| arimanager |
| bria_settings |
| callback |
| callrecording |
| callrecording_module |
| certman_cas |
| certman_certs |
| certman_csrs |
| certman_mapping |
| cidlookup |
| cidlookup_incoming |
| contactmanager_entry_emails |
| contactmanager_entry_images |
| contactmanager_entry_numbers |
| contactmanager_entry_speeddials |
| contactmanager_entry_userman_images |
| contactmanager_entry_websites |
| contactmanager_entry_xmpps |
| contactmanager_group_entries |
| contactmanager_groups |
| cronmanager |
| custom_extensions |
| cxpanel_conference_rooms |
| cxpanel_email |
| cxpanel_managed_items |
| cxpanel_phone_number |
| cxpanel_queues |
| cxpanel_recording_agent |
| cxpanel_server |
| cxpanel_users |
| cxpanel_voicemail_agent |
| dahdi |
| dahdi_advanced |
| dahdi_advanced_modules |
| dahdi_analog |
| dahdi_configured_locations |
| dahdi_modules |
| dahdi_spans |
| dahdichandids |
| daynight |
| devices |
| digium_phones_alerts |
| digium_phones_customapp_settings |
| digium_phones_customapps |
| digium_phones_device_alerts |
| digium_phones_device_customapps |
| digium_phones_device_externallines |
| digium_phones_device_logos |
| digium_phones_device_mcpages |
| digium_phones_device_networks |
| digium_phones_device_parkapps |
| digium_phones_device_phonebooks |
| digium_phones_device_ringtones |
| digium_phones_device_settings |
| digium_phones_device_statuses |
| digium_phones_devices |
| digium_phones_extension_settings |
| digium_phones_externalline_settings |
| digium_phones_externallines |
| digium_phones_firmware |
| digium_phones_firmware_packages |
| digium_phones_general |
| digium_phones_lines |
| digium_phones_logos |
| digium_phones_mcpage_settings |
| digium_phones_mcpages |
| digium_phones_network_settings |
| digium_phones_networks |
| digium_phones_phonebook_entries |
| digium_phones_phonebook_entry_settings |
| digium_phones_phonebooks |
| digium_phones_pnac_settings |
| digium_phones_pnacs |
| digium_phones_queues |
| digium_phones_ringtones |
| digium_phones_status_entries |
| digium_phones_status_settings |
| digium_phones_statuses |
| digium_phones_voicemail_translations |
| digiumaddoninstaller_addons |
| digiumaddoninstaller_addons_downloads |
| digiumaddoninstaller_downloads |
| digiumaddoninstaller_downloads_ast_versions |
| digiumaddoninstaller_downloads_bits |
| digiumaddoninstaller_registers |
| digiumaddoninstaller_system |
| directory_details |
| directory_entries |
| disa |
| extensions |
| fax_details |
| fax_incoming |
| fax_users |
| featurecodes |
| findmefollow |
| freepbx_log |
| freepbx_settings |
| globals |
| hotelwakeup |
| hotelwakeup_calls |
| iax |
| iaxsettings |
| incoming |
| indications_zonelist |
| ivr_details |
| ivr_entries |
| kvstore |
| language_incoming |
| languages |
| logfile_logfiles |
| logfile_settings |
| manager |
| meetme |
| miscapps |
| miscdests |
| module_xml |
| modules |
| music |
| notifications |
| outbound_route_patterns |
| outbound_route_sequence |
| outbound_route_trunks |
| outbound_routes |
| outroutemsg |
| paging_autoanswer |
| paging_config |
| paging_groups |
| parkplus |
| pinset_usage |
| pinsets |
| pjsip |
| presencestate_list |
| presencestate_prefs |
| queueprio |
| queues_config |
| queues_details |
| recordings |
| ringgroups |
| setcid |
| sip |
| sipsettings |
| sms_media |
| sms_messages |
| sms_routing |
| sng_mcu_details |
| sng_mcu_entries |
| soundlang_customlangs |
| soundlang_packages |
| soundlang_prompts |
| soundlang_settings |
| superfecta_mf |
| superfecta_mf_child |
| superfecta_to_incoming |
| superfectacache |
| superfectaconfig |
| sysadmin_options |
| sysadmin_update_log |
| timeconditions |
| timegroups_details |
| timegroups_groups |
| trunk_dialpatterns |
| trunks |
| tts |
| ttsengines |
| ucp_sessions |
| userman_groups |
| userman_groups_settings |
| userman_users |
| userman_users_settings |
| users |
| vmblast |
| vmblast_groups |
| voicemail_admin |
| webrtc_clients |
+---------------------------------------------+
177 rows in set (0.01 sec)
mysql>
確かにありません。ただ、似たようなテーブル「userman_users」「userman_users_settings」があります。そこで、/var/www/html/admin/modules/bria/Bria.class.phpを編集してしまいましょう。
function getAllUsers() { $sql = "SELECT u.id, u.username, u.default_extension, u.fname, u.lname //FROM freepbx_users u //JOIN freepbx_users_settings s ON s.uid = u.id FROM userman_users u JOIN userman_users_settings s ON s.uid = u.id WHERE s.module = 'bria' AND s.key = 'enabled' AND s.val = 1";
これで完了です。ダッシュボードを見てみるとエラーがまだ2件ありますが、セキュリティエラーは上記の通りファイルを修正したために発生したもので、FAXのは消してしまいましょう(エラーが起きていても問題ありません)。
非通知発信設定
非通知発信設定が消えてしまいましたので以前記事にしたように、/etc/asterisk/extensions_additional.confを書き換えましょう。
AsteriskNowから非通知発信をする設定
記事は以上。