5.7LAMP-安裝

 

任務列表:
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(瞭解)

4、MariaDB安裝

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

configure: error: mcrypt.h not found. Please reinstall libmcrypt. 解決辦法

使用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

關閉服務,再次啓動,就沒有加載警告信息

8.1 修改denied

此時咱們沒法網頁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;

8.2 解析php

檢測配置,加載配置

 /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

8.3 加載php7

由於php7與php5不能同時加載,此時須要在httpd.con的配置文件中,把php7模塊加載,把php5註釋掉

檢查,加載配置文件httpd.conf

此時再次經過瀏覽器,查看

相關文章
相關標籤/搜索