LAMP是什麼這裏就不做過多的介紹了,下面將在一臺默認安裝有rhel5.8的系統上安裝配置LAMP平臺以及apache的各種應用,及php的一些經典應用.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
目錄
一.安裝apache,php,mysql
二.配置基於域名的虛擬主機
三.配置用戶認證
四.配置HTTPS
五.配置個人主頁
六.配置別名
七.配置客戶端訪問控制
八.安裝PhpMyAdmin
九.安裝Discuz論壇
注: 二到七都是apache各種應用場景的配置;
八是安裝一個基於PHP語言寫的MySQL數據庫網頁管理工具;
九是安裝一個PHP的經典應用Discuz的論壇;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一.安裝apache,php,mysql
1. 使用yum安裝,使用yum默認安裝好不許要做任何配置就是一個基本的LAMP平臺,RHEL5.8的系統上php提供了兩個版本,這裏主要是以5.3的爲例
- #yum -y install httpd php53 php53-mysql php53-mbstring mysql-server
2.啓動httpd服務及mysql服務
- #service httpd start
- #service mysqld start
- #chkconfig httpd on
- #chkconfig mysqld on
二.配置基於域名的虛擬主機
1. 編輯httpd主配置文件
- #vim /etc/httpd/conf/httpd.conf 修改內容如下
- #DocumentRoot "/var/www/html" #註釋此行 一般在文件的280上下
- Include conf/vhost/*.conf #虛擬主機的配置文件統一存放到/etc/httpd/conf/vhost/*conf
- NameVirtualHost *:80
- 創建存放虛擬主機配置文件的目錄
- #mkdir /etc/httpd/conf/vhost
2.配置虛擬主機,[站點一 www.andy.com 站點二 pma.andy.com 站點三 bbs.andy.com .三個 站點的根目錄在/web/{www,pma,bbs}]
- #vim /etc/httpd/conf/vhost/www.andy.com.conf #內容如下
- <VirtualHost *:80>
- ServerAdmin [email protected] #管理員的郵箱
- DocumentRoot /web/www #網站根目錄
- ServerName www.andy.com #域名
- ErrorLog logs/www.andy.com.err.log #錯誤日誌
- CustomLog logs/www.andy.com.access.log common #訪問日誌
- </VirtualHost>
- #vim /etc/httpd/conf/vhost/pma.andy.com.conf #內容如下
- <VirtualHost *:80>
- ServerAdmin [email protected]
- DocumentRoot /web/pma
- ServerName pma.andy.com
- ErrorLog logs/pma.andy.com.err.log
- CustomLog logs/pma.andy.com.access.log common
- </VirtualHost>
- #vim /etc/httpd/conf/vhost/bbs.andy.com.conf
- <VirtualHost *:80>
- ServerAdmin [email protected]
- DocumentRoot /web/bbs
- ServerName bbs.andy.com
- ErrorLog logs/bbs.andy.com.err.log
- CustomLog logs/bbs.andy.com.access.log common
- </VirtualHost>
3.建立網站根目錄及建立測試頁面
- #mkdir -p /web/{www,pma,bbs}
- #echo "www" > /web/www/index.html
- #echo "pma" > /web/pma/index.html
- #echo "bbs" > /web/bbs/index.html
4.啓動httpd服務及測試三個站點是否能正常訪問,首先要保證三個域名要能解析或者寫 入hosts文件,這裏使用DNS服務器解析的.
- #service httpd start
三.配置用戶認證
apache默認的情況下,允許客戶端匿名訪問.可能在某些時候我們需要用戶輸入用戶
名密碼後才能看到網站的內容的時候,就可以配置用戶認證.apche可以實現基本身份
認證(密碼在傳輸的過程中使用明文傳輸),和摘要認證(使用hash算法傳輸密碼).
apche 對基本身份認證有良好的支持,下面就配置使用基本身份認證用戶來源於
htpasswd工具生成的用戶名密碼認證,和mysql數據庫.
1. 使用htpasswd命令生成的用戶名密碼認證方式
1.1 生成用戶名密碼的文件
- #htpasswd -cm /etc/httpd/conf/.auth andy
- #htpasswd -m /etc/httpd/conf/.auth test
- 創建兩個用戶andy test
- -c 選項是創建一個新的文件,如果是第一次生成需要-c選項
- -m 選項是使用md5加密存放密碼
- -D 選項是刪除一個用戶 如#htpasswd -D /etc/httpd/conf/.auth name
1.2 配置對網站www.andy.com做身份認證對應網站根目錄爲/web/www
- #vim /etc/httpd/conf/vhost/www.andy.com.conf 內容如下
- <VirtualHost *:80>
- ServerAdmin [email protected]
- DocumentRoot /web/www
- ServerName www.andy.com
- ErrorLog logs/www.andy.con.err.log
- CustomLog logs/www.andy.com.access.log common
- <Directory "/web/www">
- Options None
- AllowOverride AuthConfig #開啓認證
- AuthType Basic #認證類型
- AuthName xxxx #自己隨便定義
- AuthUserFile /etc/httpd/conf/.auth #指定認證文件的位置
- Require valid-user #用戶訪問權限,這裏表示允許所有用戶訪問
- </Directory>
- </VirtualHost>
- 重新啓動httpd服務
- #service httpd restart
1.3 測試認證
可以看到輸入用戶名密碼就行了
2. 用戶來源使用mysql數據庫認證
2.1使用mysql數據庫認證需要安裝一個認證模塊mod_auth_mysql
- #yum -y install mod_auth_mysql
2.2 創建認證的數據庫及表和用戶
- #mysql
- CREATE DATABASE auth;
- USE auth
- CREATE TABLE users(name char(16),pwd char(16),PRIMARY KEY(name));
- INSERT INTO users(name,pwd) VALUES ('andy',ENCRYPT('redhat'));
- INSERT INTO users(name,pwd) VALUES ('test',ENCRYPT('redhat'));
- CRANT SELECT ON auth.* TO auth@localhost IDENTIFIED BY 'passwd';
- FLUSH PRIVILEGES;
- #上面的sql語句是創建一個auth的數據庫跟users的表和兩個字段name pwd
- #然後添加兩個用戶andy test 密碼爲redhat並加密存放
2.3 配置對網站www.andy.com做身份認證對應網站根目錄爲/web/www
- <VirtualHost>
- ServerAdmin [email protected]
- DocumentRoot /web/www
- ServerName www.andy.com
- ErrorLog logs/www.andy.com.err.log
- CustomLog logs/www.andy.com.access.log common
- <Directory "/web/www">
- Options None
- AllowOverride AuthConfig
- AuthType Basic
- AuthName andyauth
- AuthMySqlEnable on #開啓數據庫認證
- AuthMySqlUser auth #訪問mysql數據庫的用戶即上面創建那個用戶
- AuthMySqlPassword passwd #訪問mysql數據庫用戶的密碼
- AuthMySqlDB auth #用戶認證的數據庫
- AuthMySqlUserTable users #用戶認證的表
- AuthMySqlNameField name #用戶名的字段
- AuthMySqlPasswordField pwd #密碼的字段
- Requidre valid-user
- </Directory>
- </VirtualHost>
- 重啓httpd服務
- #service httpd restart
注:我們知道http協議在傳輸的過程中是明文傳送的,像我們配置的基於基本用戶認證
的方式,用戶名密碼也是明文傳送的,這樣是很不安全的,下面將配置HTTPS使用ssl加密傳輸數據.
四.配置https,使用自頒發證書實現
把www.andy.com網站配置成https 網站根目錄位於/web/www
1.安裝mod_ssl模塊
- #yum -y install mod_ssl
2.創建網站的私鑰以及網站證書, {由於自頒發證書是隻https所使用的證書不是由一個權威的CA機構所頒發,這樣的話在客戶端在訪問網站時會提示“該證書不是由您沒有信
任的公司所頒發“ 或類似警告信息.}
- 創建用於存放證書的目錄
- #mkdir /etc/httpd/.sslkey
- 建立網站私鑰文件
- #cd /etc/httpd/.sslkey
- #openssl genrsa -out https.key
- 創建網站證書文件,在這裏需要注意的是,創建證書的過程會提示輸入一些信息可以根據自己的需要去輸入,
- 但“Common Name”這項必須輸入的是客戶端訪問網站時的FQDN 即域名
- #openssl req -new -x509 -key https.key -out https.crt
- 處於安全的考慮,可以把證書存放目錄的權限設爲400
- #chmod 400 /etc/httpd/.sslkey
3.配置www.andy.com爲https
- #vim /etc/httpd/conf/vhost/www.andy.com.conf 內容如下
- NameVirtualHost *:443
- <VirtualHost *:443>
- ServerAdmin [email protected]
- DocumentRoot /web/www
- ServerName www.andy.com
- SSLEngine on #開啓ssl
- SSLCertificateFile /etc/httpd/.sslkey/https.crt #指定網站證書文件
- SSLCertificateKeyFile /etc/httpd/.sslkey/https.key #指定網站私鑰文件
- 如果不需要認證的話下面的可以不配置
- <Directory "/web/www">
- Options None
- AllowOverride AuthConfig
- AuthType Basic
- AuthName andyauth
- AuthMySqlEnable on
- AuthMySqlUser auth
- AuthMySqlPassword passwd
- AuthMySqlDB auth
- AuthMySqlUserTable users
- AuthMySqlNameField name
- AuthMySqlPasswordField pwd
- Requidre valid-user
- </Directory>
- </Directory>
- 重啓httpd服務
- #service httpd restart
4.測試, 需要注意的是訪問url是https://www.andy.com
上圖可以看到由於證書不是信任的CA機構頒發才提示此信息,不過沒關係點擊 “仍然繼續” 出現下圖
可以看到提示輸入用戶名密碼,這個是由於配置了用戶認證,現在用戶名密碼就是經過ssl加密過後在互聯網上傳輸的.
五.配置個人主頁
所謂個人主頁其實就是apache以每個系統用戶家目錄中指定的目錄來做爲一個網站
實在還不明白的話看下面配置就知道了,配置很簡單只需要在apache的主配置文件裏
啓用UserDir選項即可.配置如下
1.編輯主配置文件,啓用UserDir
- #vim /etc/httpd/conf/httpd.conf
- #UserDir disable 默認是禁用的需要註釋掉
- UserDir public_html 啓用個人主頁
- 上面的選項在rpm包安裝的apache主配置文件355行上下
ok 配置就結束了,就這麼簡單,下面來創建個系統用戶測試測試
2.創建系統用戶
- 創建redhat用戶
- #useradd redhat
- 創建用於存放網頁的目錄
- #mkdir /home/redhat/public_html
- 修改redhat用戶家目錄權限,因爲我們知道運行httpd的用戶是apache用戶,我們訪問網頁的時候apache用戶要讀取頁面文件,
- 而用戶的家目錄默認只有用戶自己有權限讀寫,
- #chmod 705 -R /home/redhat/
- 建立測試頁面
- #echo "<h1>redhat</h1>" /home/redhat/public_html/index.html
- 重啓httpd服務
- #service httpd restart
3.測試.訪問用戶的個人主頁的URL是http://服務器IP地址或域名/~用戶名
可以看到輸入http://www.andy.com/~redhat 訪問到redhat用戶的主頁了,但是這樣的URL顯然不是很友好,我們可以把用戶的網頁目錄鏈接到某個網站的
根目錄下就可以通過http://某網站的域名/用戶 訪問了
六.別名配置
對於有些太長的URL在apache中可以通過別名的配置減少客戶端URL的長度
1.比如我們正常訪問的URL爲http://pma.andy.com/phpmyadmin可以通過別名設置爲http://pam.andy.com/pam 配置如下
- #vim /etc/httpd/conf/vhost/pam.andy.com.conf 內容如下
- <VirtualHost *:80>
- ServerAdmin [email protected]
- DocumentRoot /web/pma
- ServerName pma.andy.com
- ErrorLog logs/pma.andy.com.err.log
- CustomLog logs/pma.andy.com.access.log common
- Alias /pma /web/pma/phpmyadmin
- </VirtualHost>
- 重啓httpd服務
- #service httpd restart
2.除了URL別名外還可以使用ServerAlias,
比如我們通過http://pma.andy.com能訪問到/web/pma下面的內容外還可以使用http://phpmyadmin.andy.com訪問問到/web/pma下面的內容 需要注意的是phpmyadmin.andy.com 這個域名客戶端要能通過DNS服務器解析,我試過添加hosts文件貌似不行 ,ServerAlias配置如下
- #vim /etc/httpd/conf/vhost/pma.andy.com.conf 內容如下
- <VirtualHost *:80>
- ServerAdmin [email protected]
- DocumentRoot /web/pma
- ServerName pma.andy.com
- ErrorLog logs/pma.andy.com.err.log
- CustomLog logs/pma.andy.com.access.log common
- Alias /pma /web/pma/phpmyadmin
- ServerAlias phpmyadmin.andy.com
- </VirtualHost>
- 重新啓動httpd服務
- #service httpd restart
3.除了上面兩種之外還可以使用腳本別名ScriptAlias
處於安全的考慮apache中的CGI腳本只運行在特定的目錄下運行,那麼我們希望在其他目錄中運行CGI腳本的時候就可以使用ScriptAlias定義腳本別名來實現
比如說我們希望在/web/pam/cgi目錄運行腳本 如下
- #vim /etc/httpd/conf/vhost/pma.andy.com.conf 內容如下
- <VirtualHost *:80>
- Options ExecCGI
- ServerAdmin [email protected]
- DocumentRoot /web/pma
- ServerName pma.andy.com
- ErrorLog logs/pma.andy.com.err.log
- CustomLog logs/pma.andy.com.access.log common
- ScriptAlias /cgi /web/pma/cgi
- </VirtualHost>
- 重新啓動httpd服務
- #service httpd restart
七.客戶端訪問控制
在默認的情況下apache允許所有客戶端訪問,我們可以通過一系列的訪問權限對客戶端的來源進行訪問控制,
(1) Order Allow,Deny
默認拒絕所有,當Allow from 跟Deny from 衝突的時候Deny from 優先
(2) Oreer Deny,Allow
默認允許所有,當Allow from 跟Deny from 衝突的時候Allow from 優先
(客戶端的來源定義方法)如下
IP指定單一主機 192.168.0.1
指定網段 192.168.0.0/24
指定網段 192.168.0.0/255.255.255.0
域名單一主機 test.andy.com
域名指定範圍 .andy.com
所有客戶端 all
1.下面給出兩個例子
- #vim /etc/httpd/conf/vhost/pma.andy.com.conf 如下
- <VirtualHost *:80>
- ServerAdmin [email protected]
- DocumentRoot /web/pma
- ServerName pma.andy.com
- ErrorLog logs/pma.andy.com.err.log
- CustomLog logs/pma.andy.com.access.log common
- <Directory "/web/pma">
- Order Allow,deny
- Allow From all
- Deny From 192.168.0.0/24
- Deny From .andy.com
- </Directory>
- </VirtualHost>
- 默認拒絕所有,
- 除了192.168.0.0/24網段跟andy.com域的所有主機不能訪問外,其他都允許訪問/web/pma目錄裏的內容
- #vim /etc/httpd/conf/vhost/pma.andy.com.conf 如下
- <VirtualHost *:80>
- ServerAdmin [email protected]
- DocumentRoot /web/pma
- ServerName pma.andy.com
- ErrorLog logs/pma.andy.com.err.log
- CustomLog logs/pma.andy.com.access.log common
- <Directory "/web/pma">
- Order Deny,Allow
- Deny From all
- Allow From 192.168.0.1
- Allow From client.andy.com
- </Directory>
- </VirtualHost>
- 默認允許所有,
- 除了192.168.0.1主機跟client.andy.com主機外其他都不能訪問此/web/pma目錄的內容
備註:Allow From ,Deny From 可以根據自己的需要隨意調整,
八.配置安裝PhpMyAdmin,
phpmyadmin 是一個由php語言寫的mysql數據庫管理工具,基於網頁的形式,配置和使用都非常簡單,
1.下載,並配置phpmyadmin,安裝完成後我們期望使用http://pma.andy.com訪問到phpmyadmin, 站點根目錄位於/web/pma
- 下載頁面 自行選擇相應的版本
- http://www.phpmyadmin.net/home_page/downloads.php
- 下載完成後配置如下
- #tar xavf phpMyAdmin-3.5.1-all-languages.tar.gz
- #mv phpMyAdmin-3.5.1-all-languages/* /web/pma/
- #mv /web/pma/config.inc.php /web/pma/config.inc.php
- 處於安全的考慮,需要修改下cookie認證的字符串
- #vim /web/pma/config.inc.php
- $cfg['blowfish_secret'] = 'xxx'; xxx自己隨便定義一個字符串就可以了,這個配置項一般在文件中17行上下
- 由於上面安裝mysql的時候沒有設置管理員密碼,phpmyadmin默認不允許空密碼登錄,
- #mysqladmin -u root password redhat
2.測試,在瀏覽器中輸入http://pma.andy.com就可以看到一個登錄界面,輸入mysql的用戶名密碼,就可以享受phpmyamin的旅程了,需要注意的是上面說過http協議在網絡中傳輸數據時是明文的方式,所以用戶名密碼也是明文傳輸的,可以以使用https這樣的話,數據在傳輸的過程中是通過ssl加密的,https的配置方法上面有介紹,這裏就做介紹了.
可以看到,能正常使用了.
九.配置安裝php經典應用Discuz論壇
安裝一個完整的論壇需要裝兩個程序1.用戶管理中心(ucenter) 2.論壇程序(dsicuz),安裝完成後我們期望使用http://bbs.andy.com訪問到論壇 站點根目錄位於/web/bbs 配置如下
1.下載並配置ucenter和dsicuz
- #wget http://download.comsenz.com/UCenter/1.5.2/UCenter_1.5.2_SC_UTF8.zip
- #wget http://download.comsenz.com/Discuz/7.2/Discuz_7.2_SC_UTF8.zip
- #unzip UCenter_1.5.2_SC_UTF8.zip -d ucenter
- #unzip unzip Discuz_7.2_SC_UTF8.zip -d discuz
- #mv ucenter/upload /web/bbs/ucenter
- #mv discuz/upload/* /web/bbs/
- #cd /web/bbs/ucenter
- #touch data/config.inc.php
- #chmod a+w data/config.inc.php data/ data/cache/ data/view/ data/avatar/ data/logs/ data/backup/ data/tmp/
- #cd /web/bbs/
- #chmod a+w config.inc.php p_w_uploads/ forumdata/ forumdata/cache/ forumdata/templates/ forumdata/threadcaches/ forumdata/logs/ uc_client/data/cache/
- #vim /etc/php.ini 修改php配置文件裏的short_open_tag項
- short_open_tag = On 一般在文件中230行上下
2.創建論壇所需數據庫
- #mysql -u root -p
- CREATE DATABASE bbs;
- GRANT ALL ON bbs.* TO bbs@localhost IDENTITFIED BY 'passwd';
- FLUSH PRIVILEGES;
3.安裝ucenter用戶管理中心,在瀏覽器中輸入http://bbs.andy.com/ucenter/install
3.3 配置數據庫信息,這裏輸入的信息就是剛剛創建的數據及用戶名密碼, 創始人密碼那裏是指 ucenter用戶管理中心的密碼 自己定義 >下一步
3.4 安裝數據庫,數據庫安裝完成ucenter基本就安裝好了
3.5 ucenter登錄界面 ,這裏需要注意的是密碼是上面自己定義的創始人密碼, 驗證碼有點不清晰,多點幾下登錄看到清晰的再輸入驗證碼
4. 利用ucenter後臺安裝discuz論壇
4.1 在ucenter用戶管理中心>點擊應用管理>點擊添加新應用(出現下圖) >在應用程序安裝地址中輸入http://bbs.andy.com/install 然後點擊安裝
4.2 是否同意授權
4.3 檢查一系列配置
4.4 設置運行環境, 這裏需要注意的是域名一定要是客戶端能通過dns服務器解析的,dns服務器的配置見上篇博客
4.5 配置安裝數據庫 這裏輸入的管理員密碼是論壇的管理員密碼
4.6 正在安裝數據庫
4.7 輸入個人信息
4.8 安裝成功,可以看到論壇的頁面了
ok.配置到這裏論壇已經安裝成功了訪問論壇的url是http://bbs.andy.com 訪問用戶管理中心的url是http://bbs.andy.com/ucenter 慢慢享受discuz論壇之旅吧,
配置到這裏整篇博客也算是完工了,上面涉及到的知識點都可以根據自己的需求靈活應用.
感言:有點累,睡一會兒去.