第十一章 LAMP架構 預習筆記
11.1 LAMP架構介紹
11.2 MySQL_MariaDB介紹
11.3 MySQL安裝(上)
進入/usr/local/src下
r.aminglinux.com 有下載地址
wget 下載軟體包
11.4 MySQL安裝(中)
解壓完把解壓的檔案mv到/usr.local下並改名
mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql
useradd mysql
mkdir /data/
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
出現兩個ok, 或執行echo $? 返回零
這一步課程視訊中遇到的報錯
my-default.cnf 預設的配置檔案
實驗中用系統自帶的配置檔案 /etc/my.conf
[mysqld] datadir=/data/mysql socket=/tmp/mysql.sock
11.5 MySQL安裝(下)
cp support-files/mysql.server /etc/init.d/mysqld 拷貝啟動指令碼
vim /etc/init.d/mysqld 在啟動腳本里面定義程式目錄和資料目錄
basedir=/usr/local/mysql datadir=/data/mysql
/etc/init.d/mysqld許可權是755
chkconfig --add mysqld 加入到開機啟動
service mysqld start 啟動服務
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
如果沒有啟動指令碼,可以使用這種方法啟動mysql
killall mysql 比較安全的殺死程序,等待資料寫入完以後才殺死程序,很重要
實驗中遇到的報錯,可能是之前實驗裝過mariadb,有mysqld程序,殺掉就可以了
11.6 MariaDB安裝
11.7 Apache安裝(上)
11.8 Apache安裝(中)
11.9 Apache安裝(下)
static 代表靜態的,模組載入到了httpd裡面
shared 代表的是一個擴充套件的模組
/usr/local/apache2.4/bin/apachectl start 啟動服務
11.10 安裝PHP5(上)
安裝時遇到的報錯
yum -y install libxml2-devel.x86_64 11.11 安裝PHP5(中)
報錯
yum -y install openssl-devel
yum -y install bzip2-devel
yum -y install libjpeg-devel
yum -y install libpng-devel
11.12 安裝PHP5(下)
yum -y install freetype-devel
yum -y install libmcrypt-devel
php 載入的模組
/usr/local/php/bin/php
bin/php -i | less 檢視php的一些資訊
11.13 安裝PHP7
11.14 Apache和PHP結合(上)
新增一條防火牆規則
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
把denied 改成 granted
/usr/local/apache2.4/bin/apachectl -t 檢查語法
/usr/local/apache2.4/bin/apachectl graceful 重新載入配置檔案,不會重啟服務
AddType application/x-httpd-php .php 增加這行配置時為了能解析php網頁
增加 index.php
目錄
一、LAMP架構介紹 二、MySQL、MariaDB介紹 三、MySQL安裝 四、MariaDB安裝 五、Apache安裝 六、安裝PHP5 七、安裝PHP7 八、Apache和PHP結合 九、擴充套件連結
一、LAMP架構介紹
LAMP是Linux、Apache、MySQL、PHP的簡稱。linux是作業系統、apache提供web服務、mysql用來儲存資料、php是一種指令碼語言。LAMP組成的各元件都是開源軟體,因此可以很方便的獲取,使得這些元件廣泛使用,並不斷完善發展。
LAMP的工作原理
瀏覽器向伺服器傳送http請求,伺服器 (Apache) 接受請求,由於php作為Apache的元件模組也會一起啟動,它們具有相同的生命週期。Apache會將一些靜態資源儲存,然後去呼叫php處理模組進行php指令碼的處理。指令碼處理完後,Apache將處理完的資訊通過http response的方式傳送給瀏覽器,瀏覽器解析,渲染等一系列操作後呈現整個網頁。
php和mysql之間是動態請求(如使用者的登入操作就會用到)
而如果只是檢視圖片就是靜態請求,apache可以直接解析。不會用到php和mysql動態請求。(mysql不能存圖片等檔案)
二、MySQL、MariaDB介紹
MySQL是一個關係型資料庫,由mysql ab公司開發,mysql在2008年被sun公司收購(10億美金),2009年sun公司被oracle公司收購(74億美金),Mysql最終歸入Oracle公司。
MySQL官網https://www.mysql.com。
MySQL5.6變化比較大,5.7效能上有很大提升
Mariadb為MySQL的一個分支,官網https://mariadb.com 最新版本10.2
MariaDB主要由SkySQL公司(現更名為MariaDB公司)維護,SkySQL公司由MySQL原作者帶領大部分原班人馬創立.
Mariadb5.5版本對應MySQL的5.5,10.0對應MySQL5.6
Mysql的版本介紹
Community 社群版本,Enterprise 企業版,GA(Generally Available)指通用版本,在生產環境中用的,DMR(Development Milestone Release)開發里程碑釋出版,RC(Release Candidate)發行候選版本,Beta開放測試版本,Alpha內部測試版本
三、MySQL安裝
Myql主要有三種安裝方式
1.yum安裝,缺少定製功能,安裝簡單。
2.二進位制免編譯安裝包安裝,有足夠的可定製性,效能基本也不會損失。安裝速度也比較快。推薦使用。
3.原始碼編譯安裝。可以按需定製,可以提供最高的效能,編譯耗費的時間長,安裝速度慢。
這裡以原始碼包編譯安裝為例
1.環境: CentOS Linux release 7.4.1708 (Core) mysql-5.6.36.tar.gz
2.依賴包安裝 yum -y install gcc gcc-c++ ncurses-devel perl cmake autoconf
3.建立mysql的資料庫存放目錄 mkdir -p /data/mysql
4、 建立mysql使用者及使用者組 useradd -r mysql -s /sbin/nologin id mysql
5.設定mysql的資料庫存放目錄許可權 chown -R mysql:mysql /data/mysql
6.編譯安裝MySQL cd /usr/local/src //下載,地址僅供參考。 wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz -O /usr/local/src tar -zxvf mysql-5.6.36.tar.gz cd mysql-5.6.36 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 - DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/data/mysql -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1 echo $? make && make install echo $?
7.配置MySQL 7.1 初始化配置 cd /usr/local/mysql 進入安裝路徑,執行初始化配置指令碼,建立系統自帶的資料庫和表 scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --user=mysql
7.2 設定配置檔案 \cp ./support-files/my-default.cnf /etc/my.cnf 修改配置檔案 vim /etc/my.cnf 修改如下如下內容: basedir = /usr/local/mysql datadir = /data/mysql
7.3啟動MySQL 新增服務,拷貝服務指令碼到init.d目錄,並設定開機啟動 cp support-files/mysql.server /etc/init.d/mysqld chkconfig mysqld on service mysqld start --啟動MySQL ss -nat |grep 3306 LISTEN 0 80 :::3306 :::*
8、設定PATH(否則不能直接呼叫mysql) 修改/etc/profile檔案,在檔案末尾新增 export PATH=/usr/local/mysql/bin:$PATH
關閉檔案,執行下面的命令,讓配置立即生效 source /etc/profile
Error FATAL ERROR: please install the following Perl modules before executing scripts/mysql_install_db: Data::Dumper 解決:yum -y install autoconf
四、MariaDB安裝
以原始碼包安裝為例
1.環境: CentOS Linux release 7.4.1708 (Core) mariadb-5.5.57.tar.gz
2.依賴包安裝 yum -y install gcc gcc-c++ ncurses-devel perl cmake autoconf
3.建立mariadb的資料庫存放目錄 mkdir -p /data/mariadb
4、 建立mariadb使用者及使用者組 useradd -r mariadb -s /sbin/nologin id mariadb
5.設定mariadb的資料庫存放目錄許可權 chown -R mariadb:mariadb /data/mariadb
6.編譯安裝Mmariadb cd /usr/local/src //下載,地址僅供參考。 wget https://mirrors.shu.edu.cn/mariadb//mariadb-5.5.60/source/mariadb-5.5.60.tar.gz -O /usrlocal/src tar -zxvf mariadb-5.5.60 cd mariadb-5.5.60 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all echo $? make && make install echo $?
7.配置mariadb
7.1 初始化配置 cd /usr/local/mariadb 進入安裝路徑,執行初始化配置指令碼,建立系統自帶的資料庫和表 scripts/mysql_install_db --basedir=/usr/local/mariadb --datadir=/data/mariadb --user=mariadb
7.2 設定配置檔案 \cp ./support-files/my-medium.cnf /etc/my.cnf cp support-files/mysql.server /etc/init.d/mariadbd cd /etc/init.d chkconfig mariadbd on 修改配置檔案 vim /etc/my.cnf 修改如下內容: basedir = /usr/local/mariadb datadir = /data/mariadb //啟動mariadb /etc/init.d/mariadbd start
8.設定mariadb環境變數 echo "export PATH=$PATH:/usr/local/mariadb/bin">>/etc/profile
9.安全初始化mysql及設定 /usr/local/mysql/bin/mysql_secure_installation
10.登入測試 mysql -uroot -p
五、Apache安裝
1.環境 CentOS Linux release 7.4.1708 (Core) httpd-2.4.33 apr-1.6.3 apr-util-1.6.1
2.下載軟體包 wget https://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz -O /usr/local/src/apr-1.6.3.tar.gz wget https://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz -O /usr/local/src/apr-util-1.6.1.tar.gz wget https://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz -O /usr/local/src/httpd-2.4.33.tar.gz
3.依賴包 yum -y install libtool libtool-ltdl-devel.x86_64 expat-devel pcre.x86_64 pcre-devel.x86_64 如無gcc,可將開發工具組裝上 rpm -q gcc yum group -y install "Development Tools"
4.編譯安裝
4.1 解壓軟體包 cd /usr/local/src/ tar zxvf httpd-2.4.33.tar.gz tar zxvf apr-1.6.3.tar.gz tar zxvf apr-util-1.6.1.tar.gz
4.2 編譯安裝apr cd apr-1.6.3/ ./configure --prefix=/usr/local/apr echo $? make && make install echo $?
4.3編譯安裝apr-util cd ../apr-util-1.6.1/ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr echo $? make && make install echo $?
4.4編譯安裝httpd cd ../httpd-2.4.33/ ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most echo $? make && make install echo $?
4.5防火牆規則設定及selinux狀態 systemctl status firewalld.service firewall-cmd --get-default-zone firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --reload
getenforce
4.6啟動httpd /usr/local/apache2.4/bin/apachectl start
4.7測試 服務端檢視埠 netstat -nltup | grep :80
從宿主機訪問
[[email protected] httpd-2.4.33]# curl 127.0.0.1
It works!
Error 1 xml/apr_xml.c:35:19: fatal error: expat.h: No such file or directory
include <expat.h>
解決:yum -y install expat-devel
Error 2 configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/ 解決:yum -y install pcre.x86_64 pcre-devel.x86_64
Error 3 collect2: error: ld returned 1 exit status make[2]: *** [htpasswd] Error 1 解決:yum -y install libtool-ltdl-devel.x86_64 注意:如果已經編譯過了apr-util,需要重新編譯
Error 4 configure: error: no acceptable C compiler found in $PATH 解決:yum group -y install "Development Tools"
//bin/apachectl -t測試配置語法
//過載配置 [[email protected] apache2.4]# bin/apachectl --gracefully httpd (pid 50431) already running
六、安裝PHP5
1.環境
CentOS Linux release 7.4.1708 (Core) php5.5.38
2.依賴安裝
yum -y install libxml2-devel libpng-devel openssl openssl-devel bzip2 bzip2-devel libjpeg-devel freetype-devel libmcrypt.x86_64 libmcrypt-devel.x86_64
3.編譯安裝php
cd /usr/local/src/ wget http://cn2.php.net/distributions/php-5.6.30.tar.gz tar zxvf php-5.6.30.tar.gz cd php-5.6.30 ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif make && make install echo $? cp php.ini-production /usr/local/php/etc/php.ini
Error Cannot find OpenSSL's <evp.h> yum install openssl openssl-devel
configure: error: Please reinstall the BZip2 distribution yum install bzip2 bzip2-devel
configure: error: jpeglib.h not found. yum -y install libjpeg-devel
configure: error: freetype-config not found. yum install freetype-devel
configure: error: mcrypt.h not found. Please reinstall libmcrypt. libmcrypt.x86_64 libmcrypt-devel.x86_64
七、安裝PHP7
1.環境
CentOS Linux release 7.4.1708 (Core) php-7.2.7.tar.gz
2.依賴安裝
yum -y install libxml2-devel libpng-devel openssl openssl-devel bzip2 bzip2-devel libjpeg-devel freetype-devel libmcrypt.x86_64 libmcrypt-devel.x86_64 pcre pcre-devel libxslt libxslt-devel
3.編譯安裝php
cd /usr/local/src/ wget http://php.net/get/php-7.2.7.tar.gz/from/a/mirror tar php-7.2.7.tar.gz cd php-7.2.7 ./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip make && make install echo $? cp php.ini-development /usr/local/php/lib/php.ini cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp sapi/fpm/php-fpm /usr/local/bin
八、Apache和PHP結合
1.配置httpd支援php httpd主配置檔案/usr/local/apache2.4/conf/httpd.conf vim /usr/local/apache2.4/conf/httpd.conf //修改以下4個地方 ServerName-->我改的localhost Require all denied-->Require all granted AddType application/x-httpd-php .php-->增加這一行 DirectoryIndex index.html index.php-->增加 index.php //修改配置檔案後測試語法 /usr/local/apache2.4/bin/apachectl -t //啟動服務 /usr/local/apache2.4/bin/apachectl start //過載配置檔案 /usr/local/apache2.4/bin/apachectl graceful
2.驗證
curl localhost
//增加如下內容,驗證php解析是否正常
vim /usr/local/apache2.4/htodcs/index.php
<?php
phpinfo;
?>
curl localhost/index.php
九、擴充套件連結
mysql5.5原始碼編譯安裝
http://www.aminglinux.com/bbs/thread-1059-1-1.html
mysql5.7二進位制包安裝(變化較大)
http://www.apelearn.com/bbs/thread-10105-1-1.html
apache dso
https://yq.aliyun.com/articles/6298
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php