任務列表:
11.1 LAMP架構介紹
11.2 MySQL、MariaDB介紹
11.3/11.4/11.5 MySQL安裝
11.6 MariaDB安裝
11.7/11.8/11.9 Apache安裝
11.10/11.11/11.12 安裝PHP5
11.13 安裝PHP7
11.14/11.15 Apache和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
apache apxs https://wizardforcel.gitbooks.io/apache-doc/content/51.html
apache工做模式 http://www.cnblogs.com/fnng/archive/2012/11/20/2779977.html
php中mysql,mysqli,mysqlnd,pdo究竟是什麼 http://blog.csdn.net/u013785951/article/details/60876816
查看編譯參數 http://ask.apelearn.com/question/1295php
設置apache(httpd)開機自啓動https://blog.csdn.net/aerchi/article/details/80859894html
將默認的yum源更換爲阿里雲的源:https://my.oschina.net/u/2449787/blog/778145mysql
mysql5.7版本和以前版本初始化的不一樣: ./bin/mysqld --initialize --user=mysql --datadir=/data/mysql
mysql5.7版本更改用戶密碼:update user set authentication_string=password('123333') where user='root';
關於版本的小常識:http://www.05bk.com/520.html
mariadb官方yum源安裝
wget -O - https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |sh
yum list |grep MariaDBlinux
apache https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/git
1、LAMP架構介紹web
Linux+Apache(httpd)+MySQL+PHPsql
習慣上,apache通常是指httpd,固然Apache還有不少的其餘軟件。Apache是最經常使用的web服務軟件,而MySQL是比較小型的數據庫軟件,MySQL存儲用戶名、密碼和數據,圖片之類的放在靜態文件裏。 這兩個軟件及PHP均可以安裝到windows機器上。shell
三個角色能夠在一臺機器、也能夠分開(httpd和PHP要在一塊兒),Apache和PHP須要安裝到同一臺機器上,由於PHP是做爲Apache的一個模塊存在的,兩個必須在一塊兒。數據庫
httpd、PHP、MySQL三者如何工做:apache
2、MySQL、MariaDB介紹
MySQL是一個關係型數據庫,由mysql ab公司開發,mysql在2008年被sun公司收購(10億刀),2009年sun公司被oracle公司收購(74億刀)。
MySQL官網https://www.mysql.com 最新版本5.7GA/8.0DMR。
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。
Community 社區版本,Enterprise 企業版,GA(Generally Available)指通用版本,在生產環境中用的,DMR(Development Milestone Release)開發里程碑發佈版,RC(Release Candidate)發行候選版本,Beta開放測試版本,Alpha內部測試版本。
3、MySQL安裝
MySQL的幾個經常使用安裝包:rpm、源碼、二進制免編譯
cd /usr/local/src 進入該目錄
使用uname -a或-i查看Linux系統是多少位的,這裏是64位,下載對應的64位MySQL包
3.1下載MySQL軟件包
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
3.2 初始化Mysql
tar zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz 把以前下載的包,解壓
mv mysql-5.6.43-linux-glibc2.12-x86_64 /usr/local/mysql 移到/usr/local/下,且更名爲mysql
cd /usr/local/mysql 進入該目錄
useradd mysql 添加用戶mysql
mkdir /data/ 須要建立數據庫目錄,若是/data/已經存在,那就直接初始化;
mysql用到的安裝包:yum install -y epel-release wget perl-Module-Install.noarch libaio*
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
--user=mysql 指定用戶爲mysql
--datadir=/data/mysql 指定數據庫目錄
所以執行此步前,必須建立用戶,指定目錄
初始化時發現上面有錯誤,缺乏Perl模塊,缺乏Dumper的支持;谷歌或百度查詢安裝
或yum list |grep perl |grep -i dumper 模糊搜索出可能會須要的包去安裝,進行安裝
此處須要安裝的是 yum install -y perl-Data-Dumper
此處報錯,緣由是由於少了libaio庫文件
yum install -y libaio-devel 安裝便可,在初始化./scripts/mysql_install_db --user=mysql --datadir=/data/mysql便可成功
判斷是否初始化成功,有兩個OK,或 echo $? 必需要在初始化完成後當即使用不要作任何操做 ,檢驗上一條命令是否正確,0表明成功
3.3 配置文件
ls support-files/ 放配置文件和啓動腳本的目錄
ls support-files/my-default.cnf mysql的模板配置文件
cp support-files/my-default.cnf /etc/my.cnf 此時須要把模板配置文件複製到其餘地方,並更名叫my.cnf,可是my.cnf已經存在,不執行
mysql的配置文件就是my.cnf,固定放在/etc/下,若是想放到其餘目錄下,須要在啓動的時候作一個指定,否則默認去etc下找my.cnf
ls /etc/my.cnf 這裏有自帶的配置文件my.cnf
rpm -qf /etc/my.cnf 查看這個配置文件的來源,來自mariadb,能夠繼續使用,前提是該其中的設置,以下
vi /etc/my.cnf
ls support-files/ //mysql的啓動腳本也在此目錄下
cp support-files/mysql.server /etc/init.d/mysqld //把mysql.server複製到mysqld這個新目錄
自定義啓動腳本:
1.腳本放到/etc/init.d/中
2.vi /etc/init.d/mysqld 編輯此腳本
basedir=/usr/local/mysql //指定mysql 的程序目錄
datadir=/data/mysql //指定日期目錄
定義mysqld爲755權限 ,ls -l /etc/init.d/mysqld 查看是否是755,默認是755權限
設置開機啓動 : 增長到系統列表服務:chkconfig --add mysqld
chkconfig mysqld on
service mysqld stop
service mysqld start
chkconfig --list //查看系統列表
3.4 啓動與關閉服務
**常規啓動 **
啓動:service mysqld start 或 - /etc/init.d/mysqld start
關閉:service mysqld stop
ps aux |grep mysql 查看mysql進程已經啓動
netstat -lntp 端口爲3306
用命令行啓動
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql/
--defaults-file=/etc/my.cnf 定義默認的配置文件
--user=mysql 定義用戶
--datadir=/data/mysql/ 定義數據目錄
先關閉進程service mysqld stop,查看已關閉
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql/ & //用命令行啓動,須要加上&,把它放入後臺
在查看進程,已經開啓,查看網絡連接,有3306端口,說明mysql啓動成功
使用命令行啓動的進程,須要使用killall 殺進程進行關閉,儘可能不要用kill PID,更加安全
使用killall會先中止當前的寫讀操做,把正在寫入的數據寫入完成後,在殺死進程,若是一直沒法殺死,說明數據量大,慢慢等完成後便可,不然有可能會丟失數據
mysql的引擎innodb和 myisam(瞭解)
MariaDB和mysql同源,所以安裝方式也是如出一轍的;
下載MariaDB包
cd /usr/local/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下
tar zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb //移到local下面,更名爲mariadb
cd /usr/local/mariadb 進入mariadb目錄
初始化,此處和mysql同樣
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb
echo $? //檢測上一步正確:0
把mariadb的默認配置文件與啓動腳本文件複製一份,並改以下名稱
進入目錄
cp support-files/my-small.cnf /usr/local/mariadb/my.cnf //把配置文件拷貝到/usr/local/mariadb/目錄下,更名爲my.cnf,路徑和mysql不同,爲了區分
cp support-files/mysql.server /etc/init.d/mariadb //啓動腳本文件
按下圖編輯配置文件和啓動腳本:
vi /usr/local/mariadb/my.cnf
更改配置,主要針對mysqld修改,目前不須要修改
更改啓動腳本 :vim /etc/init.d/mariadb
conf 自定義參數,指定配置文件所在路徑
經過start搜索
啓動mariadb服務:/etc/init.d/mariadb start
ps aux |grep mysql //查看有沒有mysql進程,二者會相沖突
etc/init.d/mariadb start //啓動服務
ps aux |grep mariadb //再次查看進程,確認啓動
netstat -lntp //查看網絡連接,有3306端口
有個小問題:進程中:--datadir=/data/mysql 這裏仍是mysql而不是--datadir=/data/mariadb
解決:那是由於剛纔沒有修改配置文件 /usr/local/mariadb/my.cnf;在那裏面沒有指定相應的目錄;它會自動加載mysql的配置文件目錄;
在配置文件按下圖添加目錄
先中止服務,在殺掉mysqld進程,再次開啓mariadb服務
/etc/init.d/mariadb stop
killall mysqld
ps aux |grep mariadb
/etc/init.d/mariadb start
ps aux |grep mariadb
5、Apache安裝
先進到目錄 cd /usr/local/src/
分別下載:2.4.39源碼包,apr-1.6.5,apr-util-1.6.1;後面兩個是通用函數庫;
依次解壓包
tar zxvf apr-1.6.5.tar.gz
tar zxvf apr-util-1.6.1.tar.gz
tar zxvf httpd-2.4.39.tar.gz
5.2 安裝apr-1.6.5
到apr-1.6.5目錄下cd apr-1.6.5/
安裝包: ./configure --prefix=/usr/local/apr
安裝apr-1.6 rm cannot remove `libtoolT'報錯(沒有影響) :https://jingyan.baidu.com/article/b907e627611f6b46e7891cb6.html
echo $? 爲0沒問題
執行 make && make install
完成後生成4個目錄 ls /usr/local/apr/
5.3 安裝apr-util-1.6.1
進入cd /usr/local/src/apr-util-1.5.4目錄
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
此時發現錯誤,缺乏expat.h包
執行 yum install -y expat*
再次make && make install
生成目錄 ls /usr/local/apr-util/
5.4 安裝apache2.4
cd /usr/local/src/httpd-2.4.39 進到httpd目錄
執行安裝./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
此時報錯:按提示,查找安裝包:yum list |grep pcre
安裝 yum install -y pcre-devel
再次執行安裝./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most
./configure \ //這裏的反斜槓是脫義字符,加上它咱們能夠把一行命令寫成多行
--prefix=/usr/local/apache2.4 \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--enable-so \
--enable-mods-shared=most
在執行make && make install,若是出現此報錯,從新安裝apr和apr-util便可
安裝成功,查看apache2.4目錄下的目錄
cd /usr/local/apache2.4/
ls modules/ //默認模板
/usr/local/apache2.4/bin/httpd -M //查看加載的模塊 或者使用/usr/local/apache2.4/bin/apachectl -M 效果同樣(shell文件,去調用了二進制文件)
5.5 啓動httpd服務
啓動httpd服務:/usr/local/apache2.4/bin/apachectl start (此提示可在配置文件關閉)
查看有關httpd的進程
6、安裝PHP5
雖然目前最新版本的PHP爲PHP7,可是還有批量的PHP5在使用,並且一些論壇軟件不支持PHP7,所以也須要掌握PHP5和PHP7;
在/usr/local/src/目錄下,下載源碼
cd /usr/local/src/ 進入目錄
下載源碼 wget http://cn2.php.net/distributions/php-5.6.39.tar.bz2
解壓 php-5.6.32.tar.bz2
tar -xvjf php-5.6.39.tar.bz2
進入php-5.6.32 目錄下,進行配置
./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=/usr/local/php 指定的安裝目錄;
–with-apxs2=/usr/local/apache2/bin/apxs 該文件是Apache的一個工具,能夠將擴展模塊添加到Apache的module文件;
–with-config-file-path=/usr/local/php/etc 指定配置文件所在路徑;
–with-mysql=/usr/local/mysql 指定mysql的路徑;
–with-mysqli=/usr/local/mysql/bin/mysql_config
–with-pdo-mysql=/usr/local/mysql –with-mysqli=/usr/local/mysql/bin/mysql_config 上面兩項參數是指定相關mysql庫
–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 以上參數是指定PHP相關的一些模塊(通用)。
執行配置後,報錯
安裝 yum install -y libxml2-devel 繼續執行配置
繼續報錯:缺乏openssl相關的庫,直接安裝便可
yum install -y openssl-devel 完成後繼續執行配置
繼續報錯:yum -y install bzip2-devel
php編譯常見錯誤: https://blog.csdn.net/u011608531/article/details/50756112
Configure: error: freetype.h not found 錯誤解決方法以下:
使用: yum install freetype-devel
使用yum命令安裝
yum install php-mcrypt libmcrypt libmcrypt-devel
此時安裝成功
而後安裝 make 和make install
查看php5下有哪些模塊:/usr/local/php/bin/php 核心文件在此目錄下
/usr/local/php/bin/php -m
php做爲httpd的模塊存在;所以php 不須要啓動;
查看httpd的模塊;此時能看到 php5_module (shared) 此模塊很重要
查看模塊libphp5.so文件的權限
ls -l /usr/local/apache2.4/modules/libphp5.so
vim /usr/local/apache2.4/conf/httpd.conf //進入httpd的配置文件
此時爲配置文件裏面的模塊,增減#能夠隨用隨取,用哪一個模塊就去掉前面的#,不用就加上#
php的參考配置文件
php.ini-production 生產環境用
php.ini-development 開發環境和測試環境下用
/usr/local/php/bin/php -i |less
cp php.ini-production /usr/local/php/etc/php.ini
7、PHP7的安裝
cd /usr/local/src/ 進目錄
在/usr/local/src/目錄下,下載php7源碼
wget http://cn2.php.net/distributions/php-7.1.25.tar.bz2
tar jvxf php-7.1.25.tar.bz2 解壓
進入 cd php-7.1.25目錄
./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
配置完成後,make編譯
make && make install
查看php7的模塊,和php5基本 同樣
查看httpd的模塊;此時能看到 php5_module (shared)和 php7_module (shared);再次說明php是做爲httpd的模塊存在;
/usr/local/apache2.4/bin/apachectl -M
php5_module (shared)
php7_module (shared)
存在多個php版本時,經過修改配置文件,選擇使用哪一個版本,不用的註釋掉便可
8、 Apache和PHP結合
Apache(httpd)主配置文件/usr/local/apache2.4/conf/httpd.conf
在啓動httpd服務的時候,總會有如下警告;經過更改配置文件,能夠取消;
/usr/local/apache2.4/bin/apachectl start
按下圖更改配置文件:/usr/local/apache2.4/conf/httpd.conf
vim /usr/local/apache2.4/conf/httpd.conf //修改如下4個地方
ServerName
Require all denied
AddType application/x-httpd-php .php
DirectoryIndex index.html index.php
這個也須要不要讓php7加載,由於不能同時調用兩個php
關閉服務,再次啓動,就沒有加載警告信息
此時咱們沒法網頁192.168.200.3
此時咱們開始排查問題:
第一步:在windows上ping 192.168.112.168 是否通暢;
第二步:IP通暢,那麼咱們檢查端口,先在window啓用telnet,只選擇客戶端,服務端危險;
第三步:開始檢查端口;
第四步:iptables -nvL查看無故口,指定80端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
第五步:再次用telnet測試端口;已經通了,ctrl+]退出
第六步:此時咱們再瀏覽器再訪問192.168.200.3
此時可以顯示,那是由於在配置文件裏面
把 Require all granted 改成Require all denied;保存配置文件
此時咱們爲了安全起見,不重啓配置文件;用如下命令檢測配置、加載配置驗證;
/usr/local/apache2.4/bin/apachectl -t //檢查更改配置是否語法錯誤
/usr/local/apache2.4//bin/apachectl graceful //加載配置文件
此時咱們再瀏覽器再訪問192.168.112.168,顯示:禁止訪問
在 配置文件httpd.conf 還須要把此處更改成granted;不然會出現403狀態碼,通常爲200;
檢測配置,加載配置
/usr/local/apache2.4/bin/apachectl -t
usr/local/apache2.4//bin/apachectl graceful
在配置文件裏面增長以下內容,意思解析php
AddType application/x-httpd-php .php
添加以下內容,就會直接跳轉到主頁,添加完成後,檢查和從新加載
DirectoryIndex index.html index.php
新建一個1.php
vim /usr/local/apache2.4/htdocs/1.php
<?php
phpinfo(); //打印php的全部函數
?>
此時咱們再瀏覽器中,看是否解析PHP (在配置中增長內容,不須要重啓php)
php可以支持解析;那麼把它加上#AddType application/x-httpd-php .php,表明不加載
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
此時打開瀏覽器,咱們發現不解析php,只是源代碼;
問題總結:
若是瀏覽器不能解析php,那麼須要從如下幾點來入手:
第一步:查看有沒有加載php模塊;
第二步:查看沒有php模塊文件
第三步:前面兩項有,在httpd.con的配置文件中,有加載模塊;
第四步:以前都有,在httpd.con的配置文件中,有沒有此項;
第五步:在httpd.con的配置文件中,下面加 index.php
由於php7與php5不能同時加載,此時須要在httpd.con的配置文件中,把php7模塊加載,把php5註釋掉
檢查,加載配置文件httpd.conf
此時再次經過瀏覽器,查看