開發環境搭建(lnmp)
我們的開發環境一般現在時用Linux + Nginx + MySQL(mariaDB) + PHP的組合進行項目的搭建與開發,工欲善其事必先利其器。
搭建環境:
Centos7 + mysql5.6 + php7
廢話少說,直接上幹貨
1. 安裝mysql5.*
與centos6不同,centos7必須使用社區倉庫來按章mysql
如果使用
yum install mysql
默認會安裝MariaDB數據庫
所以,安裝:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update yum install mysql-server
安裝過程中。使用y確定安裝
完成之後,mysql會默認安裝在/var/lib/mysql目錄下
啟動mysql並設置開機啟動
systemctl start mysqld #啟動 mysql systemctl enable mysqld #開機啟動mysql
mysql安裝後會綁定到地址localhost(127.0.0.1),默認用戶名:root。密碼為空
使用下面的mysql_secure_installation進行密碼修改
註意: mysql5.7.6+版本修改方式會不同
2. 安裝nginx
如果系統中存在apache,可以先進行卸載
service httpd stop systemctl disable httpd yum remove httpd
nginx安裝
yum install peel-release yum -y install nginx
啟動nginx服務並設置為開機啟動
systemctl start nginx systemctl enable nginx
好了,現在我們可以打開瀏覽器輸入服務器的域名或IP地址:
nginx默認的html根目錄是: /usr/share/nginx/html
為了讓web應用能讀寫,設置擁有者為nginx用戶:
chown -R nginx:nginx html/
註意點:
有時候會出現nginx正常啟動,但是頁面無法正常訪問的問題,這個有可能是防火墻的問題
使用telnet測試端口
telnet 192.168.11.119 80
正常連接
查看端口是否開啟
firewall-cmd --zone=public --query-port=80/tcp
如果沒有開啟,將其開啟
firewall-cmd --zone=public --add-port=80/tcp --permanent //設置完成之後,一定要記得重啟防火墻 systemctl-cmd --reload
3. php-fpm 安裝
PHP通過 php-fpm(FastCGI進程管理器)可以很好的與nginx協同工作
PHP5的安裝:
yum install php php-mysql php-fpm
PHP7的安裝:
rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm. # 安裝epel源 rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm #安裝Webstatic源 yum install php72w php72w-common php72w-fpm php72w-opcache php72w-mysqlnd php72w-gd php72w-mbstring # PHP 5.3.0以上推薦使用mysqlnd驅動,而不是msyql
這裏使用webstatic源來安裝PHP7.2
進行配置:
1)打開配置文件 /etc/php.ini 刪除cgi.fix_pathinfo前面註釋符並賦值為0
[...] cgi.fix_pathinfo=0 [...]
再配置PHP-FPM.打開文件/etc/php-fpm.d/www.conf
將127.0.0.1:9000 改為php-fpm.sock
取消listen.owner 和 listen.group 前面的註釋
將user和group值都由apache改成nginx
如下:
[...] listen = /var/run/php-fpm/php-fpm.sock [...] listen.owner = nobody listen.group = nobody [...] user = nginx group = nginx [...]
啟動php-fpm並設置開機啟動
systemctl start php-fpm systemctl enable php-fpm
php-fpm啟動之後,會生成socket文件 /var/run/php-fpm/php-fpm.sock 作為守護進程運行FastCGI服務
nginx配置:
Nginx 的配置文件是:/etc/nginx/nginx.conf 進行配置
首先,根據情況調整worker_processes
和keepalive_timeout
(可選)
[...] worker_processes 4; [...] keepalive_timeout 2; [...]
虛擬主機定義在 server{}
容器中,修改為如下內容:
[...] server { listen 80; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # 設置默認主頁 index index.php index.html index.htm; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } # PHP腳本轉發至PHP-FPM解析 location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; include fastcgi_params; } } [...]
關於配置的一些說明:
- 首先,我們打開兩個
listen
,讓 Nginx 同時偵聽 IPv4 和 IPv6 的80
端口。 server_name _;
綁定所有的域名(可以指定主機名,如www.example.com
)。- 腳本根目錄 root 不變,依然是
/usr/share/nginx/html
。 - 索引首頁文件 index 添加上
index.php
。 - 其中針對 PHP 很重要的部分在
location ~\.php$ {}
中。為防止零日攻擊(詳見:http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP andhttp://forum.nginx.org/read.php?2,88845,page=3),該部分開頭設置了try_files $uri =404;
。
保存配置文件後,檢查配置文件的語法,再重新加載 Nginx:
nginx -t # 檢查配置文件語法 systemctl reload nginx # 重新加載nginx
使用tcp進行連接:
默認情況下,PHP-FPM 通過 /var/run/php-fpm/php-fpm.sock 文件偵聽 socket。
當然,也可以設置 PHP-FPM 使用 TCP 連接。
打開文件 /etc/php-fpm.d/www.conf,設置 listen
值如下:
[...] ;listen = /var/run/php-fpm/php-fpm.sock listen = 127.0.0.1:9000 [...]
這樣 PHP-FPM 會偵聽地址 127.0.0.1
(localhost)和端口9000
,確保這個端口沒有被其他程序占用。
然後重新加載 PHP-FPM:
systemctl reload php-fpm
接下來,編輯 /etc/nginx/nginx.conf 文件,修改如下一行:
[...] #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_pass 127.0.0.1:9000; [...]
然後,重載 nginx 就可以了:
systemctl reload nginx
參考文件:
1.http://dl.fedoraproject.org
2.https://webtatic.com/packages/php72/
3.http://php.net/manual/zh/install.unix.nginx.php
4.Centos7 安裝 PHP7最新版
5.CentOS 7 安裝 Nginx、PHP7、PHP-FPM
6.How To Install Linux, Nginx, MySQL, PHP (LEMP) stack On CentOS 7
7.Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support (LEMP) On Ubuntu 14.04 LTS
8.How to Install MySQL on CentOS 7
9.HOW TO INSTALL AND CONFIGURE NGINX ON CENTOS 7
開發環境搭建(lnmp)