1. 程式人生 > >第十一章 LAMP架構 預習筆記

第十一章 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