文章參考http://hi.baidu.com/10105188/blog/item/5e1440b5607a55c236d3caa8.html
1、網絡配置文件/etc/network/interfaces
address 163.23.115.x
netmask 255.255.255.192
network 163.23.115.254
broadcast 163.23.115.255
gateway
eth1內部網卡不要設gateway
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
重啟網路
/etc/init.d/networking restart
域名服務器配置文件
vi /etc/resolv.conf
nameserver 168.95.1.1
nameserver 163.23.115.x
1.讓你的 Linux 具有 router 的能力。
echo "1" > /proc/sys/net/ipv4/ip_forward
2.加入 NAT table 封包偽裝,$innet是內部區網(例如:192.168.1.0/24),
也可以不用設定$innet,這樣代表所有內部網路都會從對外的網路介面出去,
偽裝成對外的網路封包。$EXTIF是對外網路介面(例如:eth0)。
iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE
或
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE
3.將上面兩行指令寫到 /etc/rc.local 中,讓server開機的時候就執行。
vi /etc/rc.local
一、安裝Apache
Ubuntu提供了3個apache2的套件,分別是apache2-mpm-worker、
apache2-mpm-prefork、apache2-mpm-event。
如果你在安裝過程選擇了LAMP包的話,那麼安裝的是apache2-mpm-prefork。
如果你沒有選擇安裝LAMP包,安裝完系統之後,執行下面的命令安裝apache2
這個軟件包時,安裝的是apache2-mpm-worker:
sudo apt-get install apache2
1、Apache配置文件說明
*apache2.conf——全局配置文件
*conf.d/——該目錄存放一些一般性的配置
*envvars——存放環境變量,一般不需要修改
*httpd.conf——用戶配置文件
*mods-available/——該目錄下是已經安裝的可用模塊
*mods-enabled/——該目錄下是已經啟用的模塊
*ports.conf——httpd服務的端口
*sites-available/——該目錄下是可用的虛擬主機
*sites-enabled/——該目錄下是已經啟用的虛擬主機
其中,apache2.conf是apache2的主配置文件,它會
讀取上面列出的所有目錄和文件(sites-available目錄除外,
因為apache不需要知道有哪些虛擬主機可用,它只需要加
載那些已經啟用的虛擬主機就可以了。)
Apache網頁文件默認存放的位置
在默認情況下,apache把網站文件放在/etc/www目錄下。
通過DocumentRoot關鍵字的設置,你可以把任意目錄指
定為網頁文件的根目錄。你也可以在裡面建立多個網頁文
件的目錄,如:
/var/www/www.aliwo.net
/var/www/bbs.aliwo.net
也就是說每個網站有自己單獨的文件夾,這樣管理起來比
較清晰。另外/var分區需要大一些,因為mysql數據庫文件
和日誌文件,以及網站日誌文件都保存在這裡。
Apache虛擬機設置
apache既支持基於域名的虛擬主機,也支持基於IP的虛擬主機。
Ubuntu的Apache2為提供虛擬主機支持做了很好的配置。如果
你的服務器只有一個網站,基本上不用修改配置,虛擬機就可以
用了;如果有多個網站,則可以複製defualt虛擬主機的配置文
件進行修改,這樣可以很快的建立多個網站。
每個apache的虛擬主機都有單獨的配置文件。這些虛擬主機的配
置文件放在/etc/apache2/sites-available目錄下。上面提到
的default虛擬主機,位於這個目錄裡。如果你在瀏覽器中訪問服務
器的IP地址,出現頁面「It Worker!」,表明網站已經在提供服務了。
4.1創建一個新的虛擬主機
要創建一個新網站,你需要創建一個新的虛擬主機。假設我現
在要創建一個域名為http://www.aliwo.net/的虛擬主機:
*先將default虛擬主機複製一份,以便用來修改:
sudo cp default http://www.aliwo.net/
*然後編輯http://www.aliwo.net/
sudo nano http://www.aliwo.net/
http://www.aliwo.net/內容如下:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
FCGIWrapper /usr/bin/php5-cgi .php
Options ExecCGI SymLinksIfOwnerMatch
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory 「/usr/lib/cgi-bin」>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ 「/usr/share/doc/」
<Directory 「/usr/share/doc/」>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
修改後:
<VirtualHost *:80>
ServerAdmin aliwo@qq.com
ServerName http://www.aliwo.net/
ServerAlias aliwo.net
DocumentRoot /var/www/www.aliwo.com
<Directory />
FCGIWrapper /usr/bin/php5-cgi .php
Options ExecCGI SymLinksIfOwnerMatch
AllowOverride None
</Directory>
<Directory /var/www/www.aliwo.com>
Options FollowSymLinks MultiViews
AllowOverride ALL
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory 「/usr/lib/cgi-bin」>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
#日誌
CustomLog /var/log/apache2/access.log combined
Alias /doc/ 「/usr/share/doc/」
<Directory 「/usr/share/doc/」>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
4.2、啟動http://www.aliwo.net/
sudo a2ensite http://www.aliwo.net/
同時禁止default(即禁止使用IP訪問)。
sudo a2dissite default
5、建立網站目錄
#cd /var/www
#mkdir /var/www/www.aliwo.net
然後把網頁文件上傳到目錄裡面。
6、重啟apache2,生效網站:
sudo /etc/init.d/apache2 restart
一、安裝Pure-FTPd
$ sudo apt-get install pure-ftpd
$ sudo apt-get install pure-ftpd-mysql
二、配置Pure-FTPd
1.添加用戶和組
$ sudo groupadd -g 2001 ftpgroup
$ sudo useradd -u 2001 -s /bin/false -d /dev/null -c 「Pure-FTPd User」 -g ftpgroup ftpuser
在上面創建用戶的命令中,指定將/bin/false作為shell,使得該用戶無法登錄到服務器的shell環境,從而避免了很多安全問題;而將其HOME目錄設置為/dev/null,也提高操作系統的安全。
2.Chroot 設置
為了安全起見,我們要將每個FTP用戶限制在Chroot環境中。為此,我們可以在其配置目錄/etc/pure-ftpd/conf下面創建一個名為ChrootEveryone的文件,並將內容設置為yes:
$ sudo sh -c 「echo 『yes』 > /etc/pure-ftpd/conf/ChrootEveryone」
這樣設置後,每個FTP用戶自己的HOME目錄就成了他的root目錄,他無法達到上層目錄中,也就無法瀏覽其它目錄下的文件了。
3.手工創建用戶目錄
下面的設置,告訴Pure-FTPd不要為用戶自動創建HOME目錄,我們將手工創建,後面我將會介紹web管理工具創建用戶和HOME目錄:
$ sudo sh -c 「echo 『No』 > /etc/pure-ftpd/conf/CreateHomeDir」
4.為Pure-FTPd 創建MySQL 數據庫
$ mysql -u root -p
mysql> CREATE DATABASE ftpusers;
然後,創建一個名為ftpadmin的MySQL用戶,密碼為ftpadminPassword,並將數據庫ftpusers的相關權限賦給該用戶:
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON ftpusers.* TO
『ftpadmin』@'localhost』 IDENTIFIED BY 『ftpadminPassword』;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON ftpusers.* TO
『ftpadmin』@'localhost.localdomain』 IDENTIFIED BY 『ftpadminPassword』;
mysql> FLUSH PRIVILEGES;
然後,我們在該數據庫中,創建一個users表,其SQL語句如下:
mysql> USE ftpusers;
mysql> CREATE TABLE IF NOT EXISTS `users` (
`User` varchar(16) NOT NULL default 」,
`Password` varchar(32) NOT NULL default 」,
`Uid` int(11) NOT NULL,
`Gid` int(11) NOT NULL,
`Dir` varchar(128) NOT NULL default 」,
`QuotaFiles` int(10) NOT NULL default 『500′,
`QuotaSize` int(10) NOT NULL default 『30′,
`ULBandwidth` int(10) NOT NULL default 『80′,
`DLBandwidth` int(10) NOT NULL default 『80′,
`Ipaddress` varchar(15) NOT NULL default 『*』,
`Comment` tinytext,
`Status` enum(』0′,』1′) NOT NULL default 『1′,
`ULRatio` smallint(5) NOT NULL default 『1′,
`DLRatio` smallint(5) NOT NULL default 『1′,
PRIMARY KEY (`User`),
UNIQUE KEY `User` (`User`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
mysql> quit
5.配置Pure-FTPd 的mysql.conf
$ sudo mv /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
$ sudo nano /etc/pure-ftpd/db/mysql.conf
內容為:
MYSQLServer 127.0.0.1
MYSQLSocket /var/run/mysqld/mysqld.sock
MYSQLUser ftpadmin
MYSQLPassword ftpadminPassword
MYSQLDatabase ftpusers
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM users WHERE User=」\L」 AND Status=」1〞 AND (Ipaddress = 「*」 OR Ipaddress LIKE 「\R」)
MYSQLGetUID SELECT Uid FROM users WHERE User=」\L」 AND Status=」1〞 AND (Ipaddress = 「*」 OR Ipaddress LIKE 「\R」)
MYSQLGetGID SELECT Gid FROM users WHERE User=」\L」 AND Status=」1〞 AND (Ipaddress = 「*」 OR Ipaddress LIKE 「\R」)
MYSQLGetDir SELECT Dir FROM users WHERE User=」\L」 AND Status=」1〞 AND (Ipaddress = 「*」 OR Ipaddress LIKE 「\R」)
MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User=」\L」 AND Status=」1〞 AND (Ipaddress = 「*」 OR Ipaddress LIKE 「\R」)
MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User=」\L」 AND Status=」1〞 AND (Ipaddress = 「*」 OR Ipaddress LIKE 「\R」)
MySQLGetRatioUL SELECT ULRatio FROM users WHERE User=」\L」 AND Status=」1〞 AND (Ipaddress = 「*」 OR Ipaddress LIKE 「\R」)
MySQLGetRatioDL SELECT DLRatio FROM users WHERE User=」\L」 AND Status=」1〞 AND (Ipaddress = 「*」 OR Ipaddress LIKE 「\R」)
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User=」\L」 AND Status=」1〞 AND (Ipaddress = 「*」 OR Ipaddress LIKE 「\R」)
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User=」\L」 AND Status=」1〞 AND (Ipaddress = 「*」 OR Ipaddress LIKE 「\R」)
$ sudo chmod g=o= /etc/pure-ftpd/db/mysql.conf
$ sudo /etc/init.d/pure-ftpd-mysql restart
三、實現FTP用戶的Web管理
1、安裝User manager for PureFTPd
$ cd ~
$ wget http://machiel.generaal.net/files/pureftpd/ftp_v2.1.tar.gz
$ cd /var/www
$ sudo tar xfvz ~/ftp_v2.1.tar.gz
2、配置User manager for PureFTPd
我們來修改/var/www/ftp/config.php:
$ sudo nano /var/www/ftp/config.php
[...]
$LANG = 「Chinese」;
$LocationImages = 「images」;
$DBHost = 「127.0.0.1〞;
$DBLogin = 「ftpadmin」;
$DBPassword = 「ftpadminPassword」;
$DBDatabase = 「ftpusers」;
$FTPAddress = 「ubox.mytest.com:21〞;
$DEFUserID = 「2001〞;
$DEFGroupID = 「2001〞;
$UsersFile = 「/etc/passwd」;
$GroupFile = 「/etc/group」;
$StyleSheet = 「style/default.css.php」;
$EnableQuota = 1;
$EnableRatio = 1;
[...]
上述配置中,MySQL數據庫的用戶名、密碼、數據庫名及FTPAddress,請按自己的實際情況修改。最後兩行設置,默認啟用Quota和速率限制。
3、設置User manager for PureFTPd 管理員
$ mysql -u root -p
mysql> USE ftpusers;
mysql> CREATE TABLE IF NOT EXISTS `admin` (
`Username` varchar(35) NOT NULL default 」,
`Password` char(32) NOT NULL default 」,
PRIMARY KEY (`Username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
然後,我們向「admin」表中,插入一個名為ftpadmin的管理員,該管理員的密碼為「ftpadminPassword」:
INSERT INTO `admin` (`Username`, `Password`) VALUES
(』ftpadmin』, MD5(』ftpadminPassword』));
mysql> quit
沒有留言:
張貼留言