1. 程式人生 > >Linux搭建lamp(Apache+PHP+Mysql環境)centos7.4版詳細教程

Linux搭建lamp(Apache+PHP+Mysql環境)centos7.4版詳細教程

簡介

根據自己的產品對CPU、頻寬、記憶體等硬體配置的要求,選擇對應的配置,除錯期間我們一般選擇1核1G 1M,預設選擇40G雲盤。這樣一個月也就幾十塊的服務端成本。產品上線後,我們再根據使用者匯入規模,初期選擇了4核8G 10M 的配置。

1、確認centos版本

[[email protected] ~]# cat /etc/redhat-release

CentOS Linux release 7.4 (Core)

2、檢查是否安裝過apache

rpm -qa | grep httpd
或者:
apachectl -v
或者:
httpd -v

3、檢查是否安裝過Mysql

service mysqld start


5、清理Mysql痕跡如果未被識別則沒有安裝
如果系統安裝過,或者安裝失敗,清理一下系統

yum remove mysql
rm -f /etc/my.cnf

 

6、解除安裝Apache包

rpm -qa|grep httpd

注意:如果是新的系統或者你從來沒有嘗試安裝過,則以上步驟省略。

1.安裝Apache

安裝Apache

安裝
[[email protected] ~]# yum -y install httpd

開啟apache服務
[[email protected]
~]# systemctl start httpd.service 設定apache開機自啟動 [[email protected] ~]# systemctl enable httpd 或者 chkconfig httpd on Note: Forwarding request to 'systemctl enable httpd.service'.


至此,我們appache也安裝完畢,開啟瀏覽器輸入你的伺服器ip地址就可以看到如下頁面

更改apache預設網站目錄

當我們在Centos7中配置好Apache時,發現apache預設解析目錄是在 /var/www/html,也就是說當訪問伺服器 IP 或者本地 localhost 時,預設定位到這個目錄裡的 index.html 或 index.php 檔案。
如果不想用這個預設目錄,就要我們動手改了:

  • 一、先建立我們想要的目錄,我選擇在 /home 下建一個 www目錄

    [[email protected] ~]# cd /home/   --進入home資料夾下
    [[email protected] ~]# mkdir www   --建立www資料夾

     

  • 二、修改apache配置檔案,使定位到/home/www/

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf   -- 用編輯器開啟配置檔案(沒安裝vim的同學可以用vi)


然後:找到 DocumentRoot “/var/www/html” 這表示 #apache的根目錄,將該目錄改成 /home/www 即可。
再找到 <Directory "/var/www/html">這個區域,#定義apache /var/www/html這個區域,把 /var/www/html改成/home/www,這樣我們就把apahce的預設路徑改掉了。

[[email protected] ~]# systemctl restart httpd.service   --重啟apache伺服器。


完成以上步驟後,訪問主機IP,訪問成功。

  • 可能出現的問題

    如果顯示,you don’t have permission…..什麼的,則是許可權問題,因為有些版本的centos在建立資料夾的時候預設許可權是750apache作為一個外來的使用者,是沒有許可權訪問的,我們需要為其賦予許可權:

[[email protected] ~]# chmod -R 755 /home/www

特別的,如果你的專案用的是thinkphp框架,由於apache還要往Runtime資料夾裡面新增快取和日誌等內容,單單是 755 許可權是不夠的。因此要對Runtime這個目錄賦予全部許可權:至此,你已經成功的將apache預設目錄移至/home/www/下了。

[[email protected] ~]# chmod -R 777 /home/www/Runtime


禁用Apache預設頁面將你的專案移到該目錄下即可。

這一步,也可以不操作,主要是為了apache那個頁面

使用find / -name httpd.conf命令查詢到具體的路徑為/etc/httpd/conf/httpd.conf

進入到apache的目錄

[[email protected] ~]# vim /etc/httpd/conf.d/welcome.conf


更改為(註釋7-10行)將原檔案內容
1

1

重啟Apache :

[[email protected] ~]# service httpd restart


修改apache預設頁面方法

這一步,也可以不操作,主要是為了apache那個頁面

通過檢視welcome.conf這個配置檔案,可以發現apache預設頁面檔案為
/usr/share/httpd/noindex/index.html

修改這個檔案裡面的html,然後重啟apache就可以了

[[email protected] ~]# vim /usr/share/httpd/noindex/index.html
[[email protected] ~]# service httpd restart


安裝PHP2.安裝PHP

1、預設centos7 自帶的是php5.4版本,升級php5.7。不升級只有yum 安裝

2、我才用的是編譯安裝

下載php7
[[email protected] local]# wget -O php7.tar.gz http://cn2.php.net/get/php-7.1.1.tar.gz/from/this/mirror

解壓php7
[[email protected] local]# tar -xvf php7.tar.gz

重新命名php-7.1.1為php
[[email protected] local]# mv php-7.1.1 php

進入php目錄
[[email protected] local]# cd php

安裝依賴包
[[email protected] php]# yum install gcc libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

編譯安裝
[[email protected] php]# ./configure --prefix=/usr/local/php \

--with-config-file-path=/usr/local/php/etc \
--enable-inline-optimization --disable-debug \
--disable-rpath --enable-shared --enable-opcache \
--enable-fpm --with-fpm-user=www \
--with-fpm-group=www \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gettext \
--enable-mbstring \
--with-iconv \
--with-mcrypt \
--with-mhash \
--with-openssl \
--enable-bcmath \
--enable-soap \
--with-libxml-dir \
--enable-pcntl \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--with-curl --with-zlib \
--enable-zip \
--with-bz2 \
--with-readline

正式安裝
[[email protected] php]# make && make install

配置服務-配置檔案
php的解壓目錄複製一下php的配置檔案
[[email protected] php]# cp php.ini-development /usr/local/php/php.ini

 

配置PHP-fpm

配置PHP-fpm
[[email protected] php]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[[email protected] php]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[[email protected] php]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[[email protected] php]# chmod +x /etc/init.d/php-fpm
[[email protected] php]# chkconfig --add php-fpm

#設定開機自啟
[[email protected] php]# chkconfig php-fpm on
[[email protected] php]# service php-fpm start

##如果出現錯誤:ERROR: [pool www] cannot get uid for user 'www-data'
##則新建www-data 使用者組:
[[email protected] php]# groupadd www-data
[[email protected] php]# useradd -g www-data www-data

重啟php-fpm
[[email protected] php]# /etc/init.d/php-fpm restart

##如果出現錯誤:ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use
檢視佔用9000埠的程式:
[[email protected] php]# netstat -lntup | grep 9000

停止原先的php-fpm:
[[email protected] php]# killall php-fpm
[[email protected] php]# service php-fpm start

配置環境變數

配置環境變數
[[email protected] ~]# vim /etc/profile
在末尾追加 ## 這句話不要加
PATH=$PATH:/usr/local/php
export PATH
[[email protected] ~]# source /etc/profile

 

安裝完成後,重啟Apache伺服器

安裝完成後,重啟Apache伺服器
[[email protected] ~]# systemctl restart httpd.service

安裝PHP 可能出現的錯誤

centos7 apache無法解析php
使用yum安裝完apache、php7、mariadb之後,發現apache可以解析html檔案,但是不能解析php檔案。
配置apache來使用php-fpm,並寫好配置檔案,內容如下

<FilesMatch \.php$>
         SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

 

儲存到/etc/httpd/conf.modules.d/10-php-fpm.conf,然後啟動php-fpm,並重啟apache,php檔案解析成功

3.安裝MariaDB

安裝MariaDB (MySQL的一個開源分支)

1、檢查系統是否已經安裝了 mysql mariadb

[[email protected] ~]# rpm -qa | grep -i mysql
[[email protected] ~]# rpm -qa | grep -i mariadb

 

如果有的話,請先解除安裝

安裝mariadb 資料庫
[[email protected] ~]# yum install mariadb mariadb-server

 

這個指令碼會經過一些列的互動問答來進行MariaDB的安全設定。

首先提示輸入當前的root密碼:
Enter current password for root (enter for none):

初始root密碼為空,我們直接敲回車進行下一步。
Set root password? [Y/n]

設定root密碼,預設選項為Yes,我們直接回車,提示輸入密碼,在這裡設定您的MariaDB的root賬戶密碼。
Remove anonymous users? [Y/n]

是否移除匿名使用者,預設選項為Yes,建議按預設設定,回車繼續。
Disallow root login remotely? [Y/n]

是否禁止root使用者遠端登入?如果您只在本機內訪問MariaDB,建議按預設設定,回車繼續。 如果您還有其他雲主機需要使用root賬號訪問該資料庫,則需要選擇n。
Remove test database and access to it? [Y/n]

是否刪除測試用的資料庫和許可權? 建議按照預設設定,回車繼續。
Reload privilege tables now? [Y/n]

MariaDB安裝成功後,需要配置MySQL的root密碼,此外,備註一下啟動關閉MariaDB的常用命令

systemctl start mariadb     //啟動MariaDB
systemctl stop mariadb      //停止MariaDB
systemctl restart mariadb   //重啟MariaDB
systemctl enable mariadb    //設定開機啟動

 

設定root賬戶密碼

[[email protected] ~]# mysql_secure_installation

Enter current password for root (enter for none):
Set root password? [Y/n]

點選回車然後提示是否設定root賬號密碼,輸入y

New password:
Re-enter new password:
Password updated successfully!

最後如果出現Thanks for using MariaDB! 說明配置成功,輸入使用者名稱root和密碼進行登入測試

[[email protected] ~]# mysql -uroot -p


Navicat 遠端連線linux mariadb 可能出現的問題

解決Navicat 報錯:1130-host … is not allowed to connect to this MySql server,MySQL

解決方法:

  1. 改表法。
    可能是你的帳號不允許從遠端登陸,只能在localhost。這個時候只要在localhost的那臺電腦,登入mysql後,更改 “mysql” 資料庫裡的 “user” 表裡的 “host” 項,從”localhost”改稱”%”
[[email protected] ~]# mysql -u root -p
//輸入密碼
Enter password:		
mysql>use mysql;
mysql>update user set host = '%' where user = 'root'  and host='localhost';
mysql>select host, user from user;


親測可用。需要重啟MySQL服務。 或 再執行 執行一個語句 mysql>FLUSH RIVILEGES 使修改生效.就可以了

  1. 授權法。
    例如,你想myuser使用mypassword從任何主機連線到mysql伺服器的話。
    GRANT ALL PRIVILEGES ON . TO ‘myuser’@’%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    如果你想允許使用者myuser從ip為192.168.1.6的主機連線到mysql伺服器,並使用mypassword作為密碼
    GRANT ALL PRIVILEGES ON . TO ‘myuser’@’192.168.1.3’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    如果你想允許使用者myuser從ip為192.168.1.6的主機連線到mysql伺服器的dk資料庫,並使用mypassword作為密碼
    GRANT ALL PRIVILEGES ON dk.* TO ‘myuser’@’192.168.1.3’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
    FLUSH PRIVILEGES;

我用的第一個方法,剛開始發現不行,在網上查了一下,少執行一個語句 mysql>FLUSH RIVILEGES 使修改生效.就可以了
另外一種方法,不過我沒有親自試過的,在csdn.net上找的,可以看一下.
在安裝mysql的機器上執行:
1、d:/mysql/bin/>mysql -h localhost -u root //這樣應該可以進入MySQL伺服器

2、mysql>GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ WITH GRANT OPTION //賦予任何主機訪問資料的許可權

3、mysql>FLUSH PRIVILEGES //修改生效

4、mysql>EXIT //退出MySQL伺服器

這樣就可以在其它任何的主機上以root身份登入啦!

4.安裝PhpMyadmin

1、首先要去 phpMyAdmin 官網 下載。這裡我給大家下連結 http://www.phpmyadmin.net/downloads/ 在頁面裡你可以看到不同版本的 phpMyAdmin 你可以根據自己的需要進行下載。

22

2、放到到網站的目錄下面

[[email protected] ~]# cd /var/www/html

 

 

3、解壓phpMyAdmin-4.8.2-all-languages.tar.gz / 命名為phpMyAdmin

[[email protected] html]# tar -xvf phpMyAdmin-4.8.2-all-languages.tar.gz

[[email protected] html]# mv phpMyAdmin-4.8.2-all-languages phpMyAdmin

4、直接訪問網址
直接訪問網址 http://伺服器ip地址/phpmyadmin/index.php
然後進行登陸,可是登陸不了。結果報錯了:phpmyadmin mysqli_real_connect(): (HY000/2002): No such file or directory

再次重新整理頁面就不會出現mysqli_real_connect(): (HY000/2002): No such file or directory的錯誤提示了

phpmyadmin 上傳到網站目錄後提示解決phpmyadmin mysqli_real_connect(): (HY000/2002): No such file or directory的錯誤,解決方法把phpmyadmin目錄中的配置檔案config.sample.inc.php改成config.inc.php,並把

  $cfg['Servers'][$i]['host'] = 'localhost';
  #改成
  $cfg['Servers'][$i]['host'] = '127.0.0.1';

[[email protected] phpmyadmin]# cp config.sample.inc.php config.inc.php