天天看點

apache2+php5+mysql5+pureftp+ftp管理

一、安裝Ubuntu5 Desktop版

===============================================

來源部落格:http://blog.csdn.net/xuchenguang/

編寫整理:徐晨光 MSN:[email protected]

參考資料:http://wiki.ubuntu.org.cn論壇中的貼子,

以及從網際網路“擺渡”出來的資料。

===============================================

安裝過程不難,依照http://wiki.ubuntu.org.cn快速設定即可,注意下面兩點:

1、網通使用者請選擇上海交大的源,比較快。

我在煙台,用的網通的網,選cn99的源也隻有3K,快時也不過13K。

2、ms分區下的中文目錄名顯示為???

這時,你要編輯/etc/fstab。比如我的Dell筆記本中的fstab檔案改後是:

# /etc/fstab: static file system information.

#

# <file system> <mount point> <type> <options> <dump> <pass>

proc /proc proc defaults 0 0

/dev/hda3 / ext3 defaults,errors=remount-ro 0 1

/dev/hda1 /media/hda1 ntfs auto,user,nls=utf8,umask=0 0 0

/dev/hda5 /media/hda5 vfat auto,user,utf8,umask=0 0 0

/dev/hda4 none swap sw 0 0

/dev/hdb /media/cdrom0 udf,iso9660 user,noauto 0 0

/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0

/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0

======================================

3.Breezy(5.10)設定本地local環境

sudo dpkg-reconfigure locales #把所有zh-開頭的都選上。

二、ubuntu Linux下手工安裝mysql5

===============================================

來源部落格:http://blog.csdn.net/xuchenguang/

編寫整理:徐晨光 MSN:[email protected]

參考資料:http://wiki.ubuntu.org.cn論壇中的貼子,

以及從網際網路“擺渡”出來的資料。

===============================================

1、下載下傳mysql5的linux版本。

位址:http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.20.tar.gz/from/http://mirror.vmmatrix.net/mysql/

2、安裝GCCt等必備的軟體:

在終端下執行(網通使用者請用交大的源):

sudo apt-get install gcc cpp g++ libncurses5-dev

sudo apt-get install make autoconf automake libtool

3、解壓:

對于*.tar.gz的檔案使用指令tar zxvf *.tar.gz來解壓;

對于*.tar.bz2的檔案使用指令tar jxvf *.tar.bz2來解壓.

将mysql,php,apache以及gd安裝到/opt/目錄下,便于管理.

具體過程可參考:

把桌面上剛下的MySQL複制到/tmp下:cp Desktop/mysql-5.0.20.tar.gz /tmp

進入/tmp目錄:cd /tmp

解壓并展開:tar zxvf mysql-5.0.20.tar.gz

4、編譯安裝MySQL:

進入到解壓後的mysql目錄:

cd mysql-5.0.20

假設我常用使用者是xcg1688,則在終端輸入下面的指令:

./configure --prefix=/opt/mysql --with-mysqld-user=xcg1688 --with-extra-charsets=all --with-unix-socket-path=/tmp/mysql.sock

--prefix=/opt/mysql 把mysql-5.0.20指定安裝到/opt/mysql目錄中;

--with-extra-charsets=all 對多語言的支援;

--with-unix-socket-path=/tmp/mysql.sock 這個是指定mysql伺服器啟動後,聯機套接字檔案所處的位置和檔案名,也就是說,如果mysql伺服器成功啟動後,就能在/tmp 目錄中看到mysql.sock檔案。如果看不到,肯定是mysql啟動不了。

--with-mysqld-user=xcg1688 這個是讓mysql伺服器也能讓系統中普通使用者xcg1688也能啟動mysql伺服器。用普通使用者來啟動mysql的好處是:mysql的程序會自己死 掉自動退出。當然root使用者也可以,不過有時mysql有些程序死了,但不會自動退出,root自己也殺不掉。是以用普通使用者就有這樣的好處,大多不會 出現mysql程序已死,但不會退出的情況;

當您看到“Thank you for choosing MySQL!”時,說明成功。

5.安裝:

sudo make

sudo make install

在我的C2.66計算機上make時花了1小時15分鐘。第二次花了40分鐘左右。

6.配置:

sudo cp /opt/mysql/share/mysql/my-medium.cnf /etc/my.cnf

這是将配置檔案拷貝到/etc目錄下成為my.cnf,大家可以根據自己的需要選擇配置檔案(配置檔案在 /opt/mysql/share/mysql/目錄下,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf這些).

運作

sudo /opt/mysql/bin/mysql_install_db

這個指令是建立MySQL的授權表.

sudo chmod 755 /opt/mysql/var //設定/opt/mysql/var的目錄權限為755

sudo chown -R xcg1688:xcg1688 /opt/mysql/var //如果希望使用xcg1688這個使用者來啟動mysql的話

sudo /opt/mysql/share/mysql/mysql.server start //啟動mysql服務

sudo chown -R xcg1688:xcg1688 /opt/mysql/ //把/opt/mysql目錄歸屬到xcg1688這個使用者下

sudo /opt/mysql/bin/mysqladmin -u root password 123456 //設定root使用者的密碼為123456

/opt/mysql/bin/mysql -u root -p //試試看mysql能不能登入。/q退出。

7.設定MySQL的環境變量:

cd //回到你的使用者目錄。

cp .bashrc .bashrc_bak //備份.bashrc

gedit ~/.bashrc

在最後加入:export PATH=/opt/mysql/bin:$PATH:.

然後在終端輸入:source ~/.bashrc #使剛修改的起作用

env //檢視環境變量

mysql

上面的修改隻針對某一使用者,你還可以用另外一種辦法:在/etc/profile添加PATH路徑後,登出一次再echo應該就可以了。

8.設定MYSQL自動啟動:

sudo cp /opt/mysql/share/mysql/mysql.server /etc/rc2.d/S20mysql

另外辦法:sudo gedit /etc/init.d/mysql //建立服務的shell腳本,在服務中你可看到它。

加入

#!/bin/sh

/opt/mysql/share/mysql/mysql.server start

然後

$sudo chmod 755 /etc/init.d/mysql

$sudo chmod +x /etc/init.d/mysql

最後,到服務中選中它。

9.安全:

重新啟動計算機,在終端$下輸入mysql能直接進入mysql>下,說明有空使用者存在。解決辦法:先/q退出,再:

mysql -u root -p

mysql>delete from mysql.user where user=''; #删除空使用者,強烈建議。

mysql>flush privileges;        #重新整理權限表,以便可以使更改立即生效

mysql>/q回車退出

結果:再輸入mysql,就不能進入了。必須用mysql -u xxxx -p的形式了。

三、Linux_Apache2 + PHP5安裝:

======================================================

來源部落格:http://blog.csdn.net/xuchenguang/

編寫整理:徐晨光 MSN:[email protected]

參考資料:http://wiki.ubuntu.org.cn論壇中的貼子,

以及從網際網路“擺渡”出來的資料。

======================================================

1.請先裝好MySQL5,具體請看我的部落格。

換成交大的源,然後sudo apt-get update

具體可參考:http://wiki.ubuntu.org.cn網站的快速配置。

2.安裝:

sudo apt-get install apache2 //安裝apache2

sudo apt-get install php5 //安裝php5

sudo apt-get install libapache2-mod-auth-mysql

sudo apt-get install php5-mysql

sudo apt-get install php5-gd

3.配置php.ini:

1)因對GD的支援是以要改一下,順便把mysql.so也挂上:

sudo gedit /etc/php5/apache2/php.ini

在檔案最後找到代碼: #extension=mysql.so

#extension=gd.so

檢查一下,前面如果有注釋#,去掉它儲存就好了。如果你要改什麼上傳檔案大小、使用記憶體的大小,可以一并改了。

2)找到代碼:mysql.default_socket =

改成: mysql.default_socket = '/tmp/mysql.sock'

4.安裝phpmyadmin

sudo apt-get install phpmyadmin

測試:http://localhost/phpmyadmin/ //出來界面就行了,暫時不要登入。

說明:啟動:sudo /etc/init.d/apache2 start

重新開機指令:sudo /etc/init.d/apache2 restart

删除指令(來自網上,沒有驗證):sudo apt-get remove --purge apache-common

5.修改/etc/phpmyadmin/config.inc.php:

終端輸入:sudo gedit /etc/phpmyadmin/config.inc.php

找到:#$cfg['Servers'][$i]['socket'] = '';

把前面的#去掉,改為:$cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';

6.改密碼:

終端輸入:mysql -u root -p

UPDATE mysql.user SET Password = OLD_PASSWORD('123456') WHERE Host = 'localhost' AND User = 'root';

原因:我們修改過MYSQL的root的密碼,因為MYSQL的password的散列加密方法和以前有了變化,是以出了這個問題 這個改變在MYSQL4.1版以上才有原先的方式變成了OLD_PASSWORD,我們重新更新一下密碼就好了。

7.重新啟動計算機(一定要做)。

打開浏覽器測試:http://localhost/phpmyadmin/

使用者名輸入root,再輸入剛改的密碼,OK。

8.問題參考:

配置不當可能進不去,請檢查第5步中的#号去了沒有。另外,請檢查my.cnf和php.ini檔案,具體可查找(sudo find / -name 檔案),查找時注意權限,一般要加sudo。my.cnf檔案一般在/etc/my.cnf,php.ini一般在/etc/php.ini,確定兩個文 件裡的 socket = /tmp/mysql.sock 都相同。

四、Ubuntu Linux下Pure-FTPD安裝:

======================================================

來源部落格:http://blog.csdn.net/xuchenguang/

編寫整理:徐晨光 MSN:[email protected]

參考資料:http://wiki.ubuntu.org.cn論壇中的貼子,

以及從網際網路“擺渡”出來的資料。

======================================================

1.準備工作:請先裝好Ubuntu、MySQL5、Apache2、PHP5,具體請看我的部落格。

下載下傳:ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.21.tar.gz

假設下載下傳到桌面上。建議你在使用者檔案夾下建一個down,下載下傳的軟體放到那裡去。不過這次為了說明友善,就先放到桌面上吧。

2、打開終端

$cd Desktop

$tar zxvf pure-ftpd-1.0.21.tar.gz

$cd pure-ftpd-1.0.21

$sudo cp /opt/mysql/lib/mysql/*.* /usr/lib

$./configure /

--with-mysql=/opt/mysql /

--with-rfc2640

$sudo make //編譯

$sudo make install //安裝

3.拷貝兩個基本的配置檔案:

對于 pure-ftpd來說,如果用MySQL認證,那麼最重要的2個檔案分别是 pure-ftpd.conf 和 pureftpd-mysql.conf,用源碼安裝,這2個檔案是在安裝的目标上找不到的。他在我們的源碼裡,隻是個樣本。

我們把他們2個複制到 /etc 目錄下,你也可複制到别處,但是在配置時又有所變動哦

$sudo cp pureftpd-mysql.conf /etc

$sudo cp configuration-file/pure-ftpd.conf /etc

4.修改 /etc/pure-ftpd.conf

$sudo gedit /etc/pure-ftpd.conf

這裡列出一部分重要的,注意前面有#号的,如果想起用請去掉。

ChrootEveryone yes # 鎖定使用者在主目錄中,你不會希望,a1使用者能進到a2目錄裡吧

CreateHomeDir yes # 自動建立使用者主目錄,根據資料裡的記錄,自動建立使用者目錄

AnonymousCanCreateDirs yes # 允許匿名使用者建立新目錄?

MaxClientsNumber   200 # 最大可連接配接的使用者數,自己決定吧

MaxLoad 100 #系統連接配接數超此值,禁止匿名下載下傳

MaxClientsPerIP 8 # 來自一個IP的最大連接配接數,知道有的站點,為什麼隻能一個線程了吧

MaxIdleTime # 用戶端連接配接後的最大閑置時間

AntiWarez yes #不接受所有者為 "ftp" 的檔案的下載下傳。例如:那些匿名使用者上傳後未被本地管理者驗證的檔案。

MySQLConfigFile /etc/pureftpd-mysql.conf # 關鍵部分,去#号,你整合mysql就靠它了

ProhibitDotFilesWrite yes # 禁止修改隐藏檔案

ProhibitDotFilesRead yes # 禁止讀取隐藏檔案,這2項建議用yes,不然你不小心把某個.開頭的(隐藏檔案)弄沒了,或改了,可能你的使用者會有問題哦。

FileSystemCharset UTF-8 #伺服器端UTF-8

ClientCharset GB2312 #用戶端見到的是GB2312

根據自己的要求來設定,但注意一定要把注掉的MySQLConfigFile打開,還有注掉的CreateHomeDir打開。

5、修改/etc/pureftpd-mysql.conf

$sudo gedit /etc/pureftpd-mysql.conf

這裡列出一部分重要的,注意前面有#号的,如果想起用請去掉。

# Optional : MySQL server name or IP. Don't define this for unix sockets.

MYSQLServer localhost #SQL運作在本機,當然是 localhost了

# Optional : MySQL port. Don't define this if a local unix socket is used.

MYSQLPort 3306 #原來是登出掉的我們打開它,其實不打開也行,系統預設就OK

# Mandatory : user to bind the server as.

MYSQLUser root #這裡的 MYSQLUser和MYSQLPassword是 pureftpd查詢帳号資料庫用的,我就用root得了,你也可指定,但是必須在 mysql.user表裡有指定

MYSQLPassword 123456

MYSQLDatabase ftpusers #這個是我們要在MySQL裡建立的一個認證資料庫

配置完成。

6、建立ftp使用者目錄

$sudo groupadd ftpgroup -g 10000 #建立一個ftpgroup組,gid為10000,這裡的10000要記住哦,等下要用到。

$sudo useradd ftpuser -g ftpgroup -u 10000 #建立一個ftpuser使用者,屬于ftpgroup組,uid為10000。

$sudo mkdir /var/ftpdir

$sudo chown -R ftpuser.ftpgroup /var/ftpdir #把 /var/ftpdir目錄及同以下的目錄,設定所屬使用者和群組。

7.pureftp管理:

Pureftp的管理軟體很多,我們在這裡選擇這個:

下載下傳位址http://machiel.generaal.net/files/pureftpd/ftp_v2.1.tar.gz

假設下到桌面,

$cd

$cd Desktop

$sudo tar zxvf ftp_v2.1.tar.gz #解壓展開,桌面上多了一個檔案夾,名為ftp

$sudo mv ftp /var/www/ftp #把ftp檔案夾移動到Apache伺服器主目錄,本文中是/var/www。

下面配置安裝,如果有什麼問題,請http://localhost/phpmyadmin/,把資料庫ftpusers删除,再重新下面的操作。

打開浏覽器,輸入http://localhost/ftp/install.php

step1)按step2 #這一步如果出現config.php權限不夠的提示,用chmod開權限。

step2)按“New installation,”連結;

step3)"Hostname"中填寫127.0.0.1,“Username”填寫root,Password填寫123456,按connect, 全部OK了按"continue”。又出來一個對話框,除了上面的三項要一模一樣外,“Database”要填寫"ftpusers",按 refresh,全部OK了按“step4”。有問題修正後按"refresh"驗證。

step4)語言選中文,FTP Address改成你的IP:21,“Default user ID”和"Default group ID"都是10000,要想流量控制和上傳下載下傳比率,把最後兩項選中。按"Save"按鈕,儲存到config.php中。按step5。

step5)管理者密碼,改一下,按"step6".出來一個選擇,要你選擇一個有足夠權限的使用者,用來使本次的管理者密碼更改生效,我選root。

step6)沒什麼好說的,按step7。完成了。

$sudo gedit /var/www/ftp/index.php

找到下面這行,把前面的//去了。

// echo ("<input type=/"text/" name=/"dir_box/" size=/"40/" maxlength=/"128/" value=/"$dir/">/n");

找到下面這行,把前面加上//

echo ("<input type=/"hidden/" name=/"dir_box/" value=/"$dir/">/n");

找到兩處.md5($_POST['password_box'])."'

全都改成.$_POST['password_box']."'

打開浏覽器,輸入http://localhost/ftp/

建立個帳号,名a密碼a,主目錄/var/ftpdir/a(它怎麼會叫家目錄,都是home惹得禍!)。有興趣你可以看一下,a目錄是不存在的,用ftp登入一下,a就自動建好了。

8.運作測試:

我們得要把 pureftp運作起來再說,我們可以利用 pureftp源碼解壓目錄/configuration-file/pure-config.pl這個腳本來控制,注意,這是用perl語言寫的。如果沒有安裝perl就安裝一個吧。輸入:

$cd

$cd Desktop

$cd pure-ftpd-1.0.21 #先進入你解壓的檔案夾

$sudo chmod u+x configuration-file/pure-config.pl

$sudo cp configuration-file/pure-config.pl /etc #放這裡好找

$sudo /etc/pure-config.pl /etc/pure-ftpd.conf #運作pureftpd伺服器

看到如果下資訊,就說明成功了

Running: /usr/local/sbin/pure-ftpd -A -c200 -B -C8 -D -fftp -H -I15 -lmysql:/etc/pureftpd-mysql.conf -L2000:8 -M -m100 -s -U133:022 -u100 -x -X -j -k99 -Z -8UTF-8 -9UTF-8

接着:

$ftp localhost

Connected to localhost.localdomain.

220---------- Welcome to Pure-FTPd ----------

220-You are user number 1 of 200 allowed.

220-Local time is now 15:03. Server port: 21.

220-IPv6 connections are also welcome on this server.

220 You will be disconnected after 15 minutes of inactivity.

Name (localhost:xcg1688): a #使用者名

331 User a OK. Password required

Password: #密碼

230-User a has group access to: ftpgroup

230 OK. Current restricted directory is /

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> quit

221-Goodbye. You uploaded 0 and downloaded 0 kbytes.

221 Logout.

9.設定pure-ftpd為系統服務:

$sudo gedit /etc/init.d/pure-ftpd

内容:

#!/bin/sh

/etc/pure-config.pl /etc/pure-ftpd.conf

然後:

$sudo chmod 755 /etc/init.d/pure-ftpd

$sudo chmod +x /etc/init.d/pure-ftpd

最後,到服務中選中它。重新開機系統(要設定匿名,先不重新開機,進入第10步)。

10.匿名上傳下載下傳:

$sudo mkdir /var/ftpdir/anonymous #建立一個目錄,名字随意,下面要用,記住統一即可。

$sudo useradd ftp -g ftpgroup #添加一個使用者“ftp”必須是這個名,它與其它ftp使用者都從屬于上面的ftpgroup。

$sudo usermod -d /var/ftpdir/anonymous ftp #更改“ftp”這個使用者的主目錄。

$sudo chmod +777 /var/ftpdir/anonymous #使具有匿名上層目錄的使用者可以删除匿名目錄anonymous内的檔案。

$sudo chown ftp:ftpgroup /var/ftpdir/anonymous

修改 /etc/pure-ftpd.conf終端:$sudo gedit /etc/pure-ftpd.conf

找到: AnonymousCantUpload no,不接受匿名使用者上傳新檔案( no = 允許上傳)

還是要重新開機才好用。

其它:

ftp用戶端可選gftp,在終端輸入:sudo apt-get install gftp

五、Pure-FTPD使用者權限配置設定政策:

======================================================

來源部落格:http://blog.csdn.net/xuchenguang/

編寫整理:徐晨光 MSN:[email protected]

參考資料:http://wiki.ubuntu.org.cn論壇中的貼子,

以及從網際網路“擺渡”出來的資料。

======================================================

按照前面的設定好後,權限情況是:注冊使用者各自對自已的檔案夾有全權,互相不能看。匿名使用者對anonymous檔案夾有上傳權限、建檔案夾權限,沒有删除權限。在實際工作中,這種配置設定方案不能滿足需求,下面來改進一下:

1,需求分析:

ftpmanager:對ftp内所有的檔案有全權。

注冊使用者:權限不變,仍然對各自的檔案有全權,互相隔離。

匿名使用者:對anonymous内檔案有下載下傳權限,對anonymous/upload下有上傳、建目錄權限,沒有删除權限。

2、實作辦法:

http://localhost/ftp/index.php

建立使用者ftpmanager,輸入密碼,更改主目錄為/var/ftpdir。其它的上傳下載下傳速率也改一下吧。

$sudo chmod +755 /var/ftpdir/anonymous #匿名目錄寫入權限限制在屬主(也叫所有者)。

$sudo chown ftpuser:ftpgroup /var/ftpdir/anonymous #匿名目錄屬主改為ftpuser。

$sudo usermod -d /var/ftpdir/anonymous ftp #匿名使用者主目錄在anonymous,如果你是一步一步按前面來的,這一步不必做。

$sudo mkdir /var/ftpdir/anonymous/upload

$sudo chmod +755 /var/ftpdir/anonymous/upload #upload目錄寫入權限限制在屬主和群組。

$sudo chown ftp:ftpgroup /var/ftpdir/anonymous/upload #upload目錄屬主改為ftp(即匿名帳号)。