首先簡單介紹一下linux的兩種安裝方法,yum以及編譯安裝。yum是一個軟件包管理器,使用yum指令安裝,系統會自動下載軟件包并安裝,并且還能自動處理依賴,安裝依賴包,優點是方便簡單,缺點是管理器的軟件包往往不是最新版的,甚至可能比較老舊。
而編譯安裝則需要自己找相關軟件的代碼源,下載的軟件都是沒有編譯的代碼,所以需要自己編譯成可執行文件,所以叫做編譯安裝,它的優點是軟件源自己尋找,可以是最新的,也可以是舊的,比較靈活,缺點是操作步驟多,安裝繁瑣,新手失敗率大。
雖然yum安裝的軟件版本比較低,但我們可以通過配置第三方yum源的方式來安裝較新版本的軟件,下面我就整理介紹一下通過這種方式安裝成功的步驟。
參考了下面教程
http://www.cnblogs.com/toughlife/p/5479271.html
http://www.cnblogs.com/xiaoit/p/3991037.html
http://www.2cto.com/os/201702/597890.html
準備工作
首先你需要一臺裝好centos系統的虛擬機或服務器,本機測試環境是CentOS Linux release 7.3.1611
1、配置第三方yum源
先看一下默認yum安裝的php版本,會發現版本比較低
# yum list php
php.x86_64 5.4.16-42.el7 base
安裝centos7的源(注意不是6.5,源要與系統大版本號對應,否則會出錯)
# yum install epel-release
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
接下來使用擴展源搜索php的版本,我們發現能搜索到更高版本的軟件源了
# yum list --enablerepo=remi --enablerepo=remi-php56 php
php.x86_64 5.6.30-1.el7.remi remi-php56
# yum list --enablerepo=remi --enablerepo=remi-php70 php
php.x86_64 7.0.17-1.el7.remi remi-php70
關于yum第三方源網上有很多資源,我們可以自行選擇,以上是php的源,mysql的源網上也有,這里就不介紹了,道理都是一樣的
2、安裝php
使用擴展源yum安裝php及一堆擴展,這里選擇5.6版本的
# yum install --enablerepo=remi --enablerepo=remi-php56 php php-fpm php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof
使用下面兩個指令,任選其一,查看是否安裝成功,如果正確顯示版本號或路徑信息,則表示安裝成功了
# php --version
# which php
順便啟動一下php-fpm,再設置一下這個服務的開機啟動
# /bin/systemctl start php-fpm.service
# chkconfig php-fpm on
3、安裝nginx
由于沒有設置過nginx的yum源,默認安裝就好
#yum install nginx
查看是否安裝成功,成功顯示版本號信息表示安裝成功,或者在瀏覽器輸入'localhost',看是否出現如下頁面
# which nginx
/usr/sbin/nginx
# /usr/sbin/nginx -v
nginx version: nginx/1.10.2
啟動nginx服務,并設置開機啟動
# /bin/systemctl start nginx.service
# chkconfig nginx on
4、配置nginx支持php
nginx默認是不支持php腳本編譯的,所以需要先配置
將配置文件改為備份文件
# mv /etc/nginx/nginx.conf /etc/nginx/nginx.confbak
將默認的配置文件作為配置文件
# cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
進入nginx配置文件進行修改
# vi /etc/nginx/nginx.conf
找到80端口的配置,加入index.php
index index.php index.html index.htm;
加入下面的配置代碼,如果已經存在的,去掉注釋,并修改,其中/usr/share/nginx/html是web根目錄的地址,可以根據自己的喜好進行選擇,我一般放在/var/www下
location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; include fastcgi_params; }
最后,編輯文件php.ini,在文件末尾添加cgi.fix_pathinfo = 1,已經存在的去掉注釋就好了
# vi /etc/php.ini
重啟nginx和php-fpm服務
# /bin/systemctl restart nginx.service
# /bin/systemctl restart php-fpm.service
然后新建一個php文件,寫一個測試代碼,最常見的就是輸出phpinfo();
# vi /usr/share/nginx/html/test.php
在瀏覽器輸入'localhost/test.php',如果如下圖所示,表示配置成功
5、安裝MySQL
同樣,MySQL使用原生的yum安裝,安裝MySQL以及它的服務
# yum install mysql mysql-server mysql-devel
在安裝過程中我們會發現沒有可用軟件包 mysql-server。這個提示,因為centos7默認的數據庫不是MySQL,而是Mariadb。
Mariadb是MySQL的一個分支,但完全兼容MySQL,它對應的服務是Mariadb—server,其使用方法和MySQL幾乎一致,實際上你執行‘yum install mysql’安裝的就是Mariadb,如果不習慣還是想使用MySQL服務也是可以的,只要按下面步驟下載包安裝即可。
# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-server
值得注意的是安裝mysql服務的時候,會安裝一些依賴,原來的Mariadb將會被MySQL替代掉,最后,開啟服務,如果沒有報錯表示安裝成功,同時設置開機啟動
# /bin/systemctl start mysqld.service
# chkconfig mysqld on
如果還想進一步驗證,可以使用sql指令驗證,輸入‘mysql’指令就可以進入sql指令命令窗口
# mysql
6、總結
至此,lnmp的環境就算搭建好了,以上僅供參考,遇到問題多搜索,多探索,總會解決的。
擴展
1、安裝phpmyadmin
去PHPmyadmin官網下載安裝包到本地,然后使用ssh上傳到centos上,上傳后我的安裝包目錄是,/usr/local/src/phpMyAdmin.zip
然后解壓安裝
# unzip /usr/local/src/phpMyAdmin.zip
移動到web訪問目錄并重命名(注意解壓安裝之后的文件夾不是‘phpMyAdmin’,而是類似于‘phpMyAdmin-4.7.0-all-languages’這樣的,我的默認安裝之后是在‘home’文件夾下)
# mv phpMyAdmin-4.7.0-all-languages /usr/share/nginx/html/phpmyadmin
然后在瀏覽器訪問‘localhost/phpmyadmin’,如下圖所示就表示安裝成功了
有些人可能會遇到 403 不能訪問的錯誤,可以看一下是否關閉了selinux或者phpmyadmin文件夾設置了不能訪問的權限
2、配置nginx支持thinkphp
在原有的配置文件nginx.conf下修改php解析的代碼,修改下面注釋的三個地方
location ~ \.php { #去掉$ root /var/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; #增加這一句 fastcgi_param PATH_INFO $fastcgi_path_info; #增加這一句 fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; }
3、配置nginx隱藏thinkphp路徑中的index.php
在原有的配置文件nginx.conf下修改代碼,添加注釋的這一段代碼,其中user、tool是你項目文件夾的名稱,含有public的是thinkphp5的默認路徑
location / { root /var/www; index index.php index.html index.htm; if (!-e $request_filename) { #隱藏index.php rewrite ^/user/public/(.*)$ /user/public/index.php/$1 last; rewrite ^/tool/(.*)$ /tool/index.php/$1 last; } #隱藏index.php }