站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

lighttpd php mysql-LAMP 架設

前言

[LAMP - Wikipedia] 應該不用多說了吧,不過本次實作 Web Server 不是使用 Apache,而是使用小而輕巧的 Lighttpd-輕量級 Web Server,不知是不是應該改叫 LLMP (Linux Lighttpd MySQL PHP) *:p*

實作環境

MySQL 安裝及設定

步驟1.安裝 MySQL Database

我使用群組安裝把相關會用到的套件都裝入,在安裝以前先查看會安裝哪些套件

 #yum groupinfo "MySQL Database"            //查尋 MySQL 群組套件會安裝哪些套件
 Group: MySQL Database
  Description: This package group contains packages useful for use with MySQL.
  Mandatory Packages:                       //強制安裝套件
    mysql
  Default Packages:                         //預設會安裝的套件
    unixODBC
    mysql-server
    MySQL-python
    mysql-connector-odbc
    libdbi-dbd-mysql
    perl-DBD-MySQL
  Optional Packages:                        //建議安裝 (視個人需求自行安裝) 
    mod_auth_mysql
    mysql-devel                             //MySQL 程式開發套件及函式庫
    qt-MySQL
    mysql-bench                             //MySQL 效能測試套件
    php-mysql

接下來就利用 yum 來進行群組安裝 MySQL 吧

 #yum groupinstall "MySQL Database"

你可能會問說怎麼沒有 MySQL-shared (MySQL 用戶端函式庫套件),這個套件若需要就到[MySQL Download]找對應的 MySQL 版本及需要的 rpm 來安裝吧。

步驟2.修改 /etc/my.cnf

我想將 DB 放置資料夾從預設的 /var/lib/mysql 改放到 /home/db/mysql 下 (我喜歡集中管理)

 #mkdir /home/db ; mkdir /home/db/mysql
 #chown mysql:mysql /home/db/mysql
 #vim /etc/my.cnf
 [mysqld]
 datadir=/var/lib/mysql                //預設值
 datadir=/home/db/mysql                //修改後

再來就是執行 chkconfig 將 mysqld 設定在 runlevel 2 ~ 5 為啟動 MySQL 服務

 #chkconfig mysqld on
 #chkconfig --list |grep mysqld        //查看設定是否生效
 mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

步驟3.啟動 MySQL

 #/etc/rc.d/init.d/mysqld start        //啟動 MySQL 服務
 Initializing MySQL database:  Installing all prepared tables Fill help tables
 Starting MySQL:                                            [  OK  ]

檢查 MySQL 是否啟動成功並 Listen 相關 Port

 #netstat -tnl
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address               Foreign Address             State
 tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN

步驟4.設定 MySQL 管理者密碼

剛安裝完 MySQL 後記得趕快設定管理者密碼 (這裡的 root 跟 CentOS 的 SuperUser Root 沒關係哦!!)

 #mysqladmin -u root password YOUR_PASSWORD     //設定新密碼
 #mysqladmin -u root -p password NEW_PASSWORD   //日後若要更改密碼

步驟5.測試登入 MySQL

設定好 MySQL 管理者密碼後試著登入看看吧:p

 #mysql -u root -p
 Enter password:                                //輸入剛才設定的 MySQL 密碼
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 1581 to server version: 5.0.27
 Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 mysql>                                         //成功登入 mysql

步驟6.建立其它 MySQL 帳號

以下命令為表示允許連線主機來源是 localhost 以 sqluser1 的 MySQL 帳號及密碼為 1234 登入的使用者,能對指定的資料庫 testdb 擁有所有權限。

 mysql> grant all privileges on testdb.* to sqluser1@localhost IDENTIFIED BY '1234';
 Query OK, 0 rows affected (0.00 sec)
 mysql> FLUSH PRIVILEGES ;             //重新載入(使變更生效)
 Query OK, 0 rows affected (0.01 sec)

補充:基本 MySQL 操作指令

以下記錄常用基本 MySQL 指令及語法,詳細內容可參考 [MySQL :: MySQL 5.1參考手冊 :: 13. SQL語句語法]

Lighttpd 安裝及設定

步驟1.安裝 lighttpd、lighttpd-fastcgi 套件

因為 Lighttpd 使用 FastCGI 來處理 PHP 所以要一併安裝

 #yum -y install lighttpd lighttpd-fastcgi

步驟2.修改 lighttpd 設定檔

修改 lighttpd 設定檔來支援 PHP (FastCGI)

 #vim /etc/lighttpd/lighttpd.conf
 server.modules = (
                   "mod_fastcgi",   //這行的 mark 要拿掉(支援 PHP-FastCGI)
                  )
 #### fastcgi module
 ## read fastcgi.txt for more info
 ## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
 fastcgi.server             = ( ".php" =>
                               ( "localhost" =>
                                 (
                                   "socket" => "/var/run/lighttpd/php-fastcgi.socket",     //預設值
                                   "socket" => "/tmp/php-fastcgi.socket",                  //修改後
                                   "bin-path" => "/usr/bin/php-cgi"
                                 )
                               )
                              )

步驟3.設定開機自動啟動 lighttpd 服務

使用 chkconfig 指令來查看 lighttpd 在各 runlevel 下狀態

 #chkconfig --list |grep lighttpd
 lighttpd        0:off   1:off   2:off   3:off   4:off   5:off   6:off

設定 lighttpd 在 runlevel 為 2、3、5 時會啟動服務

 #chkconfig --levels 235 lighttpd on     

檢查剛才的設定是否生效

 #chkconfig --list |grep lighttpd
 lighttpd        0:off   1:off   2:on    3:on    4:off   5:on    6:off

步驟4.啟動 lighttpd 服務

 #/etc/rc.d/init.d/lighttpd start
 Starting lighttpd:                                         [  OK  ]

檢查一下 lighttpd process 是否執行

 #ps ax |grep lighttpd
 4266 ?        S      0:00 /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf

檢查是否 LISTEN Port 80

 #netstat -tnl |grep :80
 tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN

PHP 安裝及設定

步驟1.安裝 PHP 5

安裝 php 及 php-mysql 套件

 #yum -y install php php-mysql

步驟2.查尋安裝 PHP 是否成功

查看安裝的 PHP 版本

 #php -v
 PHP 5.1.6 (cli) (built: Sep 20 2007 10:16:10)
 Copyright (c) 1997-2006 The PHP Group
 Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

查看目前 PHP 模組

 #php -m
 [PHP Modules]
 bz2
 ...略
 xml
 zlib
 [Zend Modules]

步驟3.測試 Lighttpd 能否正確處理 php 檔案

隨意建立一個檔名為 test.php 的檔案,然後放到 lighttpd 的 web 目錄而 test.php 內容如下如果能看到 php 的預設頁就表示 lighttpd 能正確處理 php 檔案了

 <? 
 phpinfo(); 
 ?> 

參考

[學生用伺服器建置流程(CentOS 5 版)PHP & MySQL]

[台灣PHP聯盟 - 在 RHEL 修改 mysql 放置資料的路徑]

[Jamyy's Weblog: 架設自己的即時訊息伺服器 - 使用 jabberd 2]

[MySQL :: MySQL 5.1參考手冊]

[MySQL中文參考手冊-目錄]

[MySQL Bugs: #15818: error: No curses/termcap library found]

Me FAQ

Q.rpm 安裝 MySQL-5.0.77-0.src.rpm 失敗?

Error Meaage:

利用 rpm 指令來手動安裝 MySQL-5.0.77-0.src.rpm 失敗,並出現如下錯誤訊息。

 # rpm -ivh MySQL-5.0.77-0.src.rpm
   1:MySQL                  warning: user mysqldev does not exist - using root
 warning: user mysqldev does not exist - using root
 warning: user mysqldev does not exist - using root
 ########################################### [100%]

Ans:

代表目前用來安裝 MySQL-5.0.77-0.src.rpm 使用者為 root 機於安全性的考量,系統您建立一個用來安裝 mysql 的使用者帳號 (mysqldev),在新增 mysqldev 使用者之後便可順利執行 rpm 指令來安裝 MySQL-5.0.77-0.src.rpm。

 #useradd mysqldev
 #rpm -ivh MySQL-5.0.77-0.src.rpm
   1:MySQL                  ########################################### [100%]

Q.configure: error: no acceptable C compiler found in $PATH?

Error Meaage:

順利解開 MySQL-5.0.77-0.src.rpm 後執行 ./configure 指令來進行環境配置時失敗,並出現如下錯誤訊息。

 #cd mysql-5.0.77
 #./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 a BSD-compatible install... /usr/bin/install -c
 checking whether build environment is sane... yes
 checking for a thread-safe mkdir -p... /bin/mkdir -p
 checking for gawk... gawk
 checking whether make sets $(MAKE)... yes
 checking "character sets"... default: latin1, collation: latin1_swedish_ci; compiled in: latin1 latin1 utf8
 checking whether to compile national Unicode collations... yes
 checking whether build environment is sane... yes
 checking whether make sets $(MAKE)... (cached) yes
 checking for gawk... (cached) gawk
 checking for gcc... no
 checking for cc... no
 checking for cl.exe... no
 configure: error: in `/usr/src/redhat/SOURCES/mysql-5.0.77':
 configure: error: no acceptable C compiler found in $PATH         //系統沒有安裝 gcc 套件 (無法編譯)

Ans:

原因在於目前系統並沒有安裝 gcc 套件所以進行環境設定 (./configure) 時並出現錯誤訊息,安裝好 gcc 套件後即可順利執行。

 #yum -y install gcc-c++

Q.checking for termcap functions library... configure: error: No curses/termcap library found?

Error Meaage:

順利解開 MySQL-5.0.77-0.src.rpm 後執行 ./configure 指令來進行環境配置時失敗,並出現如下錯誤訊息。

 #cd mysql-5.0.77
 #./configure
 ...略...
 checking for termcap functions library... configure: error: No curses/termcap library found

Ans:

請使用如下參數來配合 ./configure 指令即可

 ./configure --with-named-curses-libs=/usr/lib/libncursesw.so.5

Q.mysqladmin: connect to server at 'localhost' failed?

Error Meaage:

剛安裝好 MySQL 並啟動 MySQL 服務成功之後,使用 mysqladmin 設定 MySQL 管理者 (root) 密碼時失敗,並出現如下錯誤訊息。且也無法使用 mysql -u root -p 來登入 MySQL?

 #mysqladmin -u root password 123456
 mysqladmin: connect to server at 'localhost' failed
 error: 'Access denied for user 'root'@'localhost' (using password: NO)'

Ans:

請依如下步驟來重新設定 MySQL 管理者密碼 (也適用於密碼忘記時,前提是擁有主機系統管理權限),完成如下步驟後即可使用 mysql -u root -p 來登入 MySQL。

 #/etc/rc.d/init.d/mysql stop
 Shutting down MySQL..                                      [  OK  ]
 #mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
 [1] 28107
 #mysql -u root mysql
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 1
 Server version: 5.0.77-community MySQL Community Edition (GPL)
 Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 mysql>
 mysql> UPDATE user SET Password=PASSWORD('123456') where USER='root';
 Query OK, 3 rows affected (0.00 sec)
 Rows matched: 3  Changed: 3  Warnings: 0
 mysql> FLUSH PRIVILEGES;
 Query OK, 0 rows affected (0.00 sec)
 mysql> quit
 Bye
 #/etc/rc.d/init.d/mysql restart
 Shutting down MySQL..                                      [  OK  ]
 Starting MySQL                                             [  OK  ]

Q.ERROR 1064 (42000) at line 1: You have an error in your SQL syntax near '嚜?

Error Meaage:

匯入 Dump Files 至指定的資料庫時失敗並出現如下錯誤訊息。

 #mysql -u root -p databases_name < backup1.sql
 Enter password:
 ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '嚜?
 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"' at line 1

使用 vi 來查看 backup1.sql 內容時為正常,若使用 less 指令來查看 backup1.sql 內容時則看到第一行有此字 嚜?

 #less backup1.sql
 嚜?- phpMyAdmin SQL Dump
 -- version 2.11.3
 -- http://www.phpmyadmin.net
 --
 -- Host: localhost
 ...略...

Ans:

主因 MySQL 資料庫編碼格式設定為 [UTF-8] 但匯入的 backup1.sql 檔案編碼格式不是 [UTF-8] 所導致的。

[資安論壇 • 檢視主題 - 求助 ~ FC3 MySQL 3.x匯入到F7 MySQL 5.x字元集問題]

Q.如何移除預設的 mysql-5.0.45-7.el5.i386?

Error Meaage:

CentOS 5.2 安裝時有勾選 KDE 及 Server 選項,但當嘗試要安裝 MySQL-server-community-5.0.82-0.rhel5.i386.rpm 時出現如下錯誤訊息

 #rpm -ivh MySQL-server-community-5.0.82-0.rhel5.i386.rpm
 error: Failed dependencies:
        MySQL conflicts with mysql-5.0.45-7.el5.i386

系統顯示與目前的 mysql-5.0.45-7.el5.i386 產生衝突,嘗試使用 rpm -e 指令來移除它但出現如下錯誤訊息 (相依套件關系)

 #rpm -e mysql-5.0.45-7.el5
 error: Failed dependencies:
        libmysqlclient.so.15 is needed by (installed) dovecot-1.0.7-2.el5.i386
        libmysqlclient.so.15(libmysqlclient_15) is needed by (installed) dovecot-1.0.7-2.el5.i386

Ans:

由於有套件相依性的關系因此必須加上 --nodeps 參數來強制移除 mysql-5.0.45-7.el5,移除後即可順利安裝 MySQL-server-community-5.0.82-0.rhel5.i386.rpm

 #rpm -e mysql-5.0.45-7.el5 --nodeps
 #rpm -ivh MySQL-server-community-5.0.82-0.rhel5.i386.rpm
 Preparing...                ########################################### [100%]
   1:MySQL-server-community ########################################### [100%]

Q.error: cannot create %sourcedir /usr/src/redhat/SOURCES

Error Meaage:

安裝 MySQL-5.0.82-0.src.rpm 套件時出現如下錯誤訊息

 #rpm -ivh MySQL-5.0.82-0.src.rpm
 error: cannot create %sourcedir /usr/src/redhat/SOURCES

Ans:

此訊息為系統找不到該資料夾 (/usr/src/redhat/SOURCES) 或資料夾權限錯誤所引起,此次狀況為系統不存在該資料夾,因此建立該資料夾後即可順利安裝 src rpm.

 #mkdir -p /usr/src/redhat/SOURCES
 #rpm -ivh MySQL-5.0.82-0.src.rpm
   1:MySQL                  ########################################### [100%]

Q.phpinfo 無法顯示內容?

Error Meaage:

安裝 httpd-2.2.15-5、php-5.3.2-6 版本,test.php 內容如下但無法顯示 phpinfo 頁面內容?

 <?
 phpinfo();
 ?>

Ans:

將 test.php 內容由原本的 <? 修改為 <?php 後即可顯示網頁。

 <?php
 phpinfo();
 ?>

Q.想要安裝指定的 MySQL 版本怎麼辦?

Ans:

因為採用 CentOS 5.6 的 YUM 所安裝的 MySQL 版本為 5.0.x,但需求是要安裝 MySQL 5.1.44 版本才行,那麼該如何達成? 最簡單的方法是直接去找 RPM 來進行安裝即可。

  1. 由於 MySQL 官網找不到舊版,此例是去 [Download SkySQL Archive Service: MySQL Server 5.1.44] 找到的 RPM。
  2. 請下載三個 RPM 分別是 MySQL-server-community-5.1.44-1.rhel5.x86_64.rpm、MySQL-client-community-5.1.44-1.rhel5.x86_64.rpm、MySQL-devel-community-5.1.44-1.rhel5.x86_64.rpm
  3. 執行指令進行 RPM 的安裝「rpm -ivh MySQL-server-community-5.1.44-1.rhel5.x86_64.rpm MySQL-client-community-5.1.44-1.rhel5.x86_64.rpm MySQL-devel-community-5.1.44-1.rhel5.x86_64.rpm」
  4. 安裝完畢後檢查是否可進入 MySQL 資料庫、版本是否正確、設定 MySQL 資料庫管理密碼
 #mysql                                       //進入 MySQL 資料庫 (預設沒有密碼)
  Welcome to the MySQL monitor.  Commands end with ; or \g.
  Your MySQL connection id is 5
  Server version: 5.1.44-community MySQL Community Server (GPL)
  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  mysql> exit                                //離開 MySQL 資料庫
 #mysqladmin -u root password 'weithenn168'  //設定 MySQL 資料庫管理密碼為 weithenn168
 #mysql -u root -p                           //再次登入 MySQL 資料庫
  Enter password:                            //輸入 MySQL 資料庫管理密碼
  Welcome to the MySQL monitor.  Commands end with ; or \g.
  Your MySQL connection id is 5
  Server version: 5.1.44-community MySQL Community Server (GPL)
  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  mysql> exit                                //離開 MySQL 資料庫
  Bye
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com