LAMP架构 (资源)
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
LAMP架構(gòu)
Nginx|Apache web服務(wù)器發(fā)布靜態(tài)頁面,MYSQL開源、收費(fèi),(Mariadb開源免費(fèi))、PHP一門解釋性動(dòng)態(tài)語言(網(wǎng)頁代碼index.php),PHP模塊解析,基于Apache+PHP整合,互聯(lián)網(wǎng)主流發(fā)布PHP網(wǎng)站架構(gòu)。Apache將頁面請求交給PHP模塊,由PHP模塊去解析該頁面,解析完畢PHP解釋器將頁面內(nèi)容返回給Apache,apache最終返回給用戶
工作過程:
1、當(dāng)客戶請求的是靜態(tài)資源時(shí),web服務(wù)器會(huì)直接把靜態(tài)資源返回客戶端;
2、當(dāng)客戶請求的是動(dòng)態(tài)資源時(shí),httpd的php模塊會(huì)進(jìn)行相應(yīng)的動(dòng)態(tài)資源運(yùn)算,如果此過程還需要數(shù)據(jù)庫的數(shù)據(jù)作為運(yùn)算參數(shù)時(shí),php會(huì)連接mysql獲取數(shù)據(jù)后進(jìn)行運(yùn)算,運(yùn)算的結(jié)果轉(zhuǎn)為靜態(tài)資源由web服務(wù)器返回到客戶端
?
LAMP工作原理
?
LAMP軟件實(shí)現(xiàn)(生產(chǎn)環(huán)境落地)
?
源碼編譯與二進(jìn)制安裝
1)源碼安裝比較麻煩,需要解決各種依賴,方便管理,方便定制各種功能;
2)二進(jìn)制rpm|yum安裝,自動(dòng)解決依賴,不利于管理,不能定制功能;
3)線上生產(chǎn)環(huán)境推薦源碼安裝,方便管理,定制需要的功能;
?
關(guān)系型數(shù)據(jù)庫特點(diǎn):
1、數(shù)據(jù)以表格的形式出現(xiàn);
?2、每行記錄數(shù)據(jù)的真實(shí)內(nèi)容;
3、每列記錄數(shù)據(jù)真實(shí)內(nèi)容的數(shù)據(jù)域;
4、無數(shù)的行和列組成一張表;
5、若干的表組成一個(gè)數(shù)據(jù)庫;
?
Apache性能調(diào)優(yōu)
1)Apache WEB服務(wù)器,多模塊,基于多個(gè)模塊工作,需要某個(gè)模塊就添加,不需要就無需添加模塊;
2)Apache優(yōu)化,選擇Apache MPM處理請求方式,Prefork模式、Worker模式、Event模式,其中Prefork默認(rèn)模式;
3)Prefork模式,預(yù)派生多進(jìn)程方式,每個(gè)進(jìn)程包含一個(gè)線程,每個(gè)線程同一時(shí)刻只能處理一個(gè)請求,進(jìn)程之間是獨(dú)立的,沒有影響,一個(gè)進(jìn)程掛掉,不影響其他的進(jìn)程,穩(wěn)定、靠譜,缺點(diǎn)占用內(nèi)存、CPU資源高
<IfModule prefork.c>?????????????????????????????????? ??? Prefork MPM引擎配置段;
StartServers????? 8???????????????????????????????????????????? 默認(rèn)啟動(dòng)Apache工作進(jìn)程數(shù);
MinSpareServers?? 5?????????????????????????????????????????? 最小空閑進(jìn)程數(shù);
MaxSpareServers?? 20????????????????????????????? ??? 最大空閑進(jìn)程數(shù);
ServerLimit????? 4096????????????????????????????? ??? Apache服務(wù)器最多進(jìn)程數(shù);
MaxClients????? 4096????????????????????????????? ??? 每秒支持的最大客戶端并發(fā);
MaxRequestsPerChild? 4000??????????????????? ??? 每個(gè)進(jìn)程能處理的最大請求數(shù);
</IfModule>
4)Work模式,預(yù)派生多進(jìn)程方式,每個(gè)進(jìn)程包含多個(gè)線程,每個(gè)線程同一時(shí)刻只能處理一個(gè)請求,進(jìn)程之間是獨(dú)立的,沒有影響,一個(gè)進(jìn)程掛掉,不影響其他的進(jìn)程,但是如果一個(gè)進(jìn)程中某個(gè)線程奔潰,整個(gè)進(jìn)程及旗下所有線程都會(huì)奔潰,而且所有的線程共享該進(jìn)程所有資源,相對穩(wěn)定,高性能,應(yīng)用于高并發(fā)!
5)Event模式,不支持HTTPS,一般用的比較少,性能比較強(qiáng)悍,比prefork模式性能高,Apache官網(wǎng)推薦在測試環(huán)境使用;
3)Prefork模式,
<IfModule prefork.c>?????????????????????????????????? ??? Prefork MPM引擎配置段;
StartServers????? 8???????????????????????????????????????????? 默認(rèn)啟動(dòng)Apache工作進(jìn)程數(shù);
MinSpareServers?? 5?????????????????????????????????????????? 最小空閑進(jìn)程數(shù);
MaxSpareServers?? 20????????????????????????????? ??? 最大空閑進(jìn)程數(shù);
ServerLimit????? 4096????????????????????????????? ??? Apache服務(wù)器最多進(jìn)程數(shù);
MaxClients????? 4096????????????????????????????? ??? 每秒支持的最大客戶端并發(fā);
MaxRequestsPerChild? 4000??????????????????? ??? 每個(gè)進(jìn)程能處理的最大請求數(shù);
</IfModule>
<IfModule worker.c>???????????????????????????????????????????? Worker MPM引擎配置段;
StartServers??????? 8?????????????????????????????? ??? 默認(rèn)啟動(dòng)Apache工作進(jìn)程數(shù);
MaxClients???????? 4000???????????????????????????????? 每秒支持的最大客戶端并發(fā);
MinSpareThreads???? 25????????????????????????????????? 最小空閑線程數(shù);
MaxSpareThreads???? 75 ?????????????????????????????? 最小空閑線程數(shù);
ThreadsPerChild???? 75???????????????????????????????????? 每個(gè)進(jìn)程啟動(dòng)的線程數(shù);
MaxRequestsPerChild? 0??????????????????????????????????? 每個(gè)進(jìn)程能處理的最大請求數(shù),0表示無限制;
</IfModule>
?
?
MYSQL主從原理(面試必備):
Slave將同步的數(shù)據(jù)存放到本地relay-log中繼日志中,SQL線程實(shí)時(shí)監(jiān)測并且在本地執(zhí)行.
?
LAMP兩種方法,第一種基于YUM在線安裝:
yum? install? httpd? httpd-devel? mysql mysql-server mysql-devel? php php-devel php-mysql php-comon? -y
service httpd restart
service mysqld restart
?
源碼安裝LA|NMP
安裝APACHE
yum install -y apr-devel apr-util
cd /usr/local/src
wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.2.34.tar.bz2
tar -jxvf httpd-2.2.34.tar.bz2
cd httpd-2.2.34
./configure --prefix=/usr/local/apache2/ --enable-so --enable-rewrite --enable-echo --enable-info
make
make install
預(yù)編譯,提前檢查操作系統(tǒng)能否滿足httpd軟件安裝,有沒有GCC(編譯庫);
make -j8? ? ? ? ? 基于GCC庫進(jìn)行編譯,主要是生成可運(yùn)行二進(jìn)制文件;
make -j8 install? ? ? ? ? ? ? ?將編譯后的二進(jìn)制文件cp至Linux prefix目錄;
?
PHP(php-5.3.10)安裝配置
cd /usr/local/src
wet -c http://museum.php.net/php5/php-5.3.10.tar.gz
yum install -y gb curl curl-devel libjpeg?libjpeg-devel libpng libpng-devel freetype??freetype-devel libxml2? libxml2-devel
cd php-5.3.10
./configure --prefix=/usr/local/php5 --enable-fpm --enable-debug --with-gb --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --with-curl?--with-musql=/usr/local/mysql55/ --with-mysqli=/usr/local/mysql55/bin/mysql_config --with-config-file-path=/usr/local/php55/etc
make?
make install
cp php.ini-development /usr/local/php5/etc/php.ini
?
安裝php-5.3.28
cd /usr/local/src
wget -c http://mirrors.sohu.com/php/php-5.3.28.tar.bz2?
tar jxf?php-5.3.28.tar.bz2?
?
?
wget http://mirrors.sohu.com/php/php-5.3.28.tar.bz2
tar jxf? php-5.3.28.tar.bz2
cd php-5.3.28
./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc?? --with-apxs2=/usr/local/apache2/bin/apxs? --with-mysql=/usr/local/mysql55/
make
make? install
?
?
?
?
MYSQL數(shù)據(jù)庫源碼編譯
yum? install? gcc? gcc-c++? glibc? glibc-devel? cmake? ncurses-devel ?ncurses ?-y
cd /usr/local/src
wget? http://down1.chinaunix.net/distfiles/mysql-5.5.20.tar.gz
tar –xzf mysql-5.5.20.tar.gz
cd mysql-5.5.20
./configure --prefix=/usr/local/mysql5/|cmake替代./configure
cmake? . ?-DCMAKE_INSTALL_PREFIX=/usr/local/mysql55 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0
make
make? install
?
安裝mysql-5.1.63
cd /usr/local/src
wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.63.tar.gz?
tar xvf?mysql-5.1.63.tar.gz?
cd?mysql-5.1.63
./configure --prefix=/usr/local/mysql --enable-assemble && make make install
配置Mysql服務(wù)為系統(tǒng)服務(wù)
cp /usr/local/mysql/share/mysql/mysql-medium.cnf /etc/my.cnf
cp?/usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on?
cd /usr/local/mysql
useradd mysql
chown -R mysql.mysql? /usr/local/mysql
/usr/local/mysql/bin/mysql_install_db --user=mysql
chown -R mysql var?
/usr/local/mysql/bin/mysql_safe --user=mysql &&
?
nginx安裝配置
wget -c http://nginx.org/download/nginx-1.12.0.tar.gz
tar -zxvf?nginx-1.12.0.tar.gz
cd?nginx-1.12.0
useradd www
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make?
make install
?
MYSQL安裝配置
yum install cmake ncurses-devel ncurses -y
weg http://down.chinaunix.net/disfiles/mysql-5.5.20.tar.gz
?
?
Apache+PHP源碼整合
為了能讓Apache發(fā)布PHP頁面,需要將PHP安裝完成后的libphp5.so模塊與Apache進(jìn)行整合,vim httpd.conf編輯配置文件,加入如下代碼:
LoadModule???????? php5_module modules/libphp5.so? ? ? (默認(rèn)已存在)
AddType???????? application/x-httpd-php? .php
DirectoryIndex???? index.php index.html index.htm
?
創(chuàng)建PHP測試頁面,在/usr/local/apache/htdocs目錄下創(chuàng)建index.php測試頁面,執(zhí)行如下命令自動(dòng)創(chuàng)建:
cat >/usr/local/apache/htdocs/index.php<<EOF
<?php
phpinfo();
?>
EOF
?
重新啟動(dòng)Apache服務(wù),瀏覽器輸入 Apache WEB的IP訪問,如圖12-4所示,即代表LAMP源碼環(huán)境整合成功。
MYSQL源碼設(shè)置為系統(tǒng)服務(wù):
將源碼安裝的Mysql數(shù)據(jù)庫服務(wù)設(shè)置為系統(tǒng)服務(wù),可以使用chkconfig管理,并啟動(dòng)MYSQL數(shù)據(jù)庫
cd /usr/local/mysql55/
\cp support-files/my-large.cnf /etc/my.cnf
\cp support-files/mysql.server /etc/init.d/mysqld
chkconfig?--add?mysqld?
 chkconfig?--level?35?mysqld?on
mkdir? -p? /data/mysql
useradd? mysql
/usr/local/mysql55/scripts/mysql_install_db?--user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql55/
ln? -s? /usr/local/mysql55/bin/* /usr/bin/
service? mysqld? restart
?
?
?
使用shell安裝LAMP
#!/bin/bash
#2017年7月19日15:09:44
#by author www.jfedu.net
#auto install lamp for Linux
###############
#Install Httpd Web service
wget -c http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.34.tar.bz2
tar -jxf httpd-2.2.34.tar.bz2
cd httpd-2.2.34
./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite
make -j8
make -j8 install
#Install mysql db service
yum? install? cmake? ncurses-devel ncurses –y
wget http://down1.chinaunix.net/distfiles/mysql-5.5.20.tar.gz
tar? -xzf? mysql-5.5.20.tar.gz
cd?? mysql-5-5.20
cmake? . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0
make
make install
#Config mysql db 2017
cd /usr/local/mysql55/
\cp support-files/my-large.cnf /etc/my.cnf
\cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
mkdir -p? /data/mysql
useradd? mysql
/usr/local/mysql55/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql55/
ln? -s? /usr/local/mysql55/bin/* /usr/bin/
service? mysqld? restart
#Install PHP WEB service
wget http://mirrors.sohu.com/php/php-5.3.28.tar.bz2
tar jxf? php-5.3.28.tar.bz2
cd php-5.3.28
./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc?? --with-apxs2=/usr/local/apache2/bin/apxs? --with-mysql=/usr/local/mysql55
#config lamp 2017
echo "AddType???????? application/x-httpd-php? .php" >>/usr/local/apache2/conf/httpd.conf
sed -i 's/index.html/index.php index.html/g' /usr/local/apache2/conf/httpd.conf
cat>/usr/local/apache2/htdocs/index.php<<EOF
<?php
phpinfo();
?>
EOF
?
?
?
常見問題:
1、
Starting MySQL.. ERROR! The server quit without updating PID file (/data/mysql/www-jfedu-net.pid).
解決問題的步驟:
2、unzip wordpress-4.7.4-zh_CN.zip
-bash: unzip: command not found
錯(cuò)誤解決方法:yum? install? zip? unzip –y
?
3、軟件與系統(tǒng)不兼容
apr軟件包問題
解決辦法:把a(bǔ)pr或者apache降版本,換成httpd-2.2.32.tar.gz,編譯的時(shí)候去掉,apr編譯的部分
?
鏈接:
Red Hat Enterprise Linux 4+Nginx 0.7.47+PHP5.2+MYSQL5.0+Memcache+eAccelerator ? :?https://www.jb51.net/os/RedHat/15751.html
RHEL 7.0 編譯安裝Nginx1.6.0+MySQL5.6.19+PHP5.5.14運(yùn)行環(huán)境 ?:?https://www.jb51.net/os/RedHat/192933.html
yum 安裝CentOS 7系統(tǒng)安裝lamp環(huán)境?https://mp.weixin.qq.com/s/_WWK9emHCnSoRTgWC8tImA
VMware虛擬機(jī)安裝CentOS 7并搭建Lamp服務(wù)器環(huán)境?https://mp.weixin.qq.com/s/VE_BOgMciB8FDkl-hL6Nsw
.htaccess中的apache rewrite規(guī)則詳解 ? ? : ? ??http://blog.51cto.com/xiaogongju/2060949
apache虛擬機(jī)配置步驟和修改訪問端口的方法(虛擬機(jī)端口映射) :https://www.jb51.net/article/46781.htm
apache虛擬機(jī)配置步驟和修改訪問端口的方法(虛擬機(jī)端口映射) :?https://www.jb51.net/article/46781.htm
apache性能測試工具ab使用詳解 :?https://www.jb51.net/article/59469.htm
Apache 虛擬目錄和默認(rèn)首頁的設(shè)置 :?https://www.jb51.net/article/20806.htm
Apache Rewrite url重定向功能的簡單配置 :?https://www.jb51.net/article/24435.htm
apache開啟.htaccess及.htaccess的使用方法 :?https://www.jb51.net/article/25476.htm
Centos6.3下Apache配置基于加密的認(rèn)證https加密證書訪問 ?:?https://www.jb51.net/os/RedHat/81409.html
CentOS搭建LAMP服務(wù)器環(huán)境硬盤分區(qū)方案分享 :?https://www.jb51.net/os/RedHat/86180.html
?
Linux操作系統(tǒng)下提高PHP性能的工具APC ?:?https://www.jb51.net/os/RedHat/1322.html
PHP startup: Unable to load dynamic library錯(cuò)誤的錯(cuò)誤 ?:?https://www.jb51.net/os/RedHat/1314.html
?
CentOS 5 服務(wù)器 Nginx (lamp) 環(huán)境推薦教程 :?
centos5 源碼安裝Nginx + mysql + apache + php的方法 ?:?https://www.jb51.net/os/RedHat/35925.html
Centos 5.5 php5.1.2升級(jí)到php5.2.6的方法 ?: ?https://www.jb51.net/os/RedHat/35036.html
Centos Nginx + Svbversion配置安裝方法分享 :?https://www.jb51.net/os/RedHat/35924.html
Centos5.2配置LAMP與Centos5.3配置LAMP ? : ?https://www.jb51.net/os/RedHat/22433.html
LAMP服務(wù)器性能優(yōu)化技巧之加速PHP? :?https://www.jb51.net/article/29721.htm
?
?
?
RedHat AS4上安裝配置Apache2.2.4+PHP5.2.3+MySQL5.0.45+openssl0.98e ? ?:?https://www.jb51.net/os/RedHat/1132.html
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://my.oschina.net/u/3803405/blog/1839030
總結(jié)
以上是生活随笔為你收集整理的LAMP架构 (资源)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 网络安全防护技术
 - 下一篇: 三电极体系电化学传感器