1、到chinaunix下載mysql
下載地址: http://download.chinaunix.net/download/0008000/7159.shtml
2、上傳到CentOS服務(wù)器
本例放在 /home/jiangfeng3 中
3、創(chuàng)建mysql組及用戶
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -g mysql mysql
4、編輯文件權(quán)限
[root@localhost ~]# chmod 755 mysql-5.0.75.tar.gz
5、CentOS mysql編譯和安裝
解壓:
[root@localhost ~]# tar zxvf mysql-5.0.75.tar.gz
進入到mysql安裝包
[root@localhost ~]# cd mysql-5.0.75
配置參數(shù)
[root@localhost ~]# ./configure --prefix=/usr/local/mysql --with-extra-charsets=all --with-unix-socket-path=/usr/local/mysql/var/mysql.sock --with-named-curses-libs=/usr/lib/libncursesw.so.5
預(yù)編譯
[root@localhost ~]# make
安裝
[root@localhost ~]# make install
6、配制CentOS mysql安裝只是第一步,我們還要對CentOS mysql進行相應(yīng)的配制
一般的情況下CentOS mysql要找配制文件my.cnf,位置在/etc目錄下,所以我們得把文件my.cnf文件放到/etc/目錄下。
讓CentOS mysql服務(wù)器啟動時能找到它。我們安裝好CentOS mysql后,配制文件應(yīng)該在/usr/local/mysql/share/mysql目錄中,配制文件有幾個,比如my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的網(wǎng)站和不同配制的服務(wù)器環(huán)境,當(dāng)然需要有不同的配制文件了。
一般的情況下,my-medium.cnf這個配制文件就能滿足我們的大多需要;
進入/usr/local/mysql這個目錄,
看一下是不是已經(jīng)安裝好了呢??
[root@localhost ~]# cd /usr/local/mysql/
[root@localhost ~]# ls
bin include info lib libexec man mysql-test share sql-bench
我們把/usr/local/mysql/share/mysql這個目錄下的my-medium.cnf,復(fù)制為my.cnf到/etc目錄下。
[root@localhost ~]# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
做了這些工作以后,還得創(chuàng)造CentOS mysql授權(quán)表, 否則數(shù)據(jù)庫也是啟動不了。mysql_install_db,這個命令的用途就是做這個的。
CentOS mysql安裝的命令都安裝到了/usr/local/mysql/bin這個目錄中。
[root@localhost mysql]#/usr/local/mysql/bin/mysql_install_db
運行mysql_install_db命令過后,我們查看/usr/local/mysql就會發(fā)現(xiàn),有個var的目錄。
這個目錄,就是用來裝所有數(shù)據(jù)庫的位置,比如我們創(chuàng)建了linuxsir的數(shù)據(jù)庫后,
就在在//usr/local/mysql/mysql/var目錄中有l(wèi)inuxsir的目錄。這回應(yīng)該明白了吧。
7、啟動CentOS mysql服務(wù)器,可能這是最輕松的了,不過也不能高興的太早,因為有時會出現(xiàn)權(quán)限方面的錯誤。
CentOS mysql服務(wù)器啟動,應(yīng)該是/usr/local/mysql/share/mysql目錄中的 mysql.server
啟動方法是:
[root@localhost mysql]# /usr/local/mysql/share/mysql.server start
如果不能啟動請運行/usr/local/mysql/bin/mysqld_safe --user=root 就能夠啟動了!!
接著輸入/usr/local/mysql/share/mysql/mysql.server start即可成功啟動
好了,我們把密碼設(shè)置為123456 /usr/local/mysql/bin/mysqladmin -u root password 123456
如果沒有返回錯誤說明正確了。
接著輸入/usr/local/mysql/bin/mysql -u root -p就可以管理CentOS mysql安裝了。
①安裝VBox
\\192.168.12.xxxx\install\VBox\VirtualBox-4.0.6-71416-Win.exe
②通過VBox安裝Linux虛擬機
Linux系統(tǒng)映像保存于下面的路徑下
③通過VBox進入Linux操作系統(tǒng)
通過下面的命令查看當(dāng)前IP狀態(tài),并修改為靜態(tài)IP
vim /etc/network/interfaces
若修改,鍵入字母「i」即進入可編輯狀態(tài),修正后Esc退出編輯狀態(tài),鍵入「:wq」保存并退出
靜態(tài)IP例:
allow-hotplug eth1
#iface eth1 inet dhcp
iface eth1 inet static
address 192.168.12.xxxx
netmask 255.255.255.0
gateway 192.168.12.1
重啟網(wǎng)卡:
/etc/init.d/networking stop
/etc/init.d/networking start
④輸入ifconfig查看修正后的ip狀態(tài)
查看該虛擬機是否能夠ping通自己的機器
⑤配置Linux虛擬光驅(qū)路徑
通過命令:「vim /etc/init.d/donkey_service」新建文件donkey_service
編輯文件:
# mount window share folder to /mnt/debian4_iso
mount -t cifs //192.168.12.xxx/debian4_iso -o username="remote",password="abcd@1234" /mnt/debian4_iso
mount -t cifs //192.168.12.xxx/install -o username="remote",password="abcd@1234" /mnt/nas_share
# mount debian4 iso
mount -t iso9660 -o loop /mnt/debian4_iso/debian-4.0.0-i386-DVD-1.iso /mnt/debian4/dvd01
mount -t iso9660 -o loop /mnt/debian4_iso/debian-4.0.0-i386-DVD-2.iso /mnt/debian4/dvd02
mount -t iso9660 -o loop /mnt/debian4_iso/debian-4.0.0-i386-DVD-3.iso /mnt/debian4/dvd03
mount -t iso9660 -o loop /mnt/debian4_iso/debian-4.0.0-i386-DVD-4.iso /mnt/debian4/dvd04
執(zhí)行文件:sh donkey_service
注:新建虛擬機的網(wǎng)卡沒有訪問200的權(quán)限,可以把debian4拷貝到本機一文件夾下,共享該文件夾
⑥安裝ssh-server
安裝后就可以使用putty鏈接,操作。
aptitude install ssh-server
⑦安裝Linux必要軟件
aptitude install make -- 編譯用
⑧apache,php,mysql安裝前準備
Linux下用軟件安裝包保存位置:
\\192.168.12.xxx\software\install\linux\httpd-2.2.9.tar.gz
\\192.168.12.xxx\software\install\linux\mysql-5.1.53.tar.gz
\\192.168.12.xxx\software\install\linux\php-5.2.5.tar.gz
可通過FileZilla軟件,把上面的軟件包copy到Linux虛擬機上
\\192.168.12.xxx\software\progrem\FileZilla-3.0.9.
創(chuàng)建軟件包的保存位置和安裝路徑文件夾
例: mkdir /opt/soft -- 上面各個軟件包copy到此
mkdir /opt/build -- 安裝軟件時的安裝路徑
進入到該安裝包的保存路徑后,通過下面的命令進行解壓(解壓位置: ../bulid/)
tar zxvf httpd-2.2.9.tar.gz -C ../bulid/
②編譯
./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-mods-shared --enable-ssl
make
③安裝
make install
④查看是否安裝成功
/usr/local/apache2/bin/httpd -k start --啟動Apache
lsof -i:80 --查看80端口狀態(tài),如果80端口有值,安裝成功
注:編譯或安裝過程中可能會因缺少某些文件而導(dǎo)致error
則根據(jù)error提示的信息,先安裝缺少的文件再重新編譯安裝
error例;
configure: error: ...No recognized SSL/TLS toolkit detected
通過命令 「aptitude search 查找內(nèi)容」查找相應(yīng)的文件
通過命令 「aptitude install 安裝文件名」進行安裝
①解壓PHP
進入到該安裝包的保存路徑后,通過下面的命令進行解壓(解壓位置: ../bulid/)
tar zxvf php-5.2.5.tar.gz -C ../bulid/
②安裝前,安裝一下必要的軟件
apt-get install libmm-dev
aptitude install libxml2-dev
②編譯
./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-zlib --with-pdo-mysql=/usr/local/mysql --enable-mbstring=all
make
make test
③安裝
make install
④如果報錯libphp5.so找不到的話,執(zhí)行下面的命令
find -name "libphp5.so" --查找
找到后進到該目錄下,把此文件copy到/usr/local/apache2/modules/下
cp -p libphp5.so /usr/local/apache2/modules/
⑤查看是否安裝成功
如果安裝成功 執(zhí)行php -v 會顯示php的版本信息
⑥cp php.ini-dist /usr/local/php5/etc/php.ini
vi /usr/local/php5/etc/php.ini
將extension=php_mysql.dll前面的;去掉
mbstring.internal_encoding = UTF-8
mbstring.http_output = UTF-8
注:編譯或安裝過程中可能會因缺少某些文件而導(dǎo)致error
則根據(jù)error提示的信息,先安裝缺少的文件再重新編譯安裝
通過命令 「aptitude search 查找內(nèi)容」查找相應(yīng)的文件
①解壓MySql安裝包
進入到該安裝包的保存路徑后,通過下面的命令進行解壓(解壓位置: ../bulid/)
tar zxvf mysql-5.1.53.tar.gz -C ../bulid/
②編譯
進入到解壓后的文件夾下
安裝mysql前需要安裝一些linux系統(tǒng)軟件
aptitude install lib64ncurses5-dev OR libncurses5-dev
aptitude install g++
aptitude install automake
aptitude install autoconf2.13
autoreconf --force --install
aclocal; autoheader
libtoolize --automake --force
automake --force --add-missing; autoconf
編譯MySql,安裝到/usr/local/mysql-5.1.53
./configure '--prefix=/usr/local/mysql-5.1.53' '--with-mysqld-user=mysql' '--with-extra-charsets=all' '--with-named-curses-libs=/lib/libncurses.so.5' '--enable-assembler' '--with-charset=utf8'
make
③安裝
make install
④添加權(quán)限
groupadd mysql
useradd mysql -g mysql
./scripts/mysql_install_db --user=mysql
注:
mysql_install_db出現(xiàn)FATAL ERROR: Could not find mysqld錯誤時,
因為/etc/mysql/下出現(xiàn)了個my.cnf
解決方法:
mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
cp support-files/my-medium.cnf /etc/cnf
cd /usr/local/mysql-5.1.53/
chown -R root .
chown -R mysql var
chown -R mysql var/.
chown -R mysql var/mysql/.
chgrp -R mysql .
⑤運行并查看是否安裝成功
/usr/local/mysql-5.1.39/bin/mysqld_safe --user=mysql &
lsof -i:3306 --查看3306端口是否是mysql在運行。
./bin/mysql -root
exit --退出mysql
⑥修改mysql密碼
/usr/local/mysql-5.1.53/bin/mysqladmin -uroot password root
./bin/mysql -uroot -p --再次登錄
root --密碼
⑦添加別人能夠訪問的權(quán)限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
use mysql;
mysql> select User,host from user;
+------+-----------+
| User | host |
+------+-----------+
| root | % |
| root | 127.0.0.1 |
| | camp |
| root | camp |
| | localhost |
| root | localhost |
+------+-----------+
6 rows in set (0.00 sec)
注:編譯或安裝過程中可能會因缺少某些文件而導(dǎo)致error
則根據(jù)error提示的信息,先安裝缺少的文件再重新編譯安裝
error例;
checking for termcap functions library... configure: error: No curses/termcap library found
安裝install lib64ncurses5-dev后則此錯誤就可避免
通過命令 「aptitude search 查找內(nèi)容」查找相應(yīng)的文件
①制作證書
1) 首先確認OpenSSL已經(jīng)被正確安裝,并且openssl可執(zhí)行文件位于PATH環(huán)
境變量所包含的目錄中。
2) 創(chuàng)建一個RSA私鑰文件(這里的例子使用3DES加密并封裝為PEM格式):
$ openssl genrsa -des3 -out server.key 1024
請務(wù)必將你輸入的密語和server.key文件備份到一個安全的地方。你可以使用下面
的命令查看這個RSA私鑰的詳細信息:
$ openssl rsa -noout -text -in server.key
如果確有必要,你也可以為這個RSA私鑰創(chuàng)建一個已解密的PEM版本(不推薦):
$ openssl rsa -in server.key -out server.key.unsecure
3) 使用你剛才創(chuàng)建的RSA私鑰創(chuàng)建一個自簽名的X509證書(PEM格式):
$ openssl req -new -x509 -nodes -sha1 -days 365 -key server.key -out server.crt
這將對服務(wù)器的CSR進行簽名,并將生成一個server.crt文件。
可以使用下面的命令查看這個證書的詳細信息:
$ openssl x509 -noout -text -in server.crt
② 打開apache的ssl支持
打開/usr/local/apache2.2.18/conf/httpd.conf下面兩句的注釋
#Include conf/extra/httpd-ssl.conf
打開/usr/local/apache2.2.18/conf/extra/httpd-ssl.conf找到
SSLMutex "file:/usr/local/apache2.2.18/logs/ssl_mutex"改成
SSLMutex default
h1. MySQL5.1.53編譯,安裝配置
Debian4下安裝MySql5.1.53
h2. 編譯
<pre>
./configure '--prefix=/usr/local/mysql5.1.53' '--with-mysqld-user=mysql' '--with-extra-charsets=all' '--with-unix-socket-path=/usr/local/mysql5.1.53/var/mysql.sock' '--with-named-curses-libs=/lib/libncurses.so.5' '--enable-assembler'
</pre>
h2. 安裝
<pre>
make && make install
</pre>
h2. 初始化數(shù)據(jù)庫
剛剛編譯安裝完成的mysql中沒有任何數(shù)據(jù)庫,包括默認的mysql數(shù)據(jù)庫,這個需要初始化安裝。
命令如下
<pre>
/usr/local/mysql5.1.53/bin/mysql_install_db
</pre>
h2. 配置
h3. 創(chuàng)建配置文件
我們把/usr/local/mysql5.1.53/share/mysql這個目錄下的my-medium.cnf,復(fù)制為my.cnf到mysql安裝目錄
做如下修改
在[mysqld] 配置塊中加入
skip-name-resolve #取消DNS反向解析,提高遠程訪問速度
_詳細內(nèi)容,參考57上的my.cnf吧_
h3. 啟動&停止
* 啟動
<pre>
/usr/local/mysql5.1.53/bin/mysqld_safe --user=root &
</pre>
* 停止
<pre>
/usr/local/mysql5.1.53/share/mysql/mysql.server stop
</pre>
h3. 進入mysql命令行
<pre>
/usr/local/mysql5.1.53/bin/mysql -uroot
</pre>
h3. 開啟遠程訪問
# 配置cnf文件
找到你的my.cnf文件(如果用debian提供的mysql,在/etc/mysql/my.cnf)
查找 bind-address,等號后邊寫server的IP地址
# 在mysql命令行執(zhí)行下列命令
<pre>
GRANT ALL PRIVILEGES ON *.* TO 'depman'@'%' IDENTIFIED BY 'depman' WITH GRANT OPTION;
</pre>
說明 : 添加depman用戶,密碼為depman,可以在任何遠程機器訪問數(shù)據(jù)庫且擁有全部權(quán)限
h3. 添加InnoDB支持
# 進入mysql命令行
# mysql> show plugin;
查看是否有InnoDB的支持,沒有的話
# mysql> install plugin innodb soname "ha_innodb.so";
# 再次執(zhí)行mysql> show plugin;發(fā)現(xiàn)有InnoDB,安裝成功
h3. 數(shù)據(jù)移植
* 備份57上的kebin數(shù)據(jù)庫(sql文件)
<pre>
/usr/local/mysql5.1.53/bin/mysqldump --skip-lock-tables -h192.168.12.57 -uroot -proot kebin > kebin.sql
</pre>
* 導(dǎo)入剛才生成的sql文件到kebin數(shù)據(jù)庫
<pre>
/usr/local/mysql5.1.53/bin/mysql kebin < kebin.sql
</pre>
* 從ServerA到ServerB遷移數(shù)據(jù)
<pre>
/usr/local/mysql5.1.53/bin/mysqldump --skip-lock-tables -uroot -proot kebin | /usr/local/mysql5.1.53/bin/mysql -h192.168.12.58 -udepman -pdepman kebin
</pre>
h1. Nginx編譯,安裝配置
* Nginx是啥?
Apache知道吧,Nginx和他一樣也是webserver,不過他比Apache快,據(jù)說快很多很多,尤其是在高負荷的時候。
BTW,這玩意是某俄國大牛一個人寫的......
* 編譯
./configure --prefix=/usr/local/nginx
make && make install
* 配置虛擬主機
/usr/local/nginx/conf/nginx.conf 內(nèi)容如下
<pre>
user www;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# [Add by lemon] Include vhost config
include /usr/local/nginx/conf/vhost/www_site1_com.conf;
include /usr/local/nginx/conf/vhost/www_site2_com.conf;
}
</pre>
/usr/local/nginx/conf/vhost/www_site1_com.conf 內(nèi)容如下
<pre>
server {
listen 192.168.188.132:80;
client_max_body_size 100M;
server_name www.site1.com;
#charset gb2312;
index index.html index.htm index.php;
root /home/www/site1; #你的站點路徑
#打開目錄瀏覽,這樣當(dāng)沒有找到index文件,就也已瀏覽目錄中的文件
autoindex on;
if (-d $request_filename) {
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
error_page 404 /404.html;
location = /40x.html {
root /home/www/site1; #你的站點路徑
charset on;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /home/www/site1; #你的站點路徑
charset on;
}
#將客戶端的請求轉(zhuǎn)交給fastcgi
location ~ .*\.(php|php5|php4|shtml|xhtml|phtml)?$ {
fastcgi_pass 127.0.0.1:9000;
include /usr/local/nginx/conf/fastcgi_params;
}
#網(wǎng)站的圖片較多,更改較少,將它們在瀏覽器本地緩存15天
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 15d;
}
#網(wǎng)站會加載很多JS、CSS,將它們在瀏覽器本地緩存1天
location ~ .*\.(js|css)?$
{
expires 1d;
}
location /(WEB-INF)/ {
deny all;
}
#設(shè)定日志格式
log_format site1_access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
' "$http_user_agent" $http_x_forwarded_for';
#設(shè)定本虛擬主機的訪問日志
access_log /home/www/site1/logs/nginx/access.log site1_access; #日志的路徑,每個虛擬機一個,不能相同
#防止nginx做web服務(wù)的時候,多server_name的問題.點擊這里查看原文
server_name_in_redirect off;
}
</pre>
/usr/local/nginx/conf/vhost/www_site2_com.conf 與www_site1_com.conf 基本一樣,只需把site1替換成site2即可。
* Nginx+PHP
Nginx 只是一個http服務(wù)器,本身不能處理php。但它可以通過fastcgi調(diào)用php。
php內(nèi)置了一個fastcgi server, 需要通過php-fpm來啟動,這個在編譯php時需要指定參數(shù),以cgi模式編譯。
所以,Nginx只要配置把php請求交給fastcgi server的部分即可,剩下的事情交給 fastcig server去做。
<pre>
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include fastcgi_params;
}
</pre>
/usr/local/nginx/html/是Nginx默認的DocumentRoot
* 虛擬主機與IP訪問共存
按"配置虛擬主機"中介紹的方式配置虛擬主機以后,會發(fā)現(xiàn)如果用http://<ip>:<port>/xxx的方式無法訪問DocumentRoot(/usr/local/nginx/html)下的應(yīng)用。
解決方法:
在/usr/local/nginx/conf/vhost/下建立一個新的配置文件 localhost.conf(可以copy其他的vhost配置文件),要改的地方如下
vim /usr/local/nginx/conf/vhost/ localhost.conf
<pre>
……
server_name localhost;
……
root /usr/local/nginx/html;
……
</pre>
如果需要支持PHP
<pre>
location ~ .*\.(php|php5|php4|shtml|xhtml|phtml)?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
include /usr/local/nginx/conf/fastcgi_params;
}
……
</pre>
PHP開發(fā) 2010-02-23 10:54:14 閱讀607 評論0 字號:大中小 訂閱
在Windows系統(tǒng)上使用Apache2.2上模塊化安裝PHP5.3
PHP5.3增加了一些功能,如namespace,靜態(tài)遲綁定等。
本篇文章將幫您如何安裝PHP5.3,現(xiàn)在我們開始。
1
下載php5.3和apache2.2
php5.3一定要下載VC6的,VC9 的不能使用apache,只能用iis
2
將此壓縮包解壓到d:\php下,也可以解壓其它盤的目錄
安裝apache2.2
3 配置php5.3
在d:\php目錄下把php.ini-development文件改名為php.ini
這是PHP 5.3的一個改變,另外一個文件php.ini-production是用于產(chǎn)品運行的典型配置。
接著我們打開php.ini文件,定義擴展包的路徑。
查找“extension_dir”,修改為:
extension_dir = “d:\php\ext”
然后,我們打開一些必要的擴展包,即去掉一些擴展包的文件名的分號,以下筆者的配置:
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_xmlrpc.dll
4 配置Apache2.2
打開Apache的httpd.conf 文件,增加默認首頁:
DirectoryIndex index.php index.html
在126行左右,即LoadModule的最后加入:
LoadModule php5_module "d:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "d:/php"
5 測試
在apache的htdocs目錄中新建index.php
輸入內(nèi)容:
<?php
phpinfo();
?>
由于JSON可以在很多種程序語言中使用,所以我們可以用來做小型數(shù)據(jù)中轉(zhuǎn),如:PHP輸出JSON字符串供JavaScript使用等。在PHP中可以使用 json_decode() 由一串規(guī)范的字符串解析出 JSON對象,使用 json_encode() 由JSON 對象生成一串規(guī)范的字符串。
例:<?php
$json = '{"a":1, "b":2, "c":3, "d":4, "e":5 }';
var_dump(json_decode($json));
var_dump(json_decode($json,true));
輸出:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
輸出:{"a":1,"b":2,"c":3,"d":4,"e":5}
1. json_decode(),字符轉(zhuǎn)JSON,一般用在接收到Javascript 發(fā)送的數(shù)據(jù)時會用到。
<?php
$s='{"webname":"homehf","url":"www.homehf.com","contact":{"qq":"744348666","mail":"nieweihf@163.com","xx":"xxxxxxx"}}';
$web=json_decode($s);
echo '網(wǎng)站名稱:'.$web->webname.'<br />網(wǎng)址:'.$web->url.'<br />聯(lián)系方式:QQ-'.$web->contact->qq.' MAIL:'.$web->contact->mail;
?>
上面的例子中,我們首先定義了一個變量s,然后用json_decode()解析成JSON對象,之后可以按照JSON的方式去使用,從使用情況看,JSON和XML以及數(shù)組實現(xiàn)的功能類似,都可以存儲一些相互之間存在關(guān)系的數(shù)據(jù),但是個人覺得JSON更容易使用,且可以使用JSON和JavaScript實現(xiàn)數(shù)據(jù)共享。
2. json_encode(),JSON轉(zhuǎn)字符,這個一般在AJAX 應(yīng)用中,為了將JSON對象轉(zhuǎn)化成字符串并輸出給 Javascript 時會用到,而向數(shù)據(jù)庫中存儲時也會用到。
<?php
$s='{"webname":"homehf","url":"www.homehf.com","contact":{"qq":"744348666","mail":"nieweihf@163.com","xx":"xxxxxxx"}}';
$web=json_decode($s);
echo json_encode($web);
?>
二 .PHP JSON 轉(zhuǎn)數(shù)組
<?php
$s='{"webname":"homehf","url":"www.homehf.com","qq":"744348666"}';
$web=json_decode($s); //將字符轉(zhuǎn)成JSON
$arr=array();
foreach($web as $k=>$w) $arr[$k]=$w;
print_r($arr);
?>
上面的代碼中,已經(jīng)將一個JSON對象轉(zhuǎn)成了一個數(shù)組,可是如果是嵌套的JSON,上面的代碼顯然無能為力了,那么我們寫一個函數(shù)解決嵌套JSON,
<?php
$s='{"webname":"homehf","url":"www.homehf.com","contact":{"qq":"744348666","mail":"nieweihf@163.com","xx":"xxxxxxx"}}';
$web=json_decode($s);
$arr=json_to_array($web);
print_r($arr);
function json_to_array($web){
$arr=array();
foreach($web as $k=>$w){
if(is_object($w)) $arr[$k]=json_to_array($w); //判斷類型是不是object
else $arr[$k]=$w;
}
return $arr;
}
?>
最后發(fā)現(xiàn)時由于安裝英文版的系統(tǒng)不支持中文,出現(xiàn)中文文件名亂碼,所以移動不了;
下面操作時在centos上安裝中文支持:
1)先下載并安裝兩個語言包:
fonts-chinese-3.02-12.el5.noarch.rpm
fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm
#rpm -ivh fonts-chinese-3.02-12.el5.noarch.rpm
#rpm -ivh fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm
或者
#yum install fonts-chinese-3.02-12.el5.noarch.rpm
#yum install fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm
2)修改/etc/sysconfig/i18n
j將原來的注釋掉,這段東西拷進去
LANG="zh_CN.GB2312"
SUPPORTED="zh_CN.GB2312:zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
3)最后重啟就ok了。
cp Mysql-5.0.21.tar.gz /home
cd /home
tar zxf Mysql-5.0.21.tar.gz
cd Mysql-5.0.21
./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/Mysql/
說明:
#prefix=/usr/local/mysql Mysql安裝地目標目錄
#sysconfdir=/etc my.ini配置文件地路徑
#localstatedir=/var/lib/Mysql 數(shù)據(jù)庫存放地路徑
make
make install
groupadd Mysql
useradd mysql -g Mysql
/usr/local/mysql/bin/Mysql_install_db 初始化數(shù)據(jù)庫,如果是升級地話就不做此步
/usr/local/mysql/bin/mysqld_safe 如果啟動不了地話那就是權(quán)限地問題,修改/var/lib/mysql地權(quán)限 chown -R mysql:mysql /var/lib/Mysql
或者可以用root啟動mysql:/usr/local/mysql/bin/Mysqld_safe --user=root
如果不能啟動,那就是my.cnf這個文件地問題:
my.cnf這個文件很重要,它地路徑是/etc/my.cnf,如果以前裝過Mysql地話,可能需要更改配置,建議還是刪了重新建一個
方法:在解壓后地目錄里面有一個目錄support-files,這里就有我們需要地東東,里面有很多,一般用my-medium.cnf這個文件就可以了
cp /home/Mysql-5.0.21/support-files/my-medium.cnf /etc/my.cnf
默認情況下數(shù)據(jù)庫密碼是空地,啟動后,直接輸入Mysql就可以進入
可以運用下面命令給root設(shè)置密碼:Mysqladmin -u root password 密碼
再進入數(shù)據(jù)庫地話就需要密碼了:
Mysql -u root -p
輸入密碼
備份數(shù)據(jù)庫:
mysqldump這個命令用于備份mysql:Mysqldump -u root -p 數(shù)據(jù)庫名 > 備份路徑
如: mysqldump -u root -p Mysql > /root/cc.sql
輸入密碼
注意備份數(shù)據(jù)庫要以管理員身份
導(dǎo)入數(shù)據(jù)庫:
Mysql -u root -p 數(shù)據(jù)庫名 < 數(shù)據(jù)庫文件
輸入密碼
修復(fù)、檢查和優(yōu)化.ism后綴地數(shù)據(jù)庫文件:
isamchk
用來修復(fù).myi后綴地數(shù)據(jù)庫文件:
myisamchk /var/lib/mysql/Mysql/*.MYI 檢查msyql數(shù)據(jù)庫中所有地.MYI文件
如果有問題用-r參數(shù)來修復(fù)
myisamchk -r /var/lib/mysql/Mysql/*.MYI
顯示用戶擇定地數(shù)據(jù)庫和表:Mysqlshow
Mysqlshow -u root -p 數(shù)據(jù)庫名
Mysql地少許經(jīng)常使用命令:
show status; 查看狀態(tài)
show processlist; 查看進程
show databases; 查看有哪些數(shù)據(jù)庫
use 數(shù)據(jù)庫名 指定數(shù)據(jù)庫
show tables; 查看數(shù)據(jù)庫中有哪些表
create database 數(shù)據(jù)庫名; 創(chuàng)建數(shù)據(jù)庫
drop database 數(shù)據(jù)庫名; 刪除數(shù)據(jù)庫
二、安裝apache (httpd-2.0.59.tar.gz)
cp httpd-2.0.59.tar.gz /home
cd /home
tar zxf httpd-2.0.59.tar.gz
cd httpd-2.0.59
./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-mods-shared=most
說明:
--enable-so選項:讓Apache可以支持DSO模式,注意,這里采納使用地是Apache2.0地語法。如果你地Apache是1.3版本,應(yīng)改為--enable-module=so。
--enable-mods-shared=most選項:告訴編譯器將所有標準模塊都編譯為DSO模塊。你要是用地是Apache1.3,改為--enable-shared=max就可以。
--enable-rewrite選項:支持地址重寫功能,運用1.3版本地朋友請將它改為--enable-module=rewrite。
make
make install
apachectl start 啟動apache 完整地命令為:/usr/local/apache/bin/apachectl start
現(xiàn)在測試一下,http://IP ,你會看到apache地默認界面
三、安裝php (php-5.1.6.tar.bz2)
cp php-5.1.6.tar.bz2 /home
cd /home
tar jxf php-5.1.6.tar.bz2
cd php-5.1.6
./configure --with-apxs2=/usr/local/apache/bin/apxs --disable-debug --enable-safe-mode --enable-trans-sid --with-xml --with-Mysql --enable-short-tags --with-gd --with-zlib --with-jpeg --with-png --enable-memory-limit --disable-posix --with-config-file-path=/usr/local/lib
說明:
? --with-apxs2=/usr/local/apache/bin/apxs \ 這是加入apache中為DSO模塊地位置
? --disable-debug \ #關(guān)閉php內(nèi)部調(diào)試
? --enable-safe-mode \ #打開php地安全模式
? --enable-trans-sid \
? --with-xml \ #支持xml
? --with-mysql \ #支持Mysql
? --enable-short-tags \ #支持PHP地短標記
? --with-gd \ #支持GD庫
? --with-zlib \ #支持zlib
? --with-jpeg \
? --with-png \
? --enable-memory-limit \
? --disable-posix \
? --with-config-file-path=/usr/local/lib
總之復(fù)制粘貼就可以了,-_-
make
make install
cp php.ini-dist /usr/local/lib/php/php.ini 復(fù)制php地配置文件
cd /usr/local/lib/php/
vi php.ini 修改配置文件
register_globals = On 一般在399行
保存退出
四、整合apache和php
vi /usr/local/apache/conf/httpd.conf 修改apache地配置文件
添加:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps 一般在868行
注意將這兩行添加在其它AddType后面
確保文件中有下面一段,如果沒有地話就添加在所有LoadModule之后
LoadModule php5_module modules/libphp5.so
由于我裝地版本較高所以是php5,如果是LoadModule php4_module modules/libphp4.so地話也可以
找到DirectoryIndex index.html index.html.var 這一行,在其后面寫上index.php 一般在424行
保存退出
apachectl restart 重啟apache
現(xiàn)在可以測試一下了
五、安裝phpMyAdmin (phpMyAdmin-2.6.0.tar.gz)
cp phpMyAdmin-2.6.0.tar.gz /home
tar zxf phpMyAdmin-2.6.0.tar.gz
mv phpMyAdmin-2.6.0 /usr/local/apache/htdocs/
vi config.inc.php 修改這個文件
$cfg['Servers'][$i]['host'] = 'localhost'; //改成你數(shù)據(jù)庫服務(wù)器地主機名或IP地址;
$cfg['Servers'][$i]['user'] = 'root'; // Mysql 數(shù)據(jù)庫地用戶名;
$cfg['Servers'][$i]['password'] = ''; // Mysql 數(shù)據(jù)庫地密碼;
重點修改這幾項,保存退出
測試:http://IP/phpMyAdmin-2.6.0
這里可以修改phpMyAdmin-2.6.0這個目錄地名字,這樣訪問比較簡單快
通常安裝一臺服務(wù)器當(dāng)然使用rpm是最方便的,不需要考慮太多配置的問題,就可以輕松獲得需要的環(huán)境了。不過rpm包互相關(guān)聯(lián)的問題也不是這么容易解決。 apache,mysql,php這三個應(yīng)用從源代碼編譯安裝還是比較簡單的,配置參數(shù)不算復(fù)雜,而且沒有太多的依賴關(guān)系,從源碼編譯出來的系統(tǒng)也比較穩(wěn)定一些,方便未來打補丁和升級工作。
編譯安裝的前提是,系統(tǒng)已經(jīng)安裝了相應(yīng)的編譯工具,一般我的習(xí)慣是在安裝系統(tǒng)的時候,選擇自定義系統(tǒng)并且只選擇開發(fā)工具包這一項,其他所有軟件包均不安裝。如果您沒有選擇安裝所有的開發(fā)工具,那么之前您至少需要安裝下面的rpm包
autoconf-2.57-3.noarch.rpm
automake-1.7.8-1.noarch.rpm
binutils-2.14.90.0.6-3.i386.rpm
bison-1.875-5.i386.rpm
byacc-1.9-26.i386.rpm
cpp-3.3.2-1.i386.rpm
flex-2.5.4a-30.i386.rpm
gcc-3.3.2-1.i386.rpm
gcc-c++-3.3.2-1.i386.rpm
glibc-devel-2.3.2-101.i386.rpm
glibc-headers-2.3.2-101.i386.rpm
glibc-kernheaders-2.4-8.36.i386.rpm
libstdc++-devel-3.3.2-1.i386.rpm
m4-1.4.1-14.i386.rpm
下面介紹步驟
1、mysql安裝
下載一個目標版本
tar -xzvf mysql-4.0.xx.tar.gz
cd mysql-4.0.xx
./configure --prefix=/usr/local/mysql <--這個路徑是我比較習(xí)慣的,您也可以選擇其它安裝路徑
make
make install
在support-files目錄中,選擇一個適當(dāng)?shù)?cnf文件,cp到/etc/my.cnf
cd /usr/local/mysql/bin
./mysql_install_db
../share/mysql/mysql.server start
./mysqladmin -uroot password xxxx <--修改默認的密碼
./mysql -uroot -p 嘗試登陸mysql,應(yīng)該是沒有問題的了
mysql.server這個文件可以copy到/etc/rc.d/init.d目錄下,設(shè)置系統(tǒng)啟動的時候自動啟動mysql服務(wù)
2、apache安裝
下載一個目標版本
tar -xzvf httpd-2.0.xx.tar.gz
cd httpd-2.0.xx
./configure --prefix=/usr/local/apache --enable-so <--模塊化
make
make install
cd /usr/local/apache/conf
修改httpd.conf,因為一會兒還要配置php,這里可以暫時簡單設(shè)置一下,主要配置user,group,servername,documentroot,directoryindex這些參數(shù)就可以了
cd /usr/local/apache/bin
./apachectl start 啟動apache服務(wù),這時候在客戶端瀏覽器里面輸入ip,因該可以看到apache默認的頁面出現(xiàn)
apachectl這個文件也可以copy到/etc/rc.d/init.d目錄下,設(shè)置系統(tǒng)啟動的時候自動啟動apache服務(wù)
3、php安裝
下載一個目標版本
tar -xzvf php-4.3.xx.tar.gz
cd php-4.3.xx
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs <--這里需要找到apache安裝路徑的apxs這個文件,如果是apache 1.3版本的話,參數(shù)是--with-apxs=
make
make install
將源碼目錄中php.ini-recommended這個文件copy到/usr/local/php/lib/下,改名為php.ini
回到apache的配置文件中,確認是否自動添加了loadmodule php4_module modules/libphp4.so這一行。然后再添加下面的代碼,我一般習(xí)慣添加在#addhandler cgi-script .cgi這一行后面。
addtype application/x-httpd-php .php
使用apachectl重新啟動apache服務(wù)
./apachectl restart
在設(shè)置的documentroot目錄下,添加一個phpinfo.php的文件來測試系統(tǒng),程序代碼如下:
<?
//filename: phpinfo.php
phpinfo();
?>
這時候在客戶端瀏覽器中訪問http://serverip/phpinfo.php應(yīng)該出現(xiàn)php的參數(shù)表,至此所有系統(tǒng)安裝完畢。
當(dāng)然還有一些細節(jié)需要考慮,比如將
/usr/local/mysql/bin
/usr/local/apache/bin
/usr/local/php/bin
三個目錄加入到系統(tǒng)的path里面,這樣所有的操作指令在任何路徑都可以執(zhí)行了
配置php.ini文件,將include_path設(shè)置成include_path = ".:/usr/local/php/lib/php",這樣就可以在代碼里面使用pear代碼庫了。
上述是這三個應(yīng)用的基本最簡配置,如果需要額外的擴展功能,就要在./configure后面的參數(shù)中進行配置了,具體配置的格式可以參考各自的./configure --help幫助菜單。
建議保留源代碼的目錄,這樣在需要添加擴展的時候,只需要修改configure參數(shù),并且make, make install一下,重新啟動服務(wù),就可以更新了。
環(huán)境信息:
一,安裝Ruby1.8.7和Ruby on Rails2.3.5
1,使用CentOS的安裝工具安裝ruby:
yum install -y ruby
yum install -y ruby-devel ruby-docs ruby-ri ruby-irb ruby-rdoc
完成后檢查Ruby版本:
ruby -v
發(fā)現(xiàn)版本是1.8.5,而不是所需要的1.8.7。只好下載源代碼編譯安裝,下載解壓
運行 [root@collaborative ruby-1.8.7-p248]# ./configure
報如下的錯誤:
checking build system type… i686-pc-linux-gnu
checking host system type… i686-pc-linux-gnu
checking target system type… i686-pc-linux-gnu
checking for gcc… no
checking for cc… no
checking for cl.exe… no
configure: error: no acceptable C compiler found in $PATH
See `config.log’ for more details.
這個錯誤是由于系統(tǒng)沒有安裝 gcc 的原因,運行如下命令安裝gcc編譯器:
yum install -y gcc
gcc編譯器安裝完成后再次運行配置,編譯安裝
[root@collaborative ruby-1.8.7-p248]# ./configure
[root@collaborative ruby-1.8.7-p248]# make&make install
ruby -v 再次檢查ruby的版本
2,安裝RubyGems1.3.6
下載RubyGems安裝程序,并解壓
運行 [root@collaborative rubygems-1.3.6]# ./setup.rb 安裝
3,安裝Ruby on Rails 2.3.5
通過RubyGems來安裝Rails,運行命令:
gem install rails
二,安裝數(shù)據(jù)庫Postgresql 8.4.2
1,安裝數(shù)據(jù)庫系統(tǒng)
從官方網(wǎng)下載安裝文件postgresql-8.4.2-1-linux.bin
修改文件為可執(zhí)行:chmod +x postgresql-8.4.2-1-linux.bin
[root@collaborative u01]# ./postgresql-8.4.2-1-linux.bin 啟動安裝界面,提供安裝目錄和管理員密碼,根據(jù)安裝界面完成安裝。
Postgresql數(shù)據(jù)庫安裝完成后, 安裝Postgresql的Ruby插件:gem install postgres-pr
2,創(chuàng)建Redmine數(shù)據(jù)庫和用戶
psql -U postgres postgres
CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD ‘aronezhang’ NOINHERIT VALID UNTIL ‘infinity’;
CREATE DATABASE redmine WITH ENCODING=’UTF8′ OWNER=redmine;
3,配置Redmine使用Postgresql數(shù)據(jù)庫
下載Redmine0.9.3安裝程序,解壓到redmine-0.9.3目錄,cd到此目錄
拷貝config/database.yml.example 文件為 config/database.yml,配置production段的內(nèi)容為:
production:
adapter: postgresql
database: redmine
host: localhost
username: postgres
password: “postgres”
encoding: utf8
4,運行redmine腳本
[root@collaborative redmine-0.9.3]# rake config/initializers/session_store.rb RAILS_ENV=”production”
[root@collaborative redmine-0.9.3]# rake generate_session_store
5,遷移數(shù)據(jù)庫和數(shù)據(jù)
將數(shù)據(jù)庫對象創(chuàng)建到Postgresql中
[root@collaborative redmine-0.9.3]# rake db:migrate RAILS_ENV=”production”
導(dǎo)入默認的配置信息
[root@collaborative redmine-0.9.3]# rake redmine:load_default_data RAILS_ENV=”production”
三,啟動Redmine
運行命令啟動Redmine
[root@collaborative redmine-0.9.3]# ruby script/server -e production
1,錯誤#1
啟動報錯,如下信息:
/usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:777:in `report_activate_error’: Could not find RubyGem rack (~> 1.0.1) (Gem::LoadError)
看樣子是rake的版本不夠,Rails2.3.5中的rake版本是1.0.1的,重新安裝Rails來升級rack
[root@collaborative ~]# gem install rails
2,錯誤#2
安裝rails又報出如下的錯誤:
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require’: no such file to load — zlib (LoadError)
是zlib庫沒有安裝
解決方案:
yum install zlib-devel
進入目錄/u01/ruby-1.8.7-p248/ext/zlib
運行 ruby extconf.rb
運行 make && make install
3,錯誤#3
再次啟動Redmine,又報出如下錯誤:
./script/../config/../vendor/rails/railties/lib/initializer.rb:271:in `require_frameworks’: no such file to load — openssl (RuntimeError)
看來又缺少openssl庫
解決方案:
從網(wǎng)上找到了解決方案http://netfork.javaeye.com/blog/432928
從 http://www.openssl.org/ 上下載:openssl-0.9.8m.tar.gz
tar -xvf openssl-0.9.8m.tar.gz 解壓后,
執(zhí)行make && make install
回到ruby源文件文件夾的/ext/openssl文件夾下,執(zhí)行以下命令:
ruby extconf.rb –with-openssl-include=/usr/local/ssl/include/ –with-openssl-lib=/usr/local/ssl/lib
成功!!!
再次啟動Redmine,沒有錯誤信息,通過瀏覽器訪問Redmine系統(tǒng):
http://localhost:3000
使用admin/admin登錄系統(tǒng)進行配置
剛好今天公司網(wǎng)站的新服務(wù)器到手。花了一上午安裝MySQL+php+apache。
新版的老版的還是有些不同的。現(xiàn)在把步驟帖一下
安裝步驟:
1.mysql
在如下頁面下載mysql的for linux rpm包
http://www.mysql.com/downloads/down...3.52-1.i386.rpm
http://www.mysql.com/downloads/down...3.52-1.i386.rpm
存至/home/tmp目錄
命令列表:
cd /home/tmp
rpm -ivh MySQL-3.23.52-1.i386.rpm #安裝mysql server
rpm -ivh MySQL-client-3.23.52-1.i386.rpm #安裝mysql client
/usr/mysql/safe_mysqld & #啟動mysql server
mysql #運行mysql 客戶端,并開放root用戶的遠程訪問權(quán)限。以便調(diào)試
use mysql
update user set host = '%' where user = 'root' and host <> 'localhost';
flush PRivileges;
quit
至此mysql安裝完成
2.apache
在如下頁面下載apache的for linux 的源碼包
http://www.apache.org/dist/httpd/apache_1.3.26.tar.gz
存至/home/tmp目錄
命令列表:
cd /home/tmp
tar -zxvf apache_1.3.26.tar.gz
mv apache_1.3.26.tar.gz apache
cd apache
./configure --prefix=/usr/local/apache --enable-module=so
make
make install
安裝apache至/usr/local/apache 并配置apache支持dso方式
3.php
在如下頁面下載php的for linux 的源碼包
http://www.php.net/get_download.php?df=php-4.2.3.tar.gz
存至/home/tmp目錄
命令列表:
cd /home/tmp
tar -zxvf php-4.2.3.tar.gz
mv php-4.2.3.tar.gz php
cd php
./configure --prefix=/usr/local/php --with-apxs=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/lib --enable-track-vars --with-xml --with-mysql
make
make install
cp php.ini-dist /usr/local/lib/php.ini
以dso方式安裝php至/usr/local/php 設(shè)置配置文件目錄為/usr/local/lib 開啟mysql,xml支持
4.配置
vi /usr/local/apache/conf/httpd.conf
對apache做如下配置
#將ServerAdmin q3boy@younet.com一行改為您的郵箱地址
#DocumentRoot "/home/httpd/html/" 此處為html文件主目錄
# 同上
#Options FollowSymLinks MultiViews 為安全起見,去掉"Indexes"
#
# DirectoryIndex default.php default.phtml default.php3 default.html default.htm
#
#設(shè)置apache的默認文件名次序
#AddType application/x-httpd-php .php .phtml .php3 .inc
#AddType application/x-httpd-php-source .phps
#設(shè)置php文件后綴
存盤退出
vi /usr/local/lib/php.ini
#register-golbals = On
存盤退出
5.啟動服務(wù)
/usr/local/apache/bin/apachectl start
6.備注
apache在linux下的默認最大進程數(shù)為256,無論如何修改httpd.conf都不能超過這個限制。如果想加大這個限制,在編譯apache前編輯/home/tmp/apache/src/include/httpd.h,將其中#define HARD_SERVER_LIMIT 256 一行改為#define HARD_SERVER_LIMIT 2048后再編譯apache,
apache 1.3.26中mod_so似乎已經(jīng)不是默認模塊了。編譯時候需加上--enable-module=so,我第一次編譯沒加此參數(shù),結(jié)果php編譯時無法找到apxs
php 4.2.3中默認配置文件路徑似乎變了。編譯時需加上 --with-config-file-path=/usr/local/lib 參數(shù),我第一次編譯完php.ini放了n個地方都沒有用。不得已。只能加上這個參數(shù)。
p.s. 不保證本文所述步驟適用于其他版本
附:相關(guān)文件下載地址
php:
http://www.php.net/get_download.php?df=php-4.2.3.tar.gz
apache:
http://www.apache.org/dist/httpd/apache_1.3.26.tar.gz
mysql server:
http://www.mysql.com/downloads/down...3.52-1.i386.rpm
mysql client:
http://www.mysql.com/downloads/down...3.52-1.i386.rpm
-
資料引用:http://www.knowsky.com/2875.html