一、 LAMP架構介紹
Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一組經常使用來搭建動態網站或者服務器的開源軟件,自己都是各自獨立的程序,可是由於常被放在一塊兒使用,擁有了愈來愈高的兼容度,共同組成了一個強大的Web應用程序平臺php
Linux
Linux 是免費開源軟件,這意味着源代碼可用的操做系統。
Apache(httpd)
Apache 是使用中最受歡迎的一個開放源碼的WEB服務器軟件。
MySQL/MariaDB
MySQL 是多線程、多用戶的SQL數據庫管理系統。
MySQL 已由Oracle公司自 2010 年 1 月 27 日經過SUN購買。SUN 最初於 2008 年 2 月 26 日收購 MySQL。
PHP,Perl 或 Python
PHP 是一種編程語言最初設計生產動態網站。PHP 是主要用於服務器端的應用程序軟件。Perl 和 Python 相似html
二、LAMP的工做原理
瀏覽器向服務器發送http請求,服務器 (Apache) 接受請求,因爲php做爲Apache的組件模塊也會一塊兒啓動,它們具備相同的生命週期。Apache會將一些靜態資源保存,而後去調用php處理模塊進行php腳本的處理。腳本處理完後,Apache將處理完的信息經過http response的方式發送給瀏覽器,瀏覽器解析,渲染等一系列操做後呈現整個網頁node
MySQL
一、MySQL是一個關係型數據庫,由mysql ab公司開發
二、mysql在2008年被sun公司收購(10億刀),2009年sun公司被oracle公司收購(74億刀)
三、MySQL官網https://www.mysql.com
四、MySQL5.6變化比較大,5.7性能上有很大提高
Mariadb
一、Mariadb爲MySQL的一個分支,
二、官網:https://mariadb.com/
三、MariaDB主要由SkySQL公司(現改名爲MariaDB公司)維護,SkySQL公司由MySQL原做者帶領大部分原班人馬創立.
四、Mariadb5.5版本對應MySQL的5.5,10.0對應MySQL5.6
版本區別
一、Community 社區版本
二、Enterprise 企業版
三、GA(Generally Available)指通用版本,在生產環境中用的
四、DMR(Development Milestone Release)開發里程碑發佈版
五、RC(Release Candidate)發行候選版本
六、Beta開放測試版本
七、Alpha內部測試版本mysql
一、安裝前準備
##建立用戶linux
[root@localhost ~]#useradd -s /sbin/nologin mysql [root@localhost ~]# id mysql uid=1000(mysql) gid=1000(mysql) 組=1000(mysql)
##建立數據目錄。c++
[root@localhost ~]mkdir -p /data/mysql [root@localhost ~]chown -R mysql.mysql /data/mysql [root@localhost ~]ll -d /data/mysql/ drwxr-xr-x 2 mysql mysql 6 6月 25 11:29 /data/mysql/
##安裝mysql所需依賴包sql
[root@localhost ~]yum install -y gcc gcc-c++ make cmake ncurses-devel bison-devel autoconf libtool libXpm-devel libvpx-devel gmp-devel
注:若是缺乏這些依賴包,編譯過程會保錯,源碼安裝大部分報錯爲缺乏依賴包的引發的
二、安裝mysql
方式1:源碼編譯安裝MySQL數據庫
#進入軟件源碼存放目錄 [root@localhost ~]cd /usr/local/src/ #下載源碼包 [root@localhost src]wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz #解壓源碼包 [root@localhost src]tar xvf mysql-5.6.36.tar.gz #進入解壓後的源碼目錄 [root@localhost src]cd mysql-5.6.36 #設置安裝參數,cmake至關於configure ##下面的反斜槓是脫義字符,加上它咱們能夠把一行命令寫成多行 [root@localhost ~]cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \ #指定mysql安裝目錄 -DMYSQL_DATADIR=/data/mysql \ #指定數據存放的目錄 -DSYSCONFDIR=/etc/ \ #指定配置文件所在目錄 -DWITH_MYISAM_STORAGE_ENGINE=1 \ #安裝啓用myisam引擎支持 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安裝啓用innodb引擎支持 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ #指定本地sock文件 -DMYSQL_TCP_PORT=3306 \ #指定TCP端口爲3306 -DENABLED_LOCAL_INFILE=1 \ #啓用本地數據導入支持 -DWITH_PARTITION_STORAGE_ENGINE=1 \ #安裝數據庫分區 -DEXTRA_CHARSETS=all \ #啓用額外的字符集類型(默認爲all) -DDEFAULT_CHARSET=utf8 \ #指定默認的字符集爲utf8 -DDEFAULT_COLLATION=utf8_general_ci #設定默認排序規則(utf8_general_ci快速/utf8_unicode_ci準確) 此處省略cmake過程 [root@localhost mysql-5.6.36]echo $? ##檢查是否有錯誤。 0 [root@localhost mysql-5.6.36]make && make install #編譯 && 安裝 ... 省略編譯安裝的過程 [root@localhost mysql-5.6.36]# echo $? ##再次檢查安裝是否有錯誤。若是是0就表示安裝沒問題。 0
方式2:二進制包安裝MySQL
源代碼方式和二進制包是軟件包的兩種形式。二進制包裏面包括了已經通過編譯,能夠立刻運行的程 序。你只須要下載和解包(安裝)它們之後,就立刻可使用。源代碼包裏面包括了程序原始的程序代碼,須要在你的計算機上進行編譯之後才能夠產生能夠運行程 序,因此從源代碼安裝的時間會比較長apache
#進入軟件源碼存放目錄 [root@localhost ~]cd /usr/local/src/ #下載二進制包 [root@localhost src]wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz #解壓二進制包 [root@localhost src]tar xvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz #將解壓好的目錄移動到/usr/local/目錄下重命名爲mysql [root@localhost src]mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql #進入/usr/local/mysql目錄 [root@localhost src]cd /usr/local/mysql ###到此安裝成功
三、初始化配置編程
#初始化數據庫 [root@localhost ~]cd /usr/local/mysql/ [root@localhost mysql]./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql #備份初始配置文件 [root@localhost mysql]cp /etc/my.cnf /etc/my.cnf.bak #清空配置文件 [root@localhost mysql]echo > /etc/my.cnf #編輯配置文件寫入下面的內容後保存退出 [root@localhost mysql]vim /etc/my.cnf ################################### [mysqld] port = 3306 basedir=/usr/local/mysql datadir=/data/mysql/ socket=/tmp/mysql.sock user=mysql default-time-zone=system default-storage-engine=InnoDB log-error=/var/log/mysqld.log sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES ################################### ##將mysql啓動腳本放入/etc/init.d/目錄中重命名爲mysqld [root@localhost ~]cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld ##編輯啓動腳本 [root@localhost mysql]# vi /etc/init.d/mysqld 把下面兩個修改一下,否則啓動會報錯 basedir=/user/local/mysql #修改爲mysql的安裝目錄 datadir=/data/mysql #修改爲mysql的數據目錄 ##將mysql啓動腳本加入chkconfig管理 [root@localhost ~]# chkconfig --add mysqld ##設置mysql開機自啓動 [root@localhost ~]# chkconfig mysqld on
centos7系統自帶mariadb
一、查詢系統是否安自動裝過mariadb
[root@localhost ~]# rpm -qa|grep mariadb-libs mariadb-libs-5.5.56-2.el7.x86_64
二、卸載系統自帶的mariadb
[root@localhost ~]# rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave ###卸載時會自動備份/etc/my.cnf文件,這時的my.cnf文件是以前安裝mysql的配置文件。
三、安裝依賴包
[root@localhost ~]# yum install -y libevent [root@localhost ~]# yum groupinstall -y Development Tools [root@localhost ~]# yum install -y ncurses-devel openssl-devel openssl
四、安裝mariadb
方式1:源碼安裝MariaDB
下載源碼包
[root@localhost ~]# cd /usr/local/src [root@localhost src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/source/mariadb-10.2.6.tar.gz [root@localhost src]# ll -d mariadb-10.2.6.tar.gz -r--------. 1 root root 70531254 Jun 21 22:53 mariadb-10.2.6.tar.gz
解壓源碼包
[root@localhost ~]# tar zxf mariadb-10.2.6.tar.gz [root@localhost ~]# cd mariadb-10.2.6 [root@localhost mariadb-10.2.6]# pwd /usr/local/src/mariadb-10.2.6
cmake設置安裝參數
[root@localhost mariadb-10.2.6]cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \ -DMYSQL_DATADIR=/data/mariadb \ #和mysql同樣須要先建立數據存放目錄再指定 -DSYSCONFDIR=/etc \ -DWITHOUT_TOKUDB=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STPRAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWIYH_READLINE=1 \ -DWIYH_SSL=system \ -DVITH_ZLIB=system \ -DWITH_LOBWRAP=0 \ -DMYSQL_UNIX_ADDR=/tmp/mariadb.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci [root@localhost mariadb-10.2.6]echo $? #檢查是否出錯 0
編譯安裝
[root@localhost mariadb-10.2.6]# make && make install [root@localhost mariadb-10.2.6]# echo $? 0
方式2:二進制包安裝MariaDB
下載二進制包
[root@localhost src]wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
解壓二進制包,而後移動到/usr/local/目錄下重命名爲mariadb
[root@localhost src]# tar zxf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz [root@localhost src]# mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb
三、初始化配置
建立mysql數據庫用戶 [root@localhost mariadb-10.2.6]# useradd mysql -s /usr/bin/nologin -M ##以前安裝mysql時已經建立過了
建立數據庫數據存放目錄及賦予權限
root@localhost mariadb-10.2.6]# mkdir /data/mariadb -p root@localhost mariadb-10.2.6]# chown mysql.mysql /data/mariadb /usr/local/mariadb -R
初始化mariadb
[root@localhost mariadb-10.2.6]# cd /usr/local/mariadb/ [root@localhost mariadb]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mariadb
複製配置文件到/etc目錄下
[root@localhost mariadb]# cd /usr/local/mariadb/support-files [root@localhost support-files]# cp my-small.cnf /etc/my.cnf
#在配置文件中 [mysqld] 標籤下面一行添加如下內容
datadir = /data/mariadb
[root@localhost support-files]vi /etc/my.cnf [mysqld] datadir = /data/mariadb port = 3306
複製mariadb啓動腳本到/etc/init.d/目錄下,重命名爲mariadbd
[root@localhost support-files]# cp mysql.server /etc/init.d/mariadbd 修改數據目錄和主目錄basedir和datadir [root@localhost support-files]vim /etc/init.d/mariadbd basedir=/usr/loacl/mariadb datadir=/data/mariadb
將mariadbd服務加入chkconfig管理
[root@localhost support-files]# chkconfig --add mariadbd [root@localhost support-files]# chkconfig mariadbd on
修改環境變量
[root@localhost mariadb]# vim /etc/profile export PATH=/usr/local/mariadb/bin/:$PATH
啓動mariadbd服務
systemctl start mariadbd
或者
mysql_safe start --defaults-file=/etc/my.cn --datadir=/data/mariadb
簡介:
Apache是一個基金會的名字,httpd纔是咱們要安裝的軟件包,早期它的名字就叫apache
Apache官網www.apache.org
準備源碼安裝包
###1:進入存放源碼的目錄
[root@localhost ~]cd /usr/local/src
###2:下載源碼安裝包
[root@localhost src]wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz [root@localhost src]wget http://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz [root@localhost src]wget http://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.bz2 [root@localhost src]wget https://sourceforge.net/projects/expat/files/expat/2.2.3/expat-2.2.3.tar.bz2
##(注:apr和apr-util是一個通用的函數庫,它讓httpd能夠不關心底層的操做系統平臺,能夠很方便地移植(從linux移植到windows))
###3:解壓源碼包
[root@localhost src]tar zxf httpd-2.4.33.tar.gz [root@localhost src]tar jxf apr-util-1.6.1.tar.bz2 [root@localhost src]tar zxf apr-1.6.3.tar.gz [root@localhost src]tar jxf expat-2.2.3.tar.bz2echo
編譯安裝
1:編譯安裝expat
####apr-util 1.6.0再也不捆綁安裝 expat ,但又須要expat的支持,因此咱們得手動先安裝expat。否則編譯 apache 的時候會報錯。
###進入expat-2.2.3源碼目錄
[root@localhost src]# cd expat-2.2.3
###設置安裝參數
[root@localhost expat-2.2.3]# ./configure --prefix=/usr/local/expat
###編譯安裝
[root@localhost expat-2.2.3]# make && make install
#檢查是否有錯誤。輸出0表示安裝成功
[root@loclhost apr-1.6.3]# echo $? 0
2:編譯安裝apr依賴包
###進入apr-util源碼目錄
[root@localhost src]# cd /usr/local/src/apr-1.6.3
###設置安裝參數
[root@localhost apr-1.6.3]# ./configure --prefix=/usr/local/apr
###編譯並安裝
[root@localhost apr-1.6.3]# make -j4 && make -j4 install
#檢查是否有錯誤。輸出0表示安裝成功
[root@localhost apr-1.6.3]# echo $? 0
3:編譯安裝apr-util
###進入apr-util源碼目錄
[root@localhost src]# cd /usr/local/src/apr-util-1.6.1
###設置安裝參數
[root@localhost apr-util-1.6.1]# ./configure \ --prefix=/usr/local/apr-util \ --with-apr=/usr/local/apr \ --with-expat=/usr/local/expat
###編譯並安裝
[root@localhost apr-util-1.6.1]# make && make install
#檢查是否有錯誤。輸出0表示安裝成功
[root@long0000 apr-util-1.6.1]# echo $? 0
4:編譯安裝httpd
###進入httpd源碼目錄
[root@localhost src]# cd /usr/local/src/httpd-2.4.33
###設置安裝參數
[root@localhost 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
###--enable-so 可讓Apache支持動態擴展,
###--enable-mods-shared=most 讓Apache加載大多數須要用到的模塊。
#檢查是否有錯誤。輸出0表示沒有錯誤
[root@localhost httpd-2.4.33]# echo $? 0
#####若是報錯:
configure: error: pcre-config for libpcre not found.
#####解決辦法:
yum install -y pcre-devel
###編譯並安裝
[root@localhost httpd-2.4.33]# make && make install
#檢查是否有錯誤。輸出0表示安裝成功
[root@localhost httpd-2.4.33]# echo $? 0
Apache經常使用目錄
./bin 存放Apache主要的二進制可執行文件,還有一些命令,httpd,apachectl等。 ./conf 存放配置文件的目錄 ./logs 存放日誌文件的目錄 ./modules 存放模塊的目錄,一個文件就是一個模塊,也就是一個功能
查看httpd加載了哪些模塊
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_event_module (static) authn_file_module (shared) ...
(static) 表示靜態的模塊,已經編譯到httpd主程序中,
(shared) 表示這個一個擴展的模塊。
啓動httpd服務
[root@localhost ~]/usr/local/apache2.4/bin/apachectl -t #檢查配置文件是否有錯誤 ###AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fed3:3e41. Set the 'ServerName' directive globally to suppress this message
這個錯誤不會影響服務的啓動,只是一個提示,沒有定義ServerName
啓動httpd服務
[root@localhost ~]/usr/local/apache2.4/bin/apachectl start 。
簡介:
PHP官網www.php.net
當前主流版本爲5.6/7.1
安裝PHP5
安裝依賴包
[root@localhost ~]yum -y install libxml2-devel openssl-devel bzip2-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel
準備源碼包
##進入存放源碼包的目錄
[root@localhost ~]cd /usr/local/src/
##下載源碼包
[root@localhost src]wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
##解壓源碼包
[root@localhost src]tar zxf php-5.6.30.tar.gz
##進入源碼目錄
[root@localhost src]cd php-5.6.30
配置安裝參數
[root@localhost 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
####重要安裝參數說明:
--prefix 指定安裝路徑
--apxe2 apache的一個工具,能夠自動將PHP生成的模塊文件放到modules目錄下,而且添加相關配置
--with-config-file 指定php配置文件所在的路徑
--with-mysql 指定mysql的路徑
--with-pdo-mysql、--with-mysqli : mysqli擴展技術不只能夠調用MySQL的存儲過程、處理MySQL事務,並且還可使訪問數據庫工做變得更加穩定。
##更多參數詳細說明參考:https://www.cnblogs.com/52php/p/5668828.html
編譯安裝
[root@localhost php-5.6.30]make && make install
#檢查是否有錯誤。輸出0表示安裝成功
[root@localhost php-5.6.30]# echo $? 0
##複製參考配置文件到安裝PHP指定的配置文件目錄下
[root@localhost php-5.6.30]cp php.ini-production /usr/local/php/etc/php.ini
安裝依賴包
[root@localhost ~]yum -y install libxml2-devel openssl-devel bzip2-devel libjpeg-devel libpng-dvel freetype-devel libmcrypt-devel
##進入存放源碼包的目錄
[root@localhost ~]cd /usr/local/src/
##下載源碼包
[root@localhost src]wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
##解壓源碼包
[root@localhost src]tar jxf php-7.1.6.tar.bz2
##進入源碼目錄
[root@localhost src]cd php-7.1.6
設置安裝參數
[root@localhost php-7.1.6]./configure --prefix=/usr/local/php7 \ --with-apxs2=/usr/local/apache2.4/bin/apxs \ --with-config-file-path=/usr/local/php7/etc \ --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
編譯安裝
[root@localhost php-7.1.6]make -j4 && make -j4 install
#檢查是否有錯誤。輸出0表示安裝成功
[root@localhost php-7.1.6]# echo $? 0
##複製參考配置文件到安裝PHP指定的配置文件目錄下
[root@localhost php-7.1.6]# cp php.ini-production /usr/local/php7/etc/php.ini
檢查apxs自動添加的配置
[root@localhost ~]# cat /usr/local/apache2.4/conf/httpd.conf | grep "LoadModule php" LoadModule php5_module modules/libphp5.so LoadModule php7_module modules/libphp7.so
##這就是apxs工具在編譯PHP的時候,在配置文件中添加的兩行配置
##同時加載了PHP5和PHP7,這樣會有衝突,須要註釋掉一條才能正常使用PHP解析
註釋掉加載PHP7的那一行配置
#LoadModule php7_module modules/libphp7.so
還須要在配置文件中修改下面的內容
[root@localhost conf]# vim httpd.conf 找到: #ServerName www.example.com:80 去掉前面的#號,可解決安裝完apache時,啓動服務的那個警告 找到: <Directory /> AllowOverride none Require all denied </Directory> 將 Require all denied 修改成 Require all granted 找到: AddType application/x-gzip .gz .tgz 在下面添加一行:AddType application/x-httpd-php .php 找到: <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> 在DirectoryIndex後面添加上 index.php
##index通常爲索引頁, 也就是默認頁面
##當訪問一個域名時,域名後面沒有指定任何文件時,默認就會請求這個文件。
##好比訪問www.baidu.com 實際就是訪問的是 www.baidu.com/index.php
如須要在Windows下測試,還須要在防火牆中配置容許訪問80端口,或者關閉防火牆
##用 Firewalld 添加容許訪問80端口
[root@loclhost conf]# firewall-cmd --add-port=80/tcp success
或者 iptables 添加容許訪問80端口
[root@localhost conf]# iptables -I INPUT -p tcp --dport=80 -j ACCEPT
##測試配置文件是否有語法錯誤
[root@localhost conf]# cd /usr/local/apache2.4/bin [root@localhost bin]# ./apachectl -t Syntax OK #輸出Syntax OK 表示配置文件沒有語法錯誤。
##啓動服務
[root@localhost bin]# ./apachectl start
##若是已經啓動過httpd服務,修改了配置文件須要從新加載配置文件
[root@localhost bin]# ./apachectl graceful
使用curl命令 測試訪問默認頁面,
##-I選項獲取頁面的頭部信息,第一行的狀態碼是200表示能正常訪問頁面
[root@localhost bin]# curl -I localhost HTTP/1.1 200 OK Date: Sun, 26 Jun 2018 10:08:39 GMT Server: Apache/2.4.33 (Unix) PHP/5.6.30 Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT ETag: "2d-432a5e4a73a80" Accept-Ranges: bytes Content-Length: 45 Content-Type: text/html
測試訪問PHP頁面
[root@localhost bin]# vi /usr/local/apache2.4/htdocs/test.ph ##加入下面的內容 <?php echo hello php; ?>
##使用curl命令獲取test.php頁面的頭部信息
[root@localhost bin]# curl -I localhost/test.php HTTP/1.1 200 OK Date: Sun, 26 Jun 2018 10:09:08 GMT Server: Apache/2.4.33 (Unix) PHP/5.6.30 X-Powered-By: PHP/5.6.30 Content-Type: text/html; charset=UTF-8
##測試解析PHP 顯示以下爲正常
[root@localhost bin]# curl localhost/test.php hello php