1、LAMP架構(gòu)概述
LAMP架構(gòu)是目前成熟的企業(yè)網(wǎng)站應(yīng)用模式之一,指的是協(xié)同工作的一整套系統(tǒng)和相關(guān)軟件,能夠提供動態(tài)Web站點服務(wù)及其應(yīng)用開發(fā)環(huán)境。LAMP是一個縮寫詞,具體包括Linux操作系統(tǒng)、Apache網(wǎng)站服務(wù)器、MySQL數(shù)據(jù)庫服務(wù)器、PHP(或Perl、Python)網(wǎng)頁編程語言。
2、LAMP各組件的作用
平臺:Linux
作為LAMP架構(gòu)的基礎(chǔ),提供用于支撐Web站點的操作系統(tǒng),能夠與其他三個組件提供更好的穩(wěn)定性,兼容性(AMP組件也支持Windows、UNIX等平臺) 。
前臺:Apache
作為LAMP架構(gòu)的前端,是一款功能強大,穩(wěn)定性好的Web服務(wù)器程序,該服務(wù)器直接面向用戶提供網(wǎng)站訪問,發(fā)送網(wǎng)頁,圖片等文件內(nèi)容。(靜態(tài)頁面—>靜態(tài)請求 http)
后臺:MySQL
作為LAMP架構(gòu)的后端,是一款流行的開源關(guān)系數(shù)據(jù)庫系統(tǒng)。在企業(yè)網(wǎng)站、業(yè)務(wù)系統(tǒng)等應(yīng)用中,各種賬戶信息、產(chǎn)品信息,客戶資料、業(yè)務(wù)數(shù)據(jù)等都可以存儲到MySQL數(shù)據(jù)庫,其他程序可以通過SQL語句來查詢,更改這些信息。
中間連接:PHP/Perl/Python
作為三種開發(fā)動態(tài)網(wǎng)頁的編程語言,負(fù)責(zé)解釋動態(tài)網(wǎng)頁文件,負(fù)責(zé)溝通Web服務(wù)器和數(shù)據(jù)庫系統(tǒng)以協(xié)同工作,并提供Web應(yīng)用程序的開發(fā)和運行環(huán)境。其中PHP是一種被廣泛應(yīng)用的開放源代碼的多用途腳本語言,它可以嵌入到HTML中,尤其適合于Web應(yīng)用開發(fā)。(動態(tài)頁面---->動態(tài)請求 http)
3、LAMP的安裝順序
在構(gòu)建LAMP平臺時,各組件的安裝順序依次為Linux、Apache、MySQL、PHP。其中Apache和MySQL的安裝并沒有嚴(yán)格的順序,PHP環(huán)境的安裝一般放到最后安裝,負(fù)責(zé)溝通 Web 服務(wù)器和數(shù)據(jù)庫系統(tǒng)以協(xié)同工作。
4、LAMP的數(shù)據(jù)流向
5、編譯安裝Apache
5.1 關(guān)閉防火墻和slinux,將安裝Apache所需軟件包傳到/opt目錄下并解壓
systemctl stop firewalld
setenforce 0
tar xf apr-1.6.2.tar.gz
tar xf apr-util-1.6.0.tar.gz
tar xf httpd-2.4.29.tar.bz2
mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
5.2 安裝環(huán)境依賴包
yum -y install \
gcc \ #C語言的編譯器
gcc-c++ \ #C++的編譯器
make \ #源代碼編譯器(源代碼轉(zhuǎn)換成二進制文件)
pcre \ #pcre是一個Perl函數(shù)庫,包括perl 兼容的正則表達(dá)式庫
pcre-devel \ #perl的接口開發(fā)包
expat-devel \ #用于支持網(wǎng)站解析HTML、XML文件
perl #perl語言編譯器
5.3 選擇Apache軟件模塊
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \ #指定 httpd 服務(wù)程序的安裝路徑
--enable-so \ #啟用動態(tài)加載核心模塊支持,使 httpd 具備進一步擴展功能的能力
--enable-rewrite \ #啟用網(wǎng)頁地址重寫功能,用于網(wǎng)站優(yōu)化、防盜鏈及目錄遷移維護
--enable-charset-lite \ #啟動字符集支持,以便支持使用各種字符集編碼的頁面
--enable-cgi #啟用CGI(通用網(wǎng)關(guān)接口)腳本程序支持,便于網(wǎng)站的外部擴展應(yīng)用訪問能力
5.4 編譯和安裝
make -j2 && make install
5.5 優(yōu)化配置文件路徑,并把httpd服務(wù)的可執(zhí)行程序文件放入路徑環(huán)境變量的目錄中便于系統(tǒng)識別
ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/
5.6 添加httpd服務(wù)
方法一:
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
vim /etc/init.d/httpd
添加以下內(nèi)容
# chkconfig: 35 85 21 //35級別自動運行 第85個啟動 第21個關(guān)閉
# description: Apache is a World Wide Web server
:wq
chkconfig --add httpd //將httpd加入到系統(tǒng)管理器
systemctl start httpd.service
方法二:
vim /lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server #描述
After=network.target #描述服務(wù)類別
[Service]
Type=forking #后臺運行方式
PIDFile=/usr/local/httpd/logs/httpd.pid #PID文件位置
ExecStart=/usr/local/bin/apachectl $OPTIONS #啟動服務(wù)
ExecReload=/bin/kill -HUP $MAINPID #根據(jù)PID重載配置
5.7 修改 httpd 服務(wù)配置文件
vim /usr/local/httpd/conf/httpd.conf
--52行--修改
Listen 192.168.147.100:80 (不修改也行,默認(rèn)監(jiān)聽80端口)
--197行--取消注釋,修改
ServerName 192.168.147.100:80
--221行--默認(rèn)首頁存放路徑
DocumentRoot "/usr/local/httpd/htdocs" 以后 有存儲
--255行--默認(rèn)首頁文件名設(shè)置
DirectoryIndex index.html
5.8 檢查語法并驗證
#檢查語法
httpd -t 或 apachectl -t
cat /usr/local/httpd/htdocs/index.html
systemctl restart httpd.service
lsof -i:80
6、編譯安裝Mysql
6.1 將安裝Apache所需軟件包傳到/opt目錄下并解壓
useradd -s /sbin/nologin mysql #創(chuàng)建程序用戶管理
tar zxvf mysql-5.7.17.tar.gz -C /opt
tar zxvf boost_1_59_0.tar.gz -C /usr/local/
mv /usr/local/boost_1_59_0 /usr/local/boost
6.2 安裝環(huán)境依賴包
yum -y install \
gcc \
gcc-c++ \
ncurses \ #字符終端下圖形互動功能的動態(tài)庫
ncurses-devel \ #ncurses開發(fā)包
bison \ #語法分析器
cmake #mysql需要用cmake編譯安裝
6.3 配置軟件模塊
cd /opt/mysql-5.7.17/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定mysql的安裝路徑
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql進程監(jiān)聽套接字文件(數(shù)據(jù)庫連接文件)的存儲路徑
-DSYSCONFDIR=/etc \ #指定配置文件的存儲路徑
-DSYSTEMD_PID_DIR=/usr/local/mysql \ #指定進程文件的存儲路徑
-DDEFAULT_CHARSET=utf8 \ #指定默認(rèn)使用的字符集編碼,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \ #指定默認(rèn)使用的字符集校對規(guī)則
-DWITH_EXTRA_CHARSETS=all \ #指定支持其他字符集編碼
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安裝INNOBASE存儲引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #安裝ARCHIVE存儲引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #安裝BLACKHOLE存儲引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ #安裝FEDERATED存儲引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \ #指定數(shù)據(jù)庫文件的存儲路徑
-DWITH_BOOST=/usr/local/boost \ #指定boost的路徑,若使用mysql-boost集成包安裝則-DWITH_BOOST=boost
-DWITH_SYSTEMD=1 #生成便于systemctl管理的文件
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_EXTRA_CHARSETS=all \
-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
存儲引擎選項:
MYISAM,MERGE,MEMORY和cSv引擎是默認(rèn)編譯到服務(wù)器中,并不需要明確地安裝。靜態(tài)編譯一個存儲引擎到服務(wù)器,使用-DWITH engine STORAGE ENGINE= 1
可用的存儲引擎值有:ARCHIVE,BLACKHOLE,EXAMPLE,F(xiàn)BDERATBDB(InnoDB),PARTTTON(partitioning support),和PERFSCHEMA(Performance schema),IMNOBAS
6.4 編譯和安裝
make -j2 && make install
6.5 更改mysql安裝目錄和配置文件的屬主屬組
chown -R mysql:mysql /usr/local/mysql/
#更改管理主/組
chown mysql:mysql /etc/my.cnf
6.6 修改mysql 配置文件
vim /etc/my.cnf #刪除原配置項,再重新添加下面內(nèi)容
[client] #客戶端設(shè)置
port = 3306
socket=/usr/local/mysql/mysql.sock
[mysqld] #服務(wù)全局設(shè)置
user = mysql #設(shè)置管理用戶
basedir=/usr/local/mysql #指定數(shù)據(jù)庫的安裝目錄
datadir=/usr/local/mysql/data #指定數(shù)據(jù)庫文件的存儲路徑
port = 3306 #指定端口
character-set-server=utf8 #設(shè)置服務(wù)器字符集編碼格式為utf8
pid-file = /usr/local/mysql/mysqld.pid #指定pid 進程文件路徑
socket=/usr/local/mysql/mysql.sock #指定數(shù)據(jù)庫連接文件
bind-address = 0.0.0.0 #設(shè)置監(jiān)聽地址,0.0.0.0代表允許所有,如允許多個IP需空格隔開
skip-name-resolve #禁用DNS解析
max_connections=2048 #設(shè)置mysql的最大連接數(shù)
default-storage-engine=INNODB #指定默認(rèn)存儲引擎
max_allowed_packet=16M #設(shè)置數(shù)據(jù)庫接收的數(shù)據(jù)包大小的最大值
server-id = 1 #指定服務(wù)ID號
vim /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
auto-rehash
[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
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
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
sql_mode常用值如下:
NO_ENGINE_SUBSTITUTION
如果需要的存儲引擎被禁用或未編譯,那么拋出錯誤。不設(shè)置此值時,用默認(rèn)的存儲引擎替代,并拋出一個異常
STRICT_TRANS_TABLES
在該模式下,如果一個值不能插入到一個事務(wù)表中,則中斷當(dāng)前的操作,對非事務(wù)表不做限制
NO_AUTO_CREATE_USER
禁正GRANT創(chuàng)建密碼為空的用戶
NO_AUTO_VALUE_ON_ZERO
mysql中的自增長列可以從O開始。默認(rèn)情況下自增長列是從1開始的,如果你插入值為0的數(shù)據(jù)會報錯
NO_ZERO_IN_DATE
不允許日期和月份為零
NO_ZERO_DATE
mysql數(shù)據(jù)庫不允許插入零日期,插入零日期會拋出錯誤而不是警告
ERROR_FOR_DIVISION_BY_ZERO
在INSERT或UPDATE過程中,如果數(shù)據(jù)被零除,則產(chǎn)生錯誤而非警告。默認(rèn)情況下數(shù)據(jù)被零除時MysQL返回NULL
PIPES_As_CONCAT
將"||"視為字符串的連接操作符而非或運算符,這和Oracle數(shù)據(jù)庫是一樣的,也和字符串的拼接函數(shù)Concat相類似
ANSI_QUOTES
啟用ANSI_QUOTES后,不能用雙引號來引用字符串,因為它被解釋為識別符
6.7 設(shè)置環(huán)境變量,申明/宣告mysql命令便于系統(tǒng)識別
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
6.8 初始化數(shù)據(jù)庫
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \ #生成初始化密碼為空
--user=mysql \ #指定管理用戶
--basedir=/usr/local/mysql \ #指定數(shù)據(jù)庫的安裝目錄
--datadir=/usr/local/mysql/data #指定數(shù)據(jù)庫文件的存儲路徑
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
6.9 添加mysqld系統(tǒng)服務(wù)
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload #刷新識別
systemctl start mysqld.service #開啟服務(wù)
systemctl enable mysqld #開機自啟
lsof -i:3306 #查看端口
6.10 修改mysql 的登錄密碼
mysqladmin -u root -p password "123456" #直接回車即可
6.11 驗證
mysql -u root -p
123456
show databases;
7、安裝PHP
7.1 將安裝PHP 所需軟件包傳到/opt目錄下并解壓
tar -xf php-7.1.24.tar.gz
7.2 安裝GD庫和GD庫關(guān)聯(lián)程序,用來處理和生成圖片
yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
7.3 配置軟件模塊
cd /opt/php-7.1.24/
./configure \
--prefix=/usr/local/php7 \ #指定將 PHP 程序的安裝路徑
--with-apxs2=/usr/local/httpd/bin/apxs \ #指定Apache httpd服務(wù)提供的apxs 模塊支持程序的文件位置
--with-mysql-sock=/usr/local/mysql/mysql.sock \ #指定mysql 數(shù)據(jù)庫連接文件的存儲路徑
--with-config-file-path=/usr/local/php7 #設(shè)置 PHP 的配置文件 php.ini 將要存放的位置
--with-mysqli \ #添加 MySQL 擴展支持 #mysqli擴展技術(shù)不僅可以調(diào)用MySQL的存儲過程、處理MySQL事務(wù),而且還可以使訪問數(shù)據(jù)庫工作變得更加穩(wěn)定
--with-zlib \ #支持zlib功能,提供數(shù)據(jù)壓縮
--with-curl \ #開啟curl擴展功能,實現(xiàn)HTTP的Get下載和Post請求的方法
--with-gd \ #激活gd 庫的支持
--with-jpeg-dir \ #激活jpeg 的支持
--with-png-dir \ #激活png 的支持
--with-freetype-dir \
--with-openssl \
--enable-mbstring \ #啟用多字節(jié)字符串功能,以便支持中文等代碼
--enable-xml \ #開啟擴展性標(biāo)記語言模塊
--enable-session \ #會話
--enable-ftp \ #文本傳輸協(xié)議
--enable-pdo \ #函數(shù)庫
--enable-tokenizer \ #令牌解釋器
--enable-zip #ZIP壓縮格式
./configure \
--prefix=/usr/local/php7 \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-config-file-path=/usr/local/php7 \
--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
7.4 編譯及安裝
make -j2 && make install
7.5 復(fù)制模版文件作為PHP 的主配置文件,并進行修改
cp /opt/php-7.1.24/php.ini-development /usr/local/php7/php.ini
vim /usr/local/php7/php.ini
--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注釋,修改
date.timezone = Asia/Shanghai
7.6 把PHP 的可執(zhí)行程序文件放入路徑環(huán)境變量的目錄中便于系統(tǒng)識別
ln -s /usr/local/php7/bin/* /usr/local/bin/
7.7 修改Apache配置文件讓Apache支持PHP
vim /etc/httpd.conf
##檢查156行默認(rèn)支持php7的模塊是否存在
LoadModule php7_module modules/libphp7.so
#在256行中添加index.php
255 <IfModule dir_module>
256 DirectoryIndex index.html index.php
257 </IfModule>
#在392行下方插入一下內(nèi)容,讓Apache可以支持.php的網(wǎng)頁文件
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps、
7.8 創(chuàng)建、編輯php頁面文件并驗證
rm -rf /usr/local/httpd/htdocs/index.html
vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>
systemctl restart httpd.service
在網(wǎng)頁測試“http://192.168.147.101/index.php”
8、安裝Discuz論壇
8.1 將安裝論壇所需軟件包傳到/opt目錄下并解壓
unzip Discuz_X3.4_SC_UTF8.zip -d /opt/dis
8.2 創(chuàng)建一個數(shù)據(jù)庫
mysql -u root -p
mysql> CREATE DATABASE bbs;
#把bbs數(shù)據(jù)庫里面所有表的權(quán)限授予給bbsuser,并設(shè)置密碼
mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
#刷新數(shù)據(jù)庫
mysql>flush privileges;
8.3 上傳站點更新包并更改論壇目錄的屬主
cd /opt/dis/dir_SC_UTF8
#上傳站點更新包
cp -r upload/ /usr/local/httpd/htdocs/bbs
#切換論壇目錄
cd /usr/local/httpd/htdocs/bbs
#更改論壇目錄屬主
chown -R daemon ./config
chown -R daemon ./data
chown -R daemon ./uc_client
chown -R daemon ./uc_server/data
8.4 驗證
訪問
http://192.168.147.101/bbs/install/
數(shù)據(jù)庫服務(wù)器: localhost #本地架設(shè)就用localhost,如何不是在在本機上就要填寫IP地址和端口號
數(shù)據(jù)庫名字: bbs
數(shù)據(jù)庫用戶名: bbsuser
數(shù)據(jù)庫密碼: admin123
管理員賬號: admin
管理員密碼: admin123
文章來源:http://www.zghlxwxcb.cn/news/detail-493076.html
9、總結(jié)
了解到LAMP的架構(gòu)和原理,懂得如何編譯安裝Apache、MySQL、PHP和Discuz論壇文章來源地址http://www.zghlxwxcb.cn/news/detail-493076.html
到了這里,關(guān)于LAMP架構(gòu)及搭建LAMP+Discuz論壇的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!