基於LAMP架構搭建BBS論壇或者博客


使用源碼方式基於LAMP架構搭建BBS論壇或者博客
本章的目標是完全通過源代碼編譯安裝,組建一個LAMP的環境,並運行一個PHP寫的web網站。

思考:yum工具搭建lamp環境和源碼包搭建的區別

  • rpm版本
    安裝方便,升級、卸載都很靈活,很難或者無法定製主要組件的功能,適合批量部署
  • 源碼包編譯
    根據業務需求定製,前提是必須對平臺的功能需要非常瞭解:卸載、升級、安裝並不是很方便靈活
  • 生產環境如何做
    ·上線前,在測試環境中編譯安裝並且調試完畢後,把編譯後的源碼同步到其餘軟硬環境一樣的機器,直接 make install即可
    ·上線前,在測試環境中編譯安裝並且調試完畢後,把源碼包封裝成rpm包,再使用批量化部署軟件進行統一安裝

一、項目簡介

LAMP(Linux+Apache+MySQL+Perl/PHP/Python)的一個縮寫,它們通常一起使用來運行動態網站。雖然這些開放源代碼程序本身並不是專門設計成同另外幾個程序一起工作的,但由於它們的免費和開源,這個組合開始流行(大多數Linux發行版本捆綁了這些軟件),這就導致這些組件經常在一起使用。LAMP網站架構是目前國際流行的web框架,是國際上非常成熟的架構框架,很多流行的商業應用都是採取這個架構的。LAMP具有通用、跨平臺、高性能、低價格的優勢,因此lamp無論是性能、質量還是價格都是企業搭建網站的首選平臺,現已爲商用型web架構代名詞。

 

二、環境準備

1.需要準備的軟件包

共享文件夾/LAMP下
apr-1.5.2.tar.bz2
apr-util-1.5.4.tar.bz2
httpd-2.4.12.tar.bz2
php-5.6.11.tar.xz
mysql-5.6.25.tar.gz

http://archive.apache.org/dist/
https://www.php.net/releases/

 

2.安裝前環境準備

說明:
如果你在一臺機器啓動兩個apache和mysql,那麼很可能造成一定的衝突,所以爲了減少不必要的麻煩,首先停止卸載它們
由於整個環境會設計比較多的依賴關係包,所以我們先將一些依賴包裝上。(根據不同的環境可能不僅限於這些包)

清空環境,安裝相應的軟件包
yum -y groupinstall "Development tools"         開發工具包
yum -y groupinstall "Desktop Platform Development"      桌面開發工具包(圖形化相關包)
yum install cmake
yum install ncurses-devel

 

3.編譯方式 (講究順序)

Apache–>MySQL–>php 或者 MySQL–>Apache–>php

說明
1.apache必須要先於PHP安裝,因爲PHP是作爲apache的模塊libphp.so,被apache加載調用
2.apache和MySQL之間並沒有直接先後順序的依賴,誰先誰後無所謂
3.在PHP-5.3版本前,MySQL必須先於php的編譯,因爲PHP需要實現連接數據庫的功能,它通過MySQL的接口才能編譯出該功能
4.在PHP-5.3版本或者之後,PHP已經集成了一套連接MySQL數據的代碼,並不依賴MySQL的接口,這時,MySQL和PHP的編譯順序也就無所謂了

 

三、編譯安裝MySQL

所需要的包:
apr-1.5.2.tar.bz2
apr-util-1.5.4.tar.bz2
httpd-2.4.12.tar.bz2
php-5.6.11.tar.xz
mysql-5.6.25.tar.gz

清空環境,安裝相應的軟件包

yum -y groupinstall "Development tools"         開發工具包
yum -y groupinstall "Desktop Platform Development"      桌面開發工具包(圖形化相關包)
yum install cmake
yum install ncurses-devel
版本:mysql-5.6.25.tar.gz
需求:
1.安裝目錄	/mysql25/mysql_basedir
2.數據目錄	/mysql25/data
3.端口		3307
4.socket文件	/mysql25/mysql_basedir

安裝:
1.官方網站下載相應的軟件包
mysql-5.6.25.tar.gz
2.解壓軟件包
[root@lamp ~]# cd /LAMP/
[root@lamp LAMP]# ll
total 32428
-rwxr-xr-x 1 root root 33203321 Apr 29 18:06 mysql-5.6.25.tar.gz
//-x:解壓   -f:file    -C:指定解壓目錄
[root@lamp LAMP]# tar -xf mysql-5.6.25.tar.gz -C /usr/src/
[root@lamp LAMP]# ls /usr/src
debug  kernels  mysql-5.6.25

3.安裝
1)創建相應的目錄和用戶並授權
[root@lamp LAMP]# mkdir -p /mysql25/mysql_basedir 
[root@lamp LAMP]# mkdir /mysql25/data
[root@lamp LAMP]# id mysql  
id: mysql: No such user
//-r系統用戶的uid是 1~499
//-r創建一個系統用戶,-s指定默認的shell   /sbin/nologin  不能像其他用戶一樣登錄操作系統
[root@lamp LAMP]# useradd -r mysql -s /sbin/nologin 
[root@lamp LAMP]# su - mysql
su: warning: cannot change directory to /home/mysql: No such file or directory
This account is currently not available.
[root@lamp LAMP]# id mysql
uid=496(mysql) gid=493(mysql) groups=493(mysql)
[root@lamp LAMP]# ll -d /mysql25/
drwxr-xr-x 4 root root 4096 Apr 29 18:32 /mysql25/

[root@lamp LAMP]# chown -R mysql.mysql /mysql25/    更改屬主和屬組爲mysql
[root@lamp LAMP]# ll -d /mysql25/
drwxr-xr-x 4 mysql mysql 4096 Apr 29 18:32 /mysql25/
[root@lamp LAMP]# ll /mysql25/
total 8
drwxr-xr-x 2 mysql mysql 4096 Apr 29 18:32 data
drwxr-xr-x 2 mysql mysql 4096 Apr 29 18:32 mysql_basedir

2)進入到解壓後的路徑進行安裝
[root@lamp ~]# cd /usr/src/mysql-5.6.25/
[root@lamp mysql-5.6.25]# pwd
/usr/src/mysql-5.6.25
[root@lamp mysql-5.6.25]# vim /usr/src/mysql-5.6.25/cmake.sh
這個反斜槓是對換行符的轉義,把以下添加進去。下下面已經做好了去除文字的
cmake . \
-DCMAKE_INSTALL_PREFIX=/mysql25/mysql_basedir/ \    安裝目錄   
-DMYSQL_DATADIR=/mysql25/data \        數據目錄
-DENABLED_LOCAL_INFILE=1 \             開啓外部加載功能
-DWITH_INNOBASE_STORAGE_ENGINE=1 \     指定打開引擎
-DSYSCONFDIR=/mysql25/mysql_basedir/etc \     指定MySQL配置文件
-DMYSQL_UNIX_ADDR=/mysql25/basedir/mysql.sock \    指定sock文件放在安裝目錄裏
-DMYSQL_TCP_PORT=3307 \               指定端口號
-DDEFAULT_CHARSET=utf8 \             設置字符集
-DDEFAULT_COLLATION=utf8_general_ci \           設置校驗規則
-DWITH_EXTRA_CHARSETS=all \              設置擴展字符集
-DMYSQL_USER=mysql                   指定用戶

[root@bogon mysql-5.6.25]# chmod +x cmake.sh
[root@bogon mysql-5.6.25]# ./cmake.sh
./cmake.sh: line 1: cmake: command not found
[root@bogon mysql-5.6.25]# yum install cmake
[root@bogon mysql-5.6.25]# ./cmake.sh

★編譯
[root@bogon mysql-5.6.25]# make

安裝
[root@bogon mysql-5.6.25]# make install

總結:
1.配置的時候,指定安裝的路徑,該路徑可以存在也可以不存在,建議事先創建並且更改權限chown
2.系統默認自動創建,權限是root,需要自己更改,因此自己事先創建比較好
如果自動創建的話初始化會 默認到 /var/lib/mysql/ 而不是指定的 mysql25/data
cmake . \
-DCMAKE_INSTALL_PREFIX=/mysql25/mysql_basedir/ \
-DMYSQL_DATADIR=/mysql25/data \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DSYSCONFDIR=/mysql25/mysql_basedir/etc \
-DMYSQL_UNIX_ADDR=/mysql25/basedir/mysql.sock \
-DMYSQL_TCP_PORT=3307 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_USER=mysql


根據需求配置:
查看官方文檔
https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html 

在這裏插入圖片描述

後續配置:(官方文檔。。。2.2)
shell> scripts/mysql_install_db --user=mysql    默認初始化數據庫到/var/lib/mysql
shell> bin/mysqld_safe --user=mysql &     啓動mysql,&放在後臺執行
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server  以service啓動

實際環境操作:
初始化數據庫,初始化數據到/mysql25/data
[root@bogon mysql25]# cd mysql_basedir/
[root@bogon mysql_basedir]#scripts/mysql_install_db --user=mysql --basedir=/mysql25/mysql_basedir/ --datadir=/mysql25/data/

啓動mysql
[root@bogon mysql_basedir]# bin/mysqld_safe --user=mysql     //如果一直都Starting說明正常
[root@bogon mysql_basedir]# ps -ef|grep mysql   //是否啓動成功
[root@bogon mysql_basedir]# netstat -nltp|grep 3307

********************************************
tail -f /var/log/mysqld.log  如果啓動失敗,可以進行排錯
#ls /etc/my.cnf
#rpm -qf /etc/my.cnf
#cat /etc/my.cnf   因爲這個默認安裝的配置文件。  怎麼知道要去找這個文件?
#/mysql25/mysql_basedir/bin/mysql --help   裏面會說。 Default options are read   默認情況下先去查這個文件,然後再去讀取下一個,如果衝突,以最後一個爲準
原因:在啓動數據庫的時候,默認會到/var/lib/mysql裏去找相應的文件,但是我們指定的數據目錄/mysql25/data
因爲系統有一個默認的配置文件/etc/my.cnf,在該文件中定義了數據目錄是/var/lib/mysql
啓動的時候,要加載配置文件。 
解決:
方法1.刪除/etc/my.cnf
方法2.修改/etc/my.cnf文件
********************************************

如果希望使用service方式啓動mysql,可以做如下配置:
[root@bogon mysql_basedir]# cp /mysql25/mysql_basedir/support-files/mysql.server /etc/init.d/mysql25
補充:如果是用二進制安裝的話,就要去/etc/init.d/mysql25 指定安裝路徑和數據目錄
[root@bogon mysql_basedir]# service mysql25 start
Starting MySQL SUCCESS! 

[root@bogon mysql_basedir]# /mysql25/mysql_basedir/bin/mysql
不想這麼方法,輸入這麼長才登錄。  環境變量問題
臨時更改:
[root@bogon mysql_basedir]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin
[root@bogon mysql_basedir]# export PATH=/mysql25/mysql_basedir/bin:$PATH
[root@bogon mysql_basedir]# mysql
mysql>
永久更改:
[root@bogon mysql_basedir]# vim /etc/profile   最後一行加↓
export PATH=/mysql25/mysql_basedir/bin:$PATH
[root@bogon mysql_basedir]# source /etc/profile   //重新讀取該配置文件


mysql設置密碼:
[root@lamp ~]# mysqladmin -u root password '123'
Warning: Using a password on the command line interface can be insecure.
[root@lamp ~]# mysql -u root -p   這樣登錄更安全  

 

四、編譯安裝Apache

環境準備
rpm -q httpd
rpm -e httpd --nodeps
先清空環境(卸載2.2版本)

1.安裝依賴包apr

說明:
在RHEL6.5下直接編譯apache的2.4版本,會報下面的錯誤:
checking for APR… configure: WARNING: APR version 1.4.0 or later is required,found 1.3.9
configure: WARNING: skipped APR at apr-1-config, version not acceptable

原因:表示系統自帶的apr軟件版本爲1.3.9,但需要1.4.0以上的版本

解決方法:
第一種:把apache降爲2.2系列
第二種:去下載新版本apr先編譯,再編譯apache調用它(選擇第二種)

安裝apr軟件:
# tar -xf apr-1.5.2.tar.bz2 -C /usr/src/
# cd /usr/src/
[root@bogon src]# ls
apr-1.5.2  apr-util-1.5.4  debug  kernels  mysql-5.6.25
[root@bogon src]# cd apr-1.5.2/
[root@bogon apr-1.5.2]# ./configure    默認會安裝到/usr/local/
#make
#make install

# tar -xf apr-util-1.5.4.tar.bz2  -C /usr/src/
# cd /usr/src
[root@bogon src]# ls
apr-1.5.2  apr-util-1.5.4  debug  kernels  mysql-5.6.25
[root@bogon src]# cd apr-util-1.5.4/
[root@bogon apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config
                            指定軟件apr的路徑
#make
#make install

安裝Apache爲什麼安裝apr ——因爲是依賴包,需要用到 apr的庫文件
現在apr是安裝到 /usr/local/apr/下,Apache找不到,所以需要重新指定路徑 用Idconfig

思考:一個軟件的庫文件是有可能被其他軟件所調用,那麼其他軟件能否找到你的庫文件呢?

  • 一般來說,庫文件安裝到/lib,/lib64,/usr/lib/,/usr/lib64等,都可以找到:但是如果一個軟件A把庫文件安裝到/usr/local/A/lib下,就要把這個路徑添加到 ldconfig 命令可以找到的路徑列表裏去,別人才能找到。

  • ldconfig是一個動態鏈接庫管理命令:主要用途是在默認搜索目錄(/lib,/lib64,/usr/lib/,/usr/lib64/)
    一級動態庫配置文件/etc/ld.so.conf中所列的目錄中搜索出可共享的動態鏈接庫。

問題:怎樣將庫文件的指定安裝路徑加入到 ldconfig命令的搜索列表中?

方法1:在/etc/ld.so.conf這個主配置文件裏面加上一行,寫上讓別人要查找庫文件的路徑
★方法2:在/etc/ld.so.conf.d/目錄下創建一個*.conf結尾的文件,裏面加入該路徑即可

#echo /usr/local/apr/lib/ > /etc/ld.so.conf.d/lamp.conf
#ldconfig    加入該路徑後,使用此命令讓其生效

2.安裝httpd軟件

版本:httpd-2.4.12.tar.bz2
1.下載 http://archive.apache.org/dist/
2.解壓
3.安裝(解壓的目錄裏安裝)  #make   #makeinstall   配置——》編譯——》安裝

2.解壓
#cd /LAMP/
#tar -xf httpd-2.4.12.tar.bz2 -C /usr/src/     這個指定解壓路徑不是必須的,一般情況下都會在這
[root@bogon LAMP]# cd /usr/src/httpd-2.4.12/

3.安裝
配置:放到 apache.sh,下下面有配置說明
./configure \
--enable-modules=all \
--enable-mods-shared=all \
--enable-so \
--enable-rewrite \
--with-mpm=prefork \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr/bin/apu-1-config

[root@lamp httpd-2.4.12]# vim apache.sh
[root@lamp httpd-2.4.12]# chmod +x apache.sh 
[root@lamp httpd-2.4.12]# cat apache.sh
./configure \
--enable-modules=all \
--enable-mods-shared=all \
--enable-so \
--enable-rewrite \
--with-mpm=prefork \
--with-apr=/usr/local/apr/bin/apr-1-config \
--with-apr-util=/usr/local/apr/bin/apu-1-config
[root@lamp httpd-2.4.12]# ./apache.sh 

***************************************************
如果報錯,[root@lamp httpd-2.4.12]# yum list|grep pcre    檢查有沒有pcre
發現已安裝,那麼問題是pcre-devel沒有安裝
[root@lamp httpd-2.4.12]# yum -y install pcre-devel
安裝之後再次執行配置腳本apache.sh
***************************************************

[root@lamp httpd-2.4.12]# make
[root@lamp httpd-2.4.12]# make install        源碼包默認安裝到/usr/local/apache2/
[root@lamp httpd-2.4.12]# ls /usr/local/apache2/      確認這個目錄產生後,說明apache編譯安裝成功   
bin    cgi-bin  error   icons    logs  manual
build  conf     htdocs  include  man   modules


配置說明:

# ./configure \
--enable-modules=all \      加載所有支持模塊
--enable-mods-shared=all \  共享方式加載大部分常用模塊
--enable-so \           啓用動態模塊加載功能
--enable-rewrite \      啓用地址重寫功能
--with-mpm=prefork \    插入式並行處理模塊,稱爲多路處理模塊,Prefork是類UNIX平臺上默認的MPM
--with-apr=/usr/local/apr/bin/apr-1-config \    指定依賴軟件apr路徑
--with-apr-util=/usr/local/apr/bin/apu-1-config

 

五、編譯安裝PHP

版本:php-5.6.11.tar.xz
1.下載  https://www.php.net/releases/
2.解壓
[root@lamp httpd-2.4.12]# cd /LAMP/
[root@lamp LAMP]# ls
apr-1.5.2.tar.bz2       httpd-2.4.12.tar.bz2  php-5.6.11.tar.xz
apr-util-1.5.4.tar.bz2  mysql-5.6.25.tar.gz
[root@lamp LAMP]# tar -xf php-5.6.11.tar.xz -C /usr/src/
[root@lamp LAMP]# cd /usr/src
[root@lamp src]# ls
apr-1.5.2       debug         kernels       php-5.6.11
apr-util-1.5.4  httpd-2.4.12  mysql-5.6.25
[root@lamp src]# cd php-5.6.11/
[root@lamp php-5.6.11]# pwd
/usr/src/php-5.6.11        解壓路徑

3.安裝(在解壓目錄裏)   配置——》編譯——》安裝
1)配置 (看下下面 php.sh的配置內容)
[root@lamp LAMP]#cd /usr/src/php-5.6.11/
[root@lamp php-5.6.11]# vim /usr/src/php-5.6.11/php.sh
[root@lamp php-5.6.11]# chmod +x /usr/src/php-5.6.11/php.sh 
[root@lamp php-5.6.11]# ./php.sh

***************************************************
./php.sh: line 5: --with-mysqli=/mysql25/mysql_basedir/bin/mysql_config: No such file or directory
./php.sh: line 7: --with-zlib: command not found
./php.sh: line 26: --enable-calender: command not found
檢查腳本文件的書寫是否有誤,一般都是因爲 轉義換行的\沒加,導致的錯誤

還有一種錯誤,因爲沒有安裝 libcurl-devel
checking for cURL support... yes
checking for cURL in default path... not found
configure: error: Please reinstall the libcurl distribution -
    easy.h should be in <curl-dir>/include/curl/
#yum -y install libcurl-devel
***************************************************

2)編譯
[root@lamp php-5.6.11]# make

3)安裝
[root@lamp php-5.6.11]# make install

[root@lamp php-5.6.11]# ls /usr/local/apache2/modules/libphp5.so 
/usr/local/apache2/modules/libphp5.so


/mysql25/mysql_basedir
# ./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/mysql/ \    要改成自定義的目錄   /mysql25/mysql_basedir
--with-mysqli=/usr/local/mysql/bin/mysql_config \   /mysql25/mysql_basedir/bin/mysql_config
--with-pdo-mysql=/usr/local/mysql \ 鏈接mysql模塊   /mysql25/mysql_basedir
--with-zlib \
--with-zlib-dir=/usr/local/mysql/zlib \  數據壓縮用的函數庫  /mysql25/mysql_basedir/zlib 
--with-curl \
--enable-zip \
--with-gd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-opcache \
--enable-mbstring \
--enable-mbregex \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm
--enable-calendar \
--enable-bcmath \

with-apxs2  調用apache加載模塊支持PHP
gd          畫圖庫
libiconv    字符變換轉換
libmcrypt   字符加密
mcrypt      字符加密
mhash       哈希運算


make    //make成功後,會顯示讓你make test,不用做
make install

ls /usr/local/apache2/modules/libphp5.so    確認有這個.so模塊文件,就表示編譯PHP成功

php.sh

./configure \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/mysql25/mysql_basedir \
--with-mysqli=/mysql25/mysql_basedir/bin/mysql_config \
--with-pdo-mysql=/mysql25/mysql_basedir \
--with-zlib \
--with-zlib-dir=/mysql25/mysql_basedir/zlib \
--with-curl \
--enable-zip \
--with-gd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--enable-sockets \
--with-xmlrpc \
--enable-soap \
--enable-opcache \
--enable-mbstring \
--enable-mbregex \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-calendar \
--enable-bcmath \

參考 :php各參數配置詳解
https://www.jianshu.com/p/0a79847c8151
https://www.cnblogs.com/fps2tao/p/7884011.html
 

六、後續配置

1.配置apache和php的聯繫

apache要解析一個動態頁面,需要調用php模塊,怎麼聯繫起來呢?

1.修改apache配置文件
# vim /usr/local/apache2/conf/httpd.conf
1>配置優先支持中文
LoadModule negotiation_modules/mod_negotiation.so   此模塊打開註釋
Include conf/extra/httpd-languages.conf 打開此選項,擴展配置文件就生效了

修改子配置文件
# vim /usr/local/apache2/conf/extra/httpd-languages.conf    
DefaultLanguage zh-CN   打開註釋,默認語言集改爲中文 (可無)
LanguagePriority zh-CN en ca ...語言及優先集,把zh-CN寫到前面

2>配置apache對php支持    也就是apache和php的聯繫
# vim /usr/local/apache2/conf/httpd.conf
LoadeModule php5_module     modules/libphp5.so  找到這一句,在這句下面
----添加兩行,告訴httpd把.php文件交給模塊去編譯
AddHandler php5-script      .php    
AddType text/html   .php    
這兩句的意思是以.php結尾的文件都認爲是php程序文件,注意這兩句的.php前面都是有一個空格的

3>默認主頁加上index.php,並放在index.html前,支持php的首頁文件
# vim /usr/local/apache2/conf/httpd.conf
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

4>配置網站家目錄   (此處暫不配置,因爲後面是搭兩個網站,用到虛擬主機)
DocumentRoot "/web"

默認:/usr/local/apache2/htdocs/index.php

到 第九大點 配置虛擬主機
[root@lamp ~]# vim /usr/local/apache2/conf/httpd.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf


2.讓php支持鏈接本地的數據庫

說明:
本地數據庫一般是通過socket文件鏈接,而本地數據庫的socket文件如果不在默認路徑,就必須告訴php從哪裏讀取socket文件。
///usr/local/lib/ 默認
# cp /usr/src/php-5.6.11/php.ini-production  /usr/local/lib/php.ini
vim /usr/local/lib/php.ini
...

[MySQL]
mysql.default_port=3307
mysql.default_socket = /mysql25/mysql_basedir

[MySQLi]
mysql.default_port=3307
mysql.default_socket = /mysql25/mysql_basedir

3.網站加目錄裏寫php測試頁

要跟隨環境  查看 /usr/local/apache2/conf/httpd.conf 的 DocumentRoot
DocumentRoot "/usr/local/apache2/htdocs"

[root@lamp ~]# cd /usr/local/apache2/htdocs
[root@lamp htdocs]# ls
index.html
[root@lamp htdocs]# mv index.html index.php
[root@lamp htdocs]# vim index.php
<?php
        phpinfo();
?>

4.啓動服務

啓動數據庫
#mysql -p 123

啓動apache
[root@lamp htdocs]# /usr/local/apache2/bin/apachectl start
[root@lamp htdocs]# netstat -nltp|grep 80

5.測試驗證

在這裏插入圖片描述 

七、源碼編譯軟件經驗總結

1.配置階段

# 通過制定參數,來確認你想要安裝的軟件安裝在哪裏,加上哪些功能和去掉哪些功能
./configure 或者 cmake
# 如果這一步報錯,基本都是缺少依賴包,解決辦法:
1> 使用yum去安裝,一般來說,rhel/centos做爲一個成熟的linux操作系統,常見的底層依賴包都自帶了,
所以安裝下面這兩個組,一般都會有你所需要的依賴包
# yum groupinstall "Development tools" -y
# yum groupinstall "Desktop Platform Development" -y
2> 如果缺少依賴包在rhel/centos的yum源裏找不到,則上網下載第三方的軟件,先編譯第三方第三方軟件,再編譯本軟件
關於 ./configure 參數選擇的基本方法:
./configure --help 查看所有的編譯參數
第一個重要參數
--prefix = 此參數指定安裝目錄(一般安裝到/usr/local/ 或者 /usr/local/軟件名下)
第二類重要參數:
--enable-xxx 		打開一個功能(默認是關閉的)
--disable-xxx		關閉一個功能(默認是打開的)

第三類參數:
--with-xxx=DIR      指定一個目錄,調用此目錄的功能

2.編譯階段

make 相當於是根據你上一步定義好的文件(Makefile),把這個軟件給做出來(這一步一般很少出
錯,如果出錯,問題都比較麻煩,可能是一些兼容性的問題等等,上網查詢解決方法,如果查不到,
只能換個環境或者換個軟件版本或者換些編譯參數重新編譯)

3.安裝階段

make install 把做好的軟件,安裝到你第一步所指定的安裝目錄裏

4.思考總結

假設有一個軟件aaa,安裝到/usr/local和安裝到/usr/local/aaa之間的區別?

  • 安裝到/usr/local下:
  • 優點:
    此軟件的命令一般會安裝到/usr/local/bin或者/usr/local/sbin等;
    這些路徑都默認在$PATH裏,所以安裝的命令可以直接使用,而不用使用絕對路徑;
    庫文件一般都會安裝到/usr/locallib下,所以把它加入ldconfig,以後所以安裝在此目錄的庫文件都可以被找到
    缺點:
    不方便刪除,因爲很多軟件都安裝在/usr/local下
    安裝到/usr/local/aaa下:
    優缺點與上面相反
    建議:小軟件默認安裝在/usr/local下,大軟件安裝在/usr/local/軟件名下

 

八、部署WEB應用

搭建Discuz論壇
所需軟件包:
Discuz_X3.2_SC_UTF8.zip  Discuz論壇
phpwind_v9.0.1_utf8.zip  wind論壇
phpMyAdmin-4.4.11-all-language.zip  php寫的mysql的管理工具(類似oracle的OEM)
wordpress-4.7.3-zh_CN.tar.gz  博客

需求:搭建2個網站,一個博客,一個是web界面管理mysql數據庫的應用(我這裏只搭了博客)

步驟:
1.創建兩個目錄來分別存放不同的網站
# cd /usr/local/apache2/conf/
# vim httpd.conf   查找 /User 發現 2.4版本用戶是daemon
apache2.4版本默認用戶爲
User daemon
Group daemon
# chown -R daemon.  /webserver/         這裏daemon. 表示用戶和用戶組同名直接用點。
# mkdir   /webserver/{admin,myblog} -p

 

2.拷貝網站相關的數據到網站目錄裏
[root@bogon LAMP]# unzip phpMyAdmin-4.4.11-all-languages.zip
[root@bogon LAMP]# tar xf wordpress-4.7.3-zh_CN.tar.gz
[root@bogon LAMP]# cd /LAMP/phpMyAdmin-4.4.11-all-languages
[root@bogon phpMyAdmin-4.4.11-all-languages]# cp -a ./* /webserver/admin/
[root@bogon LAMP]# cd ..    返回上一級目錄
[root@bogon LAMP]# cp -a wordpress/* /webserver/myblog/ 



3.通過虛擬主機將網站發佈出去   (Apache 2.2和2.4不同,默認目錄那些也不同)
虛擬主機:(用虛擬主機 就要用 模塊)
# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/webserver/admin"
    ServerName www.mysqladmin.cc
#   ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/webserver/myblog"
    ServerName www.myblog.net
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

打開主配置文件裏面的模塊
[root@lamp ~]# vim /usr/local/apache2/conf/httpd.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf    去掉註釋

4.重啓服務
/usr/local/apache2/bin/apachectl restart

5.測試驗證
出現403錯誤,首先查看目錄權限都是daemon,接着查看主配置文件,修改如下
#ll -d /webserver/admin/  
然後檢查 getenforce  [root@bogon LAMP]# vim /etc/selinux/config
然後檢查防火牆,檢查端口開啓沒
[root@bogon LAMP]# vim /usr/local/apache2/conf/httpd.conf
<Directory />
    AllowOverride none
    #Require all denied   版本原因,2.4的apache目錄拒絕所有人訪問 403,因此要註釋掉
    Require all granted   全部允許
</Directory>
重啓服務後重新測試 /usr/local/apache2/bin/apachectl restart

在CLIENT客戶端的 hosts文件  寫上對應關係  
#vim /etc/hosts
192.168.93.137  www.mysqladmin.cc
192.168.93.137  www.myblog.net

排錯

第一個排錯  打得開,登不進去
1>第一個原因:數據庫用戶名密碼不對
2>第二個原因:數據庫連接不了
#cd /webserver/admin
#cp config.sample.inc.php config.inc.php
#vim config.inc.php
$cfg['Servers'][$i]['host'] = 'localhost';  登錄不成功嘗試修改爲127.0.0.1  root 123

Myblog: 第二個網站
第二個排錯  登進去,創建不了數據庫。 因此先在本機數據庫建立一個myblog的database
#mysql -p123
mysql> create database myblog;  
//再次建立,  提示建立數據庫時出錯,提示:wp-config.php

第三個排錯  修改 wp-config.php 文件,指定數據庫
#cd /webserver/myblog/
#cp wp-config-sample.php  wp-config.php   //sample是默認樣板
#vim wp-config.php
 22 /** WordPress數據庫的名稱 */
 23 define('DB_NAME', 'myblog');
 24 
 25 /** MySQL數據庫用戶名 */
 26 define('DB_USER', 'root');
 27 
 28 /** MySQL數據庫密碼 */
 29 define('DB_PASSWORD', '123');
 //又出錯,又提示建立數據庫時出錯
 
 第四個排錯 
 現在進入到mysql裏面刪除myblog數據庫,再次重建
 mysql> drop database myblog;
 然後進入網頁刷新,清空緩存
 又是建立數據庫時出錯,這個時候只能是思考配置文件的問題

在這裏插入圖片描述
 
然後發現 文件權限是 root,修改爲daemon (apache2.4版本默認用戶爲User daemon,Group daemon
[root@bogon myblog]# chown daemon. wp-config.php
在這裏插入圖片描述還是錯,修改 wp-config.php 將localhost修改爲127.0.0.1
/** MySQL主機 */
32 define(‘DB_HOST’, ‘127.0.0.1’);

重啓服務:# /usr/local/apache2/bin/apachectl restart OK
終於完成!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章