1方案php
安裝部署Nginx、MariaDB、PHP環境html
- 安裝部署Nginx、MariaDB、PHP、PHP-FPM;
- 啓動Nginx、MariaDB、FPM服務;
LNMP(Linux、Nginx、MySQL、PHP)mysql
在RHEL7系統中,源碼安裝Nginx,使用RPM包安裝MariaDB、PHP、PHP-FPM軟件。nginx
操做過程當中須要安裝的軟件列表以下:sql
- nginx
- mariadb、mariadb-server、mariadb-devel
- php、php-fpm、php-mysql
備註:mariadb(數據庫客戶端軟件)、mariadb-server(數據庫服務器軟件)、mariadb-devel(其餘客戶端軟件的依賴包)、php(解釋器)、php-fpm(進程管理器服務)、php-mysql(PHP的數據庫擴展包)。數據庫
步驟一:安裝軟件vim
1)使用yum安裝基礎依賴包瀏覽器
- [root@proxy ~]# yum -y install gcc openssl-devel pcre-devel
2)源碼安裝Nginx(若是前面課程中已經安裝Nginx,則忽略這一步)服務器
- [root@proxy ~]# useradd -s /sbin/nologin nginx
- [root@proxy ~]# tar -xvf nginx-1.12.2.tar.gz
- [root@proxy ~]# cd nginx-1.12.2
- [root@proxy nginx-1.12.2]# ./configure \
- > --user=nginx --group=nginx \
- > --with-http_ssl_module
- [root@proxy ~]# make && make install
- .. ..
3)安裝MariaDB架構
Mariadb在新版RHEL7光盤中包含有該軟件,配置yum源後能夠直接使用yum安裝:
- [root@proxy ~]# yum -y install mariadb mariadb-server mariadb-devel
4)php和php-fpm(該軟件包在lnmp_soft中提供)
- [root@proxy ~]# yum -y install php php-mysql
- [root@proxy ~]# yum -y install php-fpm-5.4.16-42.el7.x86_64.rpm
步驟二:啓動服務
1)啓動Nginx服務(若是已經啓動nginx,則能夠忽略這一步)
這裏須要注意的是,若是服務器上已經啓動了其餘監聽80端口的服務軟件(如httpd),則須要先關閉該服務,不然會出現衝突。
- [root@proxy ~]# systemctl stop httpd
- [root@proxy ~]# /usr/local/nginx/sbin/nginx
- [root@proxy ~]# netstat -utnlp | grep :80
- tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 32428/nginx
2)啓動MySQL服務
- [root@proxy ~]# systemctl start mariadb
- [root@proxy ~]# systemctl status mariadb
- [root@proxy ~]# systemctl enable mariadb
3)啓動PHP-FPM服務
- [root@proxy ~]# systemctl start php-fpm
- [root@proxy ~]# systemctl status php-fpm
- [root@proxy ~]# systemctl enable php-fpm
4)設置防火牆與SELinux(非必需操做,若是有則關閉)
- [root@proxy ~]# firewall-cmd --set-default-zone=trusted
- [root@proxy ~]# setenforce 0
使用2臺RHEL7虛擬機,其中一臺做爲LNMP服務器(192.168.4.5)、另一臺做爲測試用的Linux客戶機(192.168.4.10),兩臺虛擬機之間能夠通訊
Nginx結合FastCGI技術便可支持PHP頁面架構,以下圖所示
實現此案例須要按照以下步驟進行。
步驟一: php-fpm配置文件
1)查看php-fpm配置文件(實驗中不須要修改該文件)
- [root@proxy etc]# vim /etc/php-fpm.d/www.conf
- [www]
- listen = 127.0.0.1:9000
- pm.max_children = 32
- pm.start_servers = 15
- pm.min_spare_servers = 5
- pm.max_spare_servers = 32
步驟二:修改Nginx配置文件並啓動服務
- [root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
- location / {
- root html;
- index index.php index.html index.htm;
- #設置默認首頁爲index.php,當用戶在瀏覽器地址欄中只寫域名或IP,不說訪問什麼頁面時,服務器會把默認首頁index.php返回給用戶
- }
- location ~ \.php$ {
- root html;
- fastcgi_pass 127.0.0.1:9000; #將請求轉發給本機9000端口,PHP解釋器
- fastcgi_index index.php;
- #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi.conf;
- }
- [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload
- #請先確保nginx是啓動狀態,不然運行該命令會報錯,報錯信息以下:
- #[error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
步驟三:建立PHP頁面,測試LNMP架構可否解析PHP頁面
1)建立PHP測試頁面1,能夠參考lnmp_soft/php_scripts/test.php:
- [root@proxy ~]# vim /usr/local/nginx/html/test1.php
- <?php
- $i="This is a test Page";
- echo $i;
- ?>
2)建立PHP測試頁面,鏈接並查詢MariaDB數據庫。
能夠參考lnmp_soft/php_scripts/mysql.php:
- [root@proxy ~]# vim /usr/local/nginx/html/test2.php
- <?php
- $mysqli = new mysqli('localhost','root','密碼','mysql');
- if (mysqli_connect_errno()){
- die('Unable to connect!'). mysqli_connect_error();
- }
- $sql = "select * from user";
- $result = $mysqli->query($sql);
- while($row = $result->fetch_array()){
- printf("Host:%s",$row[0]);
- printf("</br>");
- printf("Name:%s",$row[1]);
- printf("</br>");
- }
- ?>
3)客戶端使用瀏覽器訪問服務器PHP首頁文檔,檢驗是否成功:
- [root@client ~]# firefox http:
- [root@client ~]# firefox http:
4)LNMP常見問題
Nginx的默認訪問日誌文件爲/usr/local/nginx/logs/access.log
Nginx的默認錯誤日誌文件爲/usr/local/nginx/logs/error.log
PHP默認錯誤日誌文件爲/var/log/php-fpm/www-error.log
若是動態網站訪問失敗,可用參考錯誤日誌,查找錯誤信息。