學習LAMP這一篇就夠啦!(企業網站LAMP之原始碼編譯安裝)

2020-10-15 11:01:36

  博主許久不更,最近在準備考試。LAMP目前最為成熟的一種企業網站應用模式,可提供動態Web站點應用及開發環境,以下就是博主搭建的整個環境,斷斷續續準備了好久。

原始碼編譯

一般來說,我們軟體的安裝方式有 yum (rpm),和原始碼編譯兩種方式。選擇原始碼編譯安裝軟體有以下幾個原因:

  • 滿足不同的執行平臺,我們Linux髮型版本眾多,但是每個版本採用的軟體或者核心版本都不一樣,而我們的二進位制包所依賴的環境不一定能夠正常執行,所以大部分軟體直接提供原始碼!
  • 方便客製化,滿足需求,很多時候我們所需要的軟體都是可以客製化的,我需要什麼就安裝什麼,大多數二進位制程式碼都是一鍵裝全,所以自由度並不高!
  • 方便運維、開發人員維護,我們的原始碼是可以打包二進位制的,但是對於這個軟體的打包都會有一份代價不小的額外工作,包括維護,所以如果是原始碼的話,軟體產商會直接維護,但是如果是二進位制的話,一般都是Linux發行商提供

一:LAMP平臺概述

1.1:什麼是LAMP

LAMP 是指Linux(作業系統)+ Apache (HTTP 伺服器)+ MySQL(資料庫)和 PHP(網路程式語言)目前最為成熟的一種企業網站應用模式,可提供動態Web

1.2:構成元件

Linux、Apache、 MySQL、PHP/Perl/Python

1.3:LAMP的優勢

  • 成本低廉

  • 可客製化、易於開發

  • 方便易用、安全和穩定

此圖來自百度

二:Apache服務安裝

以下為本次實驗的環境

2.1:apache軟體包及依賴包準備

####編譯安裝HTTP服務####
#####安裝Apache所需軟體#####
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.gz
#apr-1.6.2.tar.gz、apr-util-1.6.0.tar.gz(工具)是跨平臺的元件包
http://apache.org/dyn/closer.cgi

通過Xftp 匯入檔案到/opt目錄下
在這裡插入圖片描述

[root@server4 ~]# cd /opt/
[root@server4 opt]# ll
總用量 8020
-rw-r--r--. 1 root root 1071074 108 18:46 apr-1.6.2.tar.gz
-rw-r--r--. 1 root root  565507 108 18:46 apr-util-1.6.0.tar.gz
-rw-r--r--. 1 root root 6567926 108 18:46 httpd-2.4.29.tar.bz2
drwxr-xr-x. 2 root root       6 326 2015 rh
apr-1.6.2.tar.gz //MAC記錄與埠掃描指令碼
apr-util-1.6.0.tar.gz   //pxe.txt
httpd-2.4.29.tar.bz2     //開發系統監控指令碼.txt
[root@server4 opt]# tar xf apr-1.6.2.tar.gz 
[root@server4 opt]# tar xf apr-util-1.6.0.tar.gz 
[root@server4 opt]# tar xf httpd-2.4.29.tar.bz2 
#將跨平臺的元件包移動到原始碼包目錄下去執行裡面的功能
[root@server4 opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@server4 opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
[root@server4 opt]# ls httpd-2.4.29/srclib/
apr  apr-util  Makefile.in

2.2:安裝編譯器和其他工具

手工安裝要預先裝環境

gcc   ###C語言的編譯器
gcc-c++   ###C++的編譯器
make   ###原始碼編譯(原始碼轉換成二進位制檔案)
pcre-devel ###支援正規表示式
expat-devel ###網站解析HTML檔案
perl  ###perl編譯器
[root@server4 opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \
> pcre-devel \
> expat-devel \
> perl
#省略內容

2.3:configure設定

[root@localhost opt]# cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \    #指定將 httpd 服務程式安裝到哪個目錄下,如/usr/local/httpd             
--enable-so \                  #啟用動態載入模組支援,使 httpd 具備進一步擴充套件功能的能力。
--enable-rewrite \             #啟用網頁地址重寫功能,用於網站優化及目錄遷移維護。
--enable-charset-lite \        #啟動字元集支援,以便支援使用各種字元集編碼
--enable-cgi                   #啟用 CGI 指令碼程式支援,便於擴充套件網站的應用存取能力。

2.4:make編譯和make install

make && make install                 #時間較長,可以先make -j3   然後make install   -j3是你核心數,最大不要超過虛擬機器器的核心數

2.5:優化執行路徑

[root@server4 httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf  /etc/
[root@server4 httpd-2.4.29]# ln -s /usr/local/httpd/bin/*  /usr/local/bin/
[root@server4 ~]# httpd -v           #檢視HTTP版本
Server version: Apache/2.4.29 (Unix) 
Server built:   Oct  8 2020 19:49:11

2.6:設定啟動指令碼

[root@server4 httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@server4 httpd-2.4.29]# vi /etc/init.d/httpd
新增下面兩行
# chkconfig: 35 85 21        #35級別自動執行  第85個啟動 第21個關閉
# description: Apache is a World Wide Web server
chkconfig --add httpd        #新增為系統服務
chkconfig --list httpd       #檢視http服務自啟狀態 該輸出結果只顯示Sysv服務,
#並不包含原生 systemd 服務。SysV 設定資料可能被原生 systemd 設定覆蓋

2.7:編輯組態檔

[root@server4 httpd-2.4.29]# vi /etc/httpd.conf 
ServerName www.tom.com:80                              #更改域名

2.8:重新啟動httpd服務

[root@server4 ~]# systemctl restart httpd
[root@server4 ~]# netstat -anpt | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      121903/httpd        

2.9: 客戶機測試存取html頁面

客戶機新增對映

  • Linux系統
[root@server3 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.158.40 www.tom.top      #末行新增

在這裡插入圖片描述

  • Windows系統
    C:\Windows\System32\drivers\etc目錄下有個hosts檔案,以記事本方式開啟並在末尾新增,開啟瀏覽器測試
    在這裡插入圖片描述
    末行新增對映記錄
    在這裡插入圖片描述
    在這裡插入圖片描述

三:MYSQL服務安裝

3.1:MySQL概述

  • MySQL是一種開放原始碼的關係型資料庫管理系統(RDBMS),使用最常用的資料庫管理語言–結構化查詢語言(SQL)進行資料庫管理。
  • MySQL是開放原始碼的,因此任何人都可以在General Public License的許可下下載並根據個性化的需要對其進行修改。
  • MySQL是一個真正的多執行緒,多使用者的SQL資料庫服務,憑藉其速度、可靠性和適應性而備受關注。大多數人都認為在不需要事務化處理的情況下,MySQL是管理內容最好的選擇。

3.2:原始碼編譯安裝過程

  • 環境準備
[root@server3 ~]# useradd -s /sbin/nologin  mysql
[root@server3 ~]# yum -y install \
ncurses \
ncurses-devel \        #ncurses是字元終端螢幕控制的基本庫
bison \                #用於自動生成語法分析器的程式
cmake                  #跨平臺編譯安裝工具
檢視軟體包
[root@server3 ~]# cd /opt/
[root@server3 opt]# ll
drwxr-xr-x. 38      7161     31415     4096 1011 20:54 mysql-5.7.20

3.3:設定cmake

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \       #指定將 mysql 資料庫程式安裝到某目錄下,如目錄/usr/local/ mysql。                
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定通訊端檔案的儲存路徑,資料庫連線的檔案
-DSYSCONFDIR=/etc \                             #指定初始化引數檔案目錄
-DSYSTEMD_PID_DIR=/usr/local/mysql \            
-DDEFAULT_CHARSET=utf8  \                       #指定預設使用的字元集編碼,如 utf8。
-DDEFAULT_COLLATION=utf8_general_ci \           #適用於 UTF-8 字元集的通用規則。
-DWITH_INNOBASE_STORAGE_ENGINE=1 \              #安裝INNOBASE儲存引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \               #安裝ARCHIVE儲存引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \             #安裝ARCHIVE儲存引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \            #安裝FEDERATED儲存引擎 
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
#若要明確指定不編譯某儲存引擎,可以使用類似如下的選項:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1        不啟用或不編譯EXAMPLE儲存引擎 
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
#如若要編譯進其它功能,如SSL等,則可使用類似如下選項來實現編譯時使用某庫或不使用某庫:
-DWITH_READLINE=1 
 -DWITH_SSL=system           #表示使用系統上的自帶的SSL庫 
-DWITH_ZLIB=system 
 -DWITH_LIBWRAP=0
#其它常用的選項:
-DMYSQL_TCP_PORT=3306                       #設定預設埠的 
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock           #MySQL程序間通訊的通訊端的位置 
-DENABLED_LOCAL_INFILE=1                    #是否啟動原生的LOCAL_INFILE 
 -DEXTRA_CHARSETS=all                       #支援哪些額外的字元集 
-DDEFAULT_CHARSET=utf8                      #預設字元集 
-DDEFAULT_COLLATION=utf8_general_ci         #預設的字元集排序規則 
-DWITH_DEBUG=0                              #是否啟動DEBUG功能 
-DENABLE_PROFILING=1                        #是否啟用效能分析功能
  • 注意:如果在CMAKE的過程中有報錯—

     當報錯解決後,需要把原始碼目錄中的CMakeCache.txt檔案刪除,然後再重新CMAKE,否則錯誤依舊
    
  • 注意:make: *** No targets specified and no makefile found. Stop.解決方法

1、wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
2.、tar zxvf ncurses-5.6.tar.gz
3./configure -prefix=/usr/local -with-shared-without-debug
4、make
5、make install

3.4:make編譯和make install

[root@server3 opt]# make -j3 && make install    #不要超過虛擬機器器的核心數
 

3.5:資料庫目錄進行許可權調整

[root@server3 opt]# chown -R mysql:mysql /usr/local/mysql/

3.6:建立調整組態檔

[root@server3 opt]# vi /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
#儲存退出
[root@server3 etc]# chown mysql:mysql /etc/my.cnf

3.7:設定環境變數

[root@server3 ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@server3 ~]# echo 'export PATH' >> /etc/profile
#新增到組態檔
[root@server3 ~]# source /etc/profile    #命令不重新啟動生效
cd /usr/local/mysql/

3.8:初始化資料庫

bin/mysqld \
--initialize-insecure \     
--user=mysql \                           #指定使用者  這邊不建立使用者就會報錯
--basedir=/usr/local/mysql \             #資料庫服務所在位置
--datadir=/usr/local/mysql/data          #資料庫位置

3.9:啟動服務

[root@server3 ~]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@server3 ~]# systemctl enable mysqld
[root@server3 ~]# systemctl start mysqld
[root@server3 ~]# systemctl status mysqld
[root@server3 ~]# netstat -anpt|grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      80307/mysqld        

3.10:測試mysql

mysqladmin -u root -p password 「abc123」 //剛開始沒密碼是空的直接回車,然後輸入密碼abc123,在此確認abc123,這是在root賬戶下執行的

mysql -u root -p ##這個命令敲下,提示要輸入密碼,這個就是剛才設定的密碼abc123

[root@server3 ~]# mysqladmin -uroot -p123123 password 111111
mysql> create database student ;  #分號不能忘記,建立資料庫(student為資料庫名)
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| myadm              |
| mysql              |
| performance_schema |
| student            |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

mysql> exit
Bye

以上mysql就安裝就成功了

四:PHP服務安裝

4.1:PHP概述

  • PHP即「超文字前處理器」,是一種通用開源指令碼語言。PHP是在伺服器端執行的指令碼語言,與C語言類似,是常用的網站程式語言。PHP獨特的語法混合了C、Java、Perl以及
    PHP 自創的語法。利於學習,使用廣泛,主要適用於Web開發領域
  • PHP支援絕大多數流行的資料庫,在資料庫層面的操作功能十分強大,而且能夠支援Unix,Windows,Linux等多種作業系統

4.1:首先設定安裝環境

[root@server3 ~]# yum -y install \
> libjpeg \ 
> libjpeg-devel \
> libpng libpng-devel \
> freetype freetype-devel \
> libxml2 \
> libxml2-devel \
> zlib zlib-devel \
> curl curl-devel \
> openssl openssl-devel

4.3:設定configre

[root@server3 ~]# cd /opt
[root@server3 opt]# tar xf php-7.1.10.tar.bz2 
[root@server3 opt]# cd php-7.1.10
./configure \
--prefix=/usr/local/php \                        #指定將 PHP 程式安裝到哪個目錄下     
--with-apxs2=/usr/local/httpd/bin/apxs \         #設定 Apache HTTP Server 提供的 apxs 模組支援程式的檔案位置
--with-mysql-sock=/usr/local/mysql/mysql.sock \  #指定mysql的mysql.sock位置
--with-mysqli \                                  #mysqli擴充套件技術不僅可以呼叫MySQL的儲存過程、處理MySQL事務,而且還可以使存取資料庫工作變得更加穩定。                      
--with-zlib \                                    #支援zlib功能--壓縮流
--with-curl \                                    #開啟curl擴充套件功能
--with-gd \                                      #啟用gd庫的支援
--with-jpeg-dir \                                #要啟用 jpeg 的支援
--with-png-dir \                                 #要啟用png的支援
--with-freetype-dir \ 
--with-openssl \
--enable-mbstring \                              #啟用多位元組字串功能,以便支援中文等程式碼。

--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

4.4:make編譯和make install

[root@server3 ~]# make && make install

4.5:編輯組態檔

[root@server3 ~]# cp php.ini-development /usr/local/php/lib/php.ini  	#將php.ini-development開發樣板,複製到生產環境中去

[root@server3 ~]# vi /usr/local/php/lib/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai

[root@server3 ~]# /usr/local/php/bin/php -m       #驗證安裝的模組

[root@server3 ~]# vi /etc/httpd.conf 			  #在合適位置新增

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

DirectoryIndex index.php index.html

[root@server3 ~]# rm -f /usr/local/httpd/htdocs/index.html
[root@server3 ~]# vi /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>

4.6:重新啟動服務並測試PHP頁面

[root@server3 ~]# systemctl restart httpd

在這裡插入圖片描述

五:搭建一個phpMyAdmin

5.1:PHPMyAdmin概述

  • phpMyAdmin 是眾多 MySQL圖形化管理工具中使用最為廣泛的一種,是一款使用PHP 開發的基於B/S模式的 MySQL使用者端軟體,該工具是基於 Web 跨平臺的管理程式,並且支援簡體中文,使用者可以在官網上下載最新版本的。
  • phpMyAdmin 為Web 開發人員提供了類似 Access,SQL Server 的圖形化資料庫操作介面,通過該管理工具可以對 MySQL 進行各種操作,如何建立資料庫,資料表和生成 MySQL 資料庫指令碼檔案等。

5.2:tar解壓

[root@server3 myadm]# cd /opt/
[root@server3 opt]# ls
phpMyAdmin-4.7.6-all-languages.zip
unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/
mv phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm
cd /usr/local/httpd/htdocs/myadm
cp config.sample.inc.php config.inc.php

5.3:修改組態檔

vi config.inc.php
$cfg['Servers'][$i]['host'] = '127.0.0.1'; 
#把localhost 改成IP 31

5.4:測試網頁

http://192.168.158.30/myadm
使用root 以及前面為root設定的密碼登入管理系統。可以對資料庫進行管理操作了
在這裡插入圖片描述
在這裡插入圖片描述

  • 直接在網頁上建立資料庫名稱

在這裡插入圖片描述

  • 在伺服器上驗證資料庫

在這裡插入圖片描述
以上就搭建完成了。真的斷斷續續做了好久

  • 最後分享一個勵志小短句

在這裡插入圖片描述
如果對您有用的話,點個三連吧,求求啦!