1. 程式人生 > >LAMP架構(全編譯安裝)

LAMP架構(全編譯安裝)

安裝lamp tokenize ima sel href mysql的編譯 系統管理 snap 工具

------LAMP-----

一、何為LAMP

Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一組常用來搭建動態網站或者服務器的開源軟件,本身都是各自獨立的程序,但是因為常被放在一起使用,擁有了越來越高的兼容度,共同組成了一個強大的Web應用程序平臺。隨著開源潮流的蓬勃發展,開放源代碼的LAMP已經與J2EE和.Net商業軟件形成三足鼎立之勢,並且該軟件開發的項目在軟件方面的投資成本較低,因此受到整個IT界的關註。從網站的流量上來說,70%以上的訪問流量是LAMP來提供的,LAMP是最強大的網站解決方案。

二、LAMP架構和通信過程

LAMP的架構:

LAMP是一個多C/S架構的平臺,最初級為web客戶端基於TCP/IP通過http協議發起傳送,這個請求可能是動態的,也可能是靜態的。

所以web服務器通過發起請求的後綴來判斷,如果是靜態的資源就由web服務器自行處理,然後將資源發給客戶端。如果是動態這時web服務器會通過CGI(Common Gateway interface)協議發起給php。
這裏如果php是以模塊形式與Web服務器聯系。那麽他們是通過內部共享內存的方式。如果是php單獨的放置與一臺服務器,那麽他們是通過sockets套接字監聽的方式通信(這又是一個C/S架構)。
這時php會相應的執行一段程序,如果在執行程序時,需要用到數據。那麽php就會通過mysql協議發送給mysql服務器(也可以看作是一個C/S架構)。由mysql服務器處理,將數據供給php程序。

lamp流程:

  1. 用戶發送http請求到達httpd服務器
  2. httpd解析url獲取需要的資源的路徑,通過內核空間讀取硬盤資源,如是靜態資源,則構建響應報文,發回給用戶
  3. 如果是動態資源,將資源地址發給php解析器,解析php程序文件,解析完畢將內容發回給httpd,httpd構建響應報文,發回給用戶
  4. 如果涉及到數據庫操作,則利用php-mysql驅動,獲取數據庫數據,返回給PHP解析器。

php + mysql的通信:

PHP跟mysql怎麽整合起來呢,php又怎麽被httpd所調用呢?
首先httpd並不具備解析代碼的能力,他要依賴於php的解析器,接著php本身不依賴於mysql,他只是一個解析器,能執行代碼就OK了,那他什麽時候用到mysql呢,如果要在mysql中存數據時才用到mysql,只是當php中有運行mysql語句時才用到mysql。

php語言要想聯系mysql,通常用到php的驅動,rpm包的叫php_mysql,php跟mysql沒有一點關系,只有程序員在php中編寫mysql語句時才連接mysql來執行sql語句的。
基於php-mysql去連接mysql只使用一個函數mysql_connect();而mysql_connect()正是php-mysql提供的一個API,只要指明要連接的服務器即可。
註意:在以後編譯php時,要想跟apache結合,就要編譯成php-fpm

技術分享圖片

三、使用源碼安裝LAMP

部署環境:CentOS7.6系統,base源、epel源為阿裏鏡像源,IP地址為192.168.11.12
進入下方相應網站下載所需軟件包:

http://httpd.apache.org #http壓縮包
http://apr.apache.org #httpd插件包
http://mirrors.sohu.com #mysql壓縮包
http://www.php.net #php壓縮包
https://www.phpadmin.net #phpadmin壓縮包
技術分享圖片

#上傳所有軟件包Linux系統的/root/目錄下
技術分享圖片

#apr-1.7.0和apr-util-1.6.1是httpd2.4以後的版本所需的插件,必須安裝
#phpmyadmin是一個使用php語言編寫,用來管理mysql數據庫的web管理系統,後面lamp搭建完成後驗證
一、Apache的編譯安裝:
#關閉selinux和防火墻
技術分享圖片

#安裝編譯工具和插件
[[email protected] ~]# yum -y install gcc gcc-c++ make pcre-devel expat-devel perl
#解壓httpd和apr
[[email protected] ~]# tar -xf httpd-2.4.39.tar.gz
[[email protected] ~]# tar -xf apr-1.7.0.tar.gz
[[email protected] ~]# tar -xf apr-util-1.6.1.tar.gz
#將插件放入到httpd目錄下的srclib中,並改名
[[email protected] ~]# mv apr-1.7.0 httpd-2.4.39/srclib/apr
[[email protected] ~]# mv apr-util-1.6.1 httpd-2.4.39/srclib/apr-util
#進行個性化配置
[[email protected] httpd-2.4.39]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
#選項解釋:
#--prefix=/usr/local/httpd 指定將httpd程序安裝到/usr/local/httpd目錄下
#--enable-so 啟用動態加載模塊功能
#--enable-rewrite 啟用網頁地址重寫功能,用於網站優化及目錄遷移
#--enable-charset-lite 啟用字符集支持,以便使用各種字符集編碼的網頁
#--enable-cgi 啟用cgi腳本程序支持,便於擴展網站的應用訪問能力
#編譯安裝
[[email protected] httpd-2.4.39]# make && make install
#將httpd服務添加到系統服務
[[email protected] httpd-2.4.39]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[[email protected] httpd-2.4.39]# vim /etc/init.d/httpd
#添加以下兩行(註意:‘#’不能省略)
技術分享圖片
#將httpd加入到service管理器
[[email protected] httpd-2.4.39]# chkconfig --add httpd
#重新加載系統管理器
[[email protected] httpd-2.4.39]# systemctl daemon-reload
#編輯httpd主配置文件
[[email protected] httpd-2.4.39]# vim /usr/local/httpd/conf/httpd.conf
加入下面內容,保存退出
技術分享圖片

#優化執行路徑,執行文件的原路徑不在PATH環境變量中所以生成軟鏈接
[[email protected] httpd-2.4.39]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[[email protected] httpd-2.4.39]# ln -s /usr/local/httpd/bin/ /usr/local/bin/
#檢測語法錯誤:httpd -t 或者 apachectl -t
技術分享圖片
#查看程序版本:httpd -v
技術分享圖片

#啟動服務並設置開機啟動,查端口
[[email protected] httpd-2.4.39]# systemctl start httpd
[[email protected] httpd-2.4.39]# systemctl enable httpd
[[email protected] httpd-2.4.39]# ss -anput | grep 80
技術分享圖片
#用w7/10客戶端訪問服務器
#瀏覽器訪問ip192.168.11.12,顯示it works即表示正常

技術分享圖片

#網頁默認顯示內容為:/usr/local/httpd/htdocs/index.html
技術分享圖片

Apache配置文件介紹:

|——bin ##http用到的命令

| |—— ab #服務器性能測試工具

| |——apachectl #控制Apache啟動的命令

| |——apxs #是Apache HTTP 編譯和安裝擴展模塊的工具

#後文在編譯php軟件是就用到了此命令,

#例如:--with-apxs2=/application/apache2.2.32/bin/apxs

| |——htcacheclean #清理磁盤 緩沖區的命令,很少用到

| |—— htpasswd #建立和更新基本認證的文件(打開網頁需要輸入用戶名和密碼)

| |—— httpd #httpd為Apache控制 命令程序, apachectl執行時會調用httpd

| |—— rotatelogs #Apache自帶的日誌輪詢命令

|——conf #http配置文件的目錄

| |—— extra #這個是額外的Apache配置文件目錄,這個目錄文件我們會經常訪問修改。

#如: httpd-vhosts.conf 默認就在此目錄

| |——httpd.conf #apache 的住配置文件

|——htdocs #編譯 Apache時默認的站點目錄

| |—— index.html #默認的網站首頁面

|——logs # Apache的錯誤日誌和訪問日誌

| |—— access_log #這是Apache默認的訪問日誌

| |——error_log #這是Apache的錯誤日誌,如果Apache出現錯誤可以查看這個日誌。

| |——httpd.pid #httpd 的pid文件, http進程啟動後,會把所有進程的ID寫到此文件。

|——modules #Apache的模塊目錄,比如PHP、 memcache等模塊編譯後都在這裏。

二、MySQL的編譯安裝:

#安裝編譯工具與插件
[[email protected] ~]# yum -y install ncurses ncurses-devel bison cmake
#建立數據庫程序用戶
[[email protected] ~]# useradd mysql -M -s /sbin/nologin
#解壓boost並改名
[[email protected] ~]# tar -xf boost_1_59_0.tar.gz -C /usr/local/
[[email protected] ~]# cd /usr/local/
[[email protected] local]# mv boost_1_59_0 boost
#解壓mysql軟件包到/opt目錄下
[[email protected] ~]# tar -xf mysql-5.7.17.tar.gz -C /opt/
[[email protected] ~]# cd /opt/mysql-5.7.17/
技術分享圖片

#配置(個性化配置及優化項目)
[[email protected] ~]# cd /opt/mysql-5.7.17/
[[email protected] mysql-5.7.17]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1

#選項解釋:
技術分享圖片

#編譯及安裝
[[email protected] mysql-5.7.17]# make && make install
#對數據庫目錄進行權限設置
[[email protected] mysql-5.7.17]# chown -R mysql:mysql /usr/local/mysql/
#編輯mysql主配置文件
[[email protected] mysql-5.7.17]# vim /etc/my.cnf
#[[email protected] mysql-5.7.17]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
#清空裏面的內容,添加下面內容,保存退出

[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

技術分享圖片

[[email protected] mysql-5.7.17]# chown -R mysql.mysql /etc/my.cnf
#設置環境變量
#把這兩個路徑添加到環境變量中,並放到profile中使其開機運行,否則不生效
[[email protected] mysql-5.7.17]# echo ‘PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH‘ >> /etc/profile
#設置為全局變量,使其使用範圍更廣
[[email protected] mysql-5.7.17]# echo ‘export PATH‘ >> /etc/profile
#加載環境變量,使其生效
[[email protected] mysql-5.7.17]# source /etc/profile
#初始化數據庫
[[email protected] mysql-5.7.17]# cd /usr/local/mysql
[[email protected] mysql]# bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
#添加系統服務
[[email protected] mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[[email protected] mysql]# systemctl daemon-reload
#啟動mysql服務並設開機自啟,查端口
[[email protected] mysql]# systemctl start mysqld
[[email protected] mysql]# systemctl enable mysqld
[[email protected] mysql]# ss -anput | grep 3306
技術分享圖片

#對數據庫進行操作,,設置密碼
[[email protected] mysql]# mysqladmin -uroot -p password ‘0‘
#由於之前數據庫無密碼,所以直接回車
#使用設置的密碼登錄mysql
[[email protected] mysql]# mysql -uroot -p
#對root用戶進行授權
mysql> grant all privileges on . to ‘root‘@‘%‘ identified by ‘0‘ with grant option;
mysql> flush privileges;
技術分享圖片
#退出數據庫
mysql> \q

三、php的編譯安裝

#安裝編譯工具和插件
[[email protected] ~]# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel
#解壓
[[email protected] ~]# tar -xf php-5.6.24.tar.gz
[[email protected] ~]# cd php-5.6.24/
#進行編譯配置
[[email protected] php-5.6.24]# ./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

#make編譯安裝
[[email protected] php-5.6.24]# make && make install
#創建配置文件
[[email protected] php-5.6.24]# cp php.ini-development /usr/local/php/lib/php.ini
#編輯配置文件
[[email protected] php-5.6.24]# vim /usr/local/php/lib/php.ini
#修改下列內容,保存退出
mysqli.default_socket = /usr/local/mysql/mysql.sock #將php與mysql關聯
date.timezone = Asia/Shanghai #設置時區,同步時間
技術分享圖片
技術分享圖片

#驗證安裝的模塊
[[email protected] php-5.6.24]# /usr/local/php/bin/php -m
#關聯php和apache服務
#編輯apache配置文件,使httpd支持php網頁解析,添加以下兩行內容:
[[email protected] php-5.6.24]# vim /etc/httpd.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
修改以下內容:
DirectoryIndex index.php index.html #註意:php文件必須放前面,優先讀取
技術分享圖片

#刪除默認html文件
[[email protected] php-5.6.24]# rm -f /usr/local/httpd/htdocs/index.html
#編輯php測試網頁
[[email protected] php-5.6.24]# vim /usr/local/httpd/htdocs/index.php
添加以下內容(php信息):
技術分享圖片
保存退出
#先關閉httpd服務,再開啟
[[email protected] php-5.6.24]# systemctl stop httpd
[[email protected] php-5.6.24]# systemctl start httpd
#驗證:用w7/10的瀏覽器訪問192.168.11.12
技術分享圖片

#測試數據庫
[[email protected] ~]# mysql -uroot -p
mysql> create database han;
mysql> grant all on han. to ‘han‘@‘%‘ identified by ‘0‘;
mysql> grant all on han.
to ‘han‘@‘localhost‘ identified by ‘0‘;
mysql> flush privileges;
技術分享圖片

#重啟MySQL服務
[[email protected] ~]# systemctl restart mysqld
#編輯主頁文件
[[email protected] ~]# vim /usr/local/httpd/htdocs/index.php
修改成如下圖片中內容:
技術分享圖片

#先關閉httpd服務,再開啟
[[email protected] php-5.6.24]# systemctl stop httpd
[[email protected] php-5.6.24]# systemctl start httpd
#驗證:用w7/10的瀏覽器訪問192.168.11.12
技術分享圖片

四、lamp架構的應用
------部署phpMyAdmin系統:phpmyadmin是一個使用php語言編寫,用來管理mysql數據庫的web應用系統

#解壓
[[email protected] ~]# tar -xf phpMyAdmin-5.0+snapshot-all-languages.tar.gz -C /opt/
[[email protected] ~]# cd /opt/
#移動phpmyadmin到apache目錄下並改名
[[email protected] opt]# mv phpMyAdmin-5.0+snapshot-all-languages /usr/local/httpd/htdocs/myadm
#進入phpmyadmin目錄
[[email protected] opt]# cd /usr/local/httpd/htdocs/myadm/
#創建配置文件
[[email protected] myadm]# cp config.sample.inc.php config.inc.php
#修改配置文件
[[email protected] myadm]# vim config.inc.php
修改看圖片上:
技術分享圖片
#先關閉httpd服務,再開啟
[[email protected] php-5.6.24]# systemctl stop httpd
[[email protected] php-5.6.24]# systemctl start httpd
#驗證:用w7/10的瀏覽器訪問192.168.11.12/myadm
技術分享圖片
出現上面的原因是,我的php版本低了,這個我做實驗沒有想到,不好意思,下次更新
登上去的賬號為root和root的密碼

LAMP架構(全編譯安裝)