FreeNAS 上安裝 AMP 環境
所謂 AMP 環境就是有 Apache, Mysql, PHP 等常用的架網站的環境,照下面的作法,就可以在 FreeNAS 上架構一個網站。
作業系統版本:
FreeNAS 0.7.2 Sabanda (revision 5543)
核心 FreeBSD 7.3-RELEASE-p3
已預裝 lighthttpd
Joomla 1.5.22
php5-zlib 5.2.12 版本不符,改用 php5-zlib-5.3.5
安裝 PHP 5 環境 (quote: from here)
setenv PACKAGESITE ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7.2/ (ftp 網址有可能更動,可匿名登入 ftp 站查看新的目錄網址)
# pkg_add -r php5
# pkg_add -r php5-extensions
# pkg_add -r php5-xmlrpc
# pkg_add -r php5-gettext
# pkg_add -r php5-mcrypt
# pkg_add -r php5-mysql
# pkg_add -r php5-mbstring
以上為本機的 shell 介面安裝,但這些 packages (套件)也可以經由 freenas 的新增「套件」介面,將在 freebsd 官網上的套件下載到普通電腦再上傳至 freenas 的新增「套件」介面。可以先以匿名帳號登入:
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7-stable/Latest/
抓取要安裝的套件再上傳至 freenas 的 web 介面安裝。
以上安裝完就可支援 phpMyAdmin 了。接下來不能進入 FreeNAS web 控制介面,就要利用下面指令修正:
# mv /usr/local/bin/php /usr/local/bin/php-cli
# cp /usr/local/bin/php-cgi /usr/local/bin/php
修正完成。
上傳 phpinfo.php 到 user 目錄,然後在本機上的 shell 介面
再修正時區的問題:
在 /usr/local/etc/php.ini 這個檔案中加入以下字。
[Date]
date.timezone = "Asia/Taipei"
這些字可以經由 sftp 下載 php.ini ,編輯後再上傳,利用 shell 功能在本機上下指令:
# cp /mnt/mounted-disk/users/username/php.ini /usr/local/etc/php.ini
我裝好的套件一覽:
gettext-0.18.1.1 GNU gettext package
libiconv-1.13.1_1 A character set conversion library
libltdl-2.2.10 System independent dlopen wrapper
libmcrypt-2.5.8 Multi-cipher cryptographic library (used in PHP)
libxml2-2.7.8_1 XML parser library for GNOME
mysql-client-5.0.90 Multithreaded SQL database (client)
mysql-server-5.0.90 Multithreaded SQL database (server)
oniguruma-4.7.1 A BSDL Regular Expressions library compatible with POSIX/GN
pcre-8.12 Perl Compatible Regular Expressions library
php5-5.3.5 PHP Scripting Language
php5-ctype-5.3.5 The ctype shared extension for php
php5-dom-5.3.5 The dom shared extension for php
php5-extensions-1.4 A "meta-port" to install PHP extensions
php5-filter-5.3.5 The filter shared extension for php
php5-gettext-5.3.5 The gettext shared extension for php
php5-hash-5.3.5 The hash shared extension for php
php5-iconv-5.3.5 The iconv shared extension for php
php5-json-5.3.5 The json shared extension for php
php5-mbstring-5.3.5 The mbstring shared extension for php
php5-mcrypt-5.3.5 The mcrypt shared extension for php
php5-mysql-5.3.5 The mysql shared extension for php
php5-pdo-5.3.5 The pdo shared extension for php
php5-pdo_sqlite-5.3.5 The pdo_sqlite shared extension for php
php5-posix-5.3.5 The posix shared extension for php
php5-session-5.3.5 The session shared extension for php
php5-simplexml-5.3.5 The simplexml shared extension for php
php5-sqlite-5.3.5 The sqlite shared extension for php
php5-tokenizer-5.3.5 The tokenizer shared extension for php
php5-xml-5.3.5 The xml shared extension for php
php5-xmlreader-5.3.5 The xmlreader shared extension for php
php5-xmlrpc-5.3.5 The xmlrpc shared extension for php
php5-xmlwriter-5.3.5 The xmlwriter shared extension for php
php5-zlib-5.3.5 The zlib shared extension for php
pkg-config-0.25_1 A utility to retrieve information about installed libraries
sqlite3-3.7.4 An SQL database engine in a C library
可加裝額外的套件,不裝亦可:
gettext-0.17_1 GNU gettext package
libiconv-1.11_1 A character set conversion library
libltdl-1.5.26 System independent dlopen wrapper
libmcrypt-2.5.8 Multi-cipher cryptographic library (used in PHP)
libxml2-2.7.3 XML parser library for GNOME
mysql-client-5.0.77_1 Multithreaded SQL database (client)
mysql-server-5.0.77_1 Multithreaded SQL database (server)
pcre-7.9 Perl Compatible Regular Expressions library
php5-5.2.9 PHP Scripting Language
php5-ctype-5.2.9 The ctype shared extension for php
php5-dom-5.2.9 The dom shared extension for php
php5-extensions-1.3 A "meta-port" to install PHP extensions
php5-filter-5.2.9 The filter shared extension for php
php5-gettext-5.2.9 The gettext shared extension for php
php5-hash-5.2.9 The hash shared extension for php
php5-iconv-5.2.9 The iconv shared extension for php
php5-json-5.2.9 The json shared extension for php
php5-mbstring-5.2.9 The mbstring shared extension for php
php5-mcrypt-5.2.9 The mcrypt shared extension for php
php5-mysql-5.2.9 The mysql shared extension for php
php5-pcre-5.2.9 The pcre shared extension for php
php5-pdo-5.2.9 The pdo shared extension for php
php5-pdo_sqlite-5.2.9 The pdo_sqlite shared extension for php
php5-posix-5.2.9 The posix shared extension for php
php5-session-5.2.9 The session shared extension for php
php5-simplexml-5.2.9 The simplexml shared extension for php
php5-spl-5.2.9 The spl shared extension for php
php5-sqlite-5.2.9 The sqlite shared extension for php
php5-tokenizer-5.2.9 The tokenizer shared extension for php
php5-xml-5.2.9 The xml shared extension for php
php5-xmlreader-5.2.9 The xmlreader shared extension for php
php5-xmlrpc-5.2.9 The xmlrpc shared extension for php
php5-xmlwriter-5.2.9 The xmlwriter shared extension for php
pkg-config-0.23_1 A utility to retrieve information about installed libraries
安裝 MySQL
* 在網頁管理介面上新增一 個 group 名稱為 mysql 。然後新增一 user 為 mysql 。
* 用 ssh 連到機器上,並作個檔案匣:
# mkdir /mnt/mounted-disk/db/mysql
FreeNAS 預設存放處為 /var/db/mysql ,但還沒有生成,建個連結:
# ln -s /mnt/mounted-disk/db/mysql /var/db/mysql
給所有權限給 user mysql 以及 group mysql 存取檔案匣 /mnt/mounted-disk/db/mysql 的權利:
# chown -R mysql:mysql /mnt/mounted-disk/db/mysql/
接下來:
# chmod 777 /tmp
# chmod 777 /var/tmp
# chmod 777 /ftmp
開始安裝 MySQL server:
# pkg_add -r mysql50-server
建立 db:
# /usr/local/bin/mysql_install_db(安装mysql)
接下來大概會看到這些字:
Installing MySQL system tables...
090819 11:18:58 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
(下略。)
接下來:
# chown -R mysql /var/db/mysql
# /usr/local/bin/mysqld_safe & (啟動 MYSQL)
# /usr/local/bin/mysqladmin -u root password 123456 (更改密碼123456為自己的密碼。)
為了要使 mysql 自動開機就啟用,要設定: mysql_enable="YES" 到 rc.conf 這個檔案, 使用網頁控制介面來作:選 System -> Advance -> rc.conf。
接下來按紅色「加」號,變數填 mysql_enable ,值 (value) 填 YES
接下來就「重新開機」。完成安裝 mysql 。
安裝 phpMyAdmin
# mkdir /mnt/mounted-disk/www
# cd /mnt/mounted-disk/www
接下來在 web 介面設定 /mnt/mounted-disk/www 為 www的預設檔案匣。
再去 phpmyadmin 網站下載最新的 phpMyAdmin 程式,利用 ftp 傳到 freenas 機器中,再用本機的 shell ,把 user 上傳的 phpmyadmin 檔案拷貝到 /mnt/mounted-disk/www 下)
解壓、並建立 symbolic links:
# tar -zxvf phpMyAdmin-3.2.1-english.tar.gz
(gz檔名不一定是這個名稱,要看你使用什麼語言,什麼版本。)
# ln -s /mnt/mounted-disk/www/phpMyAdmin-3.2.1-english/ /mnt/mounted-disk/www/phpMyAdmin
(檔案匣不一定是這個名稱,要看你使用什麼語言,什麼版本。)
安裝完成,接下來打 http://你的ip/phpMyAdmin/ 來作管理。
建立資料庫:「校對」最好選 「utf8_unicode_ci」。
限制 phpMyAdmin 的存取範圍:尚末解決。
修正 「Notice: Undefined index: QUERY_STRING in ../libraries/joomla/environment/uri.php on line 161 」錯誤
在 joomla 程式 /environment/uri.php around line 161 改下面的字:
/*
* Since we do not have REQUEST_URI to work with, we will assume we
are
* running on IIS and will therefore need to work some magic with
the SCRIPT_NAME and
* QUERY_STRING environment variables.
*/
if (strlen($_SERVER['QUERY_STRING']) &&
strpos($_SERVER['REQUEST_URI'], $_SERVER['QUERY_STRING']) === false) {
$theURI .= '?'.$_SERVER['QUERY_STRING'];
}
}
改成:
/*
* Since we do not have REQUEST_URI to work with, we will assume we
are
* running on IIS and will therefore need to work some magic with
the SCRIPT_NAME and
* QUERY_STRING environment variables.
*/
if (isset($_SERVER['QUERY_STRING']) &&
strpos($_SERVER['REQUEST_URI'], $_SERVER['QUERY_STRING']) === false) {
$theURI .= '?'.$_SERVER['QUERY_STRING'];
}
}
就改 strlen 為 isset 即可 (參考)。