標籤:

【Linux】手動配置PHP+MYSQL+Nginx

linux 環境: centos 7.4

注意開啟伺服器 80埠

一 、 在 CentOS 7 中安裝 Nginx 和 PHP7-FPM

1、我們要先添加 EPEL 包的倉庫源。使用如下命令:

yum -y install epel-release

2、安裝完EPEL 源之後,我們就可以通過倉庫源安裝nginx了,代碼如下:

yum -y install nginx

3、 執行nginx -v,會出現如下的信息:

4、 把nginx設置為開機自啟動。

systemctl start nginxsystemctl enable nginx

5、瀏覽器訪問你得公網IP(注意伺服器要開放80埠) 出現如下界面說明nginx安裝和啟動成功了。

然後我們還需要為 php7-fpm 添加另外一個倉庫。互聯網中有很個遠程倉庫提供了 PHP 7 系列包,我在這裡使用的是 webtatic。

6 、添加 PHP7-FPM webtatic 倉庫:

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

7、 安裝 PHP7-FPM 以及 一些包。

yum -y install php71w-fpm php71w-cli php71w-gd php71w-mcrypt php71w-mysql php71w-pdo php71w-xml php71w-pear php71w-mbstring php71w-mbstring php71w-json php71w-pecl-apcu php71w-pecl-apcu-devel

8 、驗證PHP 是否正確安裝

php -v

二 、 配置 PHP7-FPM

在這一個步驟中,我們將配置 php-fpm 與 Nginx 協同運行。Php7-fpm 將使用 nginx 用戶來運行,並監聽 9000 埠

1 、 使用 vim 編輯默認的 php7-fpm 配置文件。

vim /etc/php-fpm.d/www.conf

在第 8 行和第 10行,

user = nginxgroup = nginx

在第 22 行,確保 php-fpm 運行在指定埠。

listen = 127.0.0.1:9000

取消第 366-370 行的注釋,啟用 php-fpm 的系統環境變數。

env[HOSTNAME] = $HOSTNAMEenv[PATH] = /usr/local/bin:/usr/bin:/binenv[TMP] = /tmpenv[TMPDIR] = /tmpenv[TEMP] = /tmp

保存文件並退出 vim 編輯器。

2、 接下來我們編輯nginx.conf的配置文件,讓nginx能夠解析php文件

vim /etc/nginx/nginx.conf

然後在nginx.conf裡面插入如下代碼,記住格式必須要一致,空格之類的不能多也不能少,不然等下重啟nginx的時候會報錯。

location ~ .php$ { #root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;}

然後啟動 php-fpm 和 Nginx,並且將php-fpm設置為隨開機啟動的服務。

service nginx restartsystemctl start php-fpmsystemctl enable php-fpm

PHP7-FPM 配置完成。

測試結果

在我們nginx目錄下創建phpinfo.php文件(目錄為/usr/share/nginx/html)

vi /usr/share/nginx/html/phpinfo.php

輸入以下信息,保存退出

<?phpphpinfo();

http://伺服器公網ip/phpinfo.php,出現php的信息之後說明配置成功。

三 、 安裝和配置 MariaDB(如需要配置mysql ,往下看)

我這裡使用 MariaDB 作為資料庫。

1 、可以直接使用 yum 命令從 CentOS 默認遠程倉庫中安裝

yum -y install mariadb mariadb-server

2 、啟動 MariaDB,並將其添加到隨系統啟動的服務中去。

systemctl start mariadbsystemctl enable mariadb

3 、現在開始配置 MariaDB 的 root 用戶密碼。

mysql_secure_installation

輸入完之後,會要求輸出現在的密碼,默認安裝完之後密碼為空,直接回車。

鍵入 Y ,然後設置 MariaDB 的 root 密碼。

Set root password? [Y/n] YNew password:Re-enter new password:Remove anonymous users? [Y/n] YDisallow root login remotely? [Y/n] YRemove test database and access to it? [Y/n] YReload privilege tables now? [Y/n] Y

這樣就設置好了密碼,然後嘗試登陸下:

mysql -uroot -p

自此,我們的linux下安裝php+mysql+nginx算是完成了。


四、 安裝mysql (番外篇,如果你依然執著mysql 可以這樣)

注意:已經安裝了上面了的mariadb的,可以不安裝這個了,這兩個資料庫的用法差不多的,詳情請百度。

首先Centos7已經不支持mysql,因為收費了你懂得。centos下yum暫時沒有mysql-server直接安裝包;MariaDB是MySQL社區開發的分支,也是一個增強型的替代品。CentOS7的yum源中默認好像是沒有mysql的。為了解決這個問題,我們要先下載mysql的repo源。

1 下載mysql的repo源

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

2、安裝mysql-community-release-el7-5.noarch.rpm包

rpm -ivh mysql-community-release-el7-5.noarch.rpm

安裝這個包後,會獲得兩個mysql的yum repo源:

/etc/yum.repos.d/mysql-community.repo,/etc/yum.repos.d/mysql-community-source.repo。

3 、安裝mysql

yum install mysql-server

根據步驟安裝就可以了,不過安裝完成後,沒有密碼,需要重置密碼。

重置密碼之前,首先要執行以下操作:

chown -R root:root /var/lib/mysql

備註: root是你當前登陸名,如果是其他名字。請自行更換

然後重啟伺服器

service mysqld restart

接下來登錄重置密碼:

mysql -urootmysql >use mysql;mysql >update user set password=passworD("123456") where user=root;mysql> flush privileges;mysql> exit;


附錄說明:

在linux的搭建文件中有一段是安裝 PHP7-FPM 需要的一些包。

yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json php70w-pecl-apcu php70w-pecl-apcu-devel

在此介紹一下各安裝包:

PHP-CLI

FPM是作為Apache或者Nginx等伺服器軟體處理PHP文件得擴展。

PHP的默認版本是不支持線程安全的,這個線程安全問題可以去了解PHP擴展開發方面的相關知識,這是因為C語言方面的問題了。

cli和fpm是php的兩種運行方式,而線程安全和非線程安全應該才能說的上是版本。是否開啟線程安全可以在編譯PHP的時候進行選擇的。

PHP-CLI模式優點

  • 使用多進程, 子進程結束以後, 內核會負責回收資源
  • 使用多進程,子進程異常退出不會導致整個進程Thread退出. 父進程還有機會重建流程.
  • 一個常駐主進程, 只負責任務分發, 邏輯更清楚.
  • 完全支持多線程
  • 如上,可以實現定時任務
  • 開發桌面應用就是使用PHP-CLI和GTK包
  • linux下用php編寫shell腳本(例如swoole_server就只能用於php-cli環境)

怎麼運行PHP-CLI腳本

第一種方法是使用php -f /path/to/yourfile.php。調用PHP CLI解釋器,並給腳本傳遞參數。這種方法首先要設置php解釋器的路徑,Windows平台在運行CLI之前,需設置類似path c:php的命令,也失去了CLI腳本第一行的意義,因此不建議使用該方法。

第二種方法是首先運行chmod+x <要運行的腳本文件名>(UNIX/Linux環境),將該PHP文件置為可執行許可權,然後在CLI腳本頭部第一行加入聲明(類似於#! /usr/bin/php或PHP CLI解釋器位置),接著在命令行直接執行。這是CLI首選方法,建議採用

PHP-mcrypt

mcrypt 是php裡面重要的加密支持擴展庫,linux環境下該庫在默認情況下不開啟。window環境下,PHP>=5.3,默認開啟mcrypt擴展。

php-pear

PEAR是PHP擴展與應用庫(the PHP Extension and Application Repository)的縮寫。它是一個PHP擴展及應用的一個代碼倉庫,簡單地說,PEAR之於PHP就像是CPAN(Comprehensive Perl Archive Network)之於Perl。

PEAR的基本目標是發展成為PHP擴展和庫代碼的知識庫,而這個項目最有雄心的目標則是試圖定義一種標準,這種標準將幫助開發者編寫可移植、可重用的代碼。

Internet上已經有關於該項目的一些文檔。例如,一些初始的資料已經可以在PHP正式手冊中找到,更多的資料即將加入。

php-mbstring

mbstring庫 全稱是Multi-Byte String 即各種語言都有自己的編碼,他們的位元組數是不一樣的,目前php內部的編碼只支持ISO-8859-*, EUC-JP, UTF-8。

其他的編碼的語言是沒辦法在php程序上正確顯示的。解決的方法就是通過php的mbstring函數庫來解決其安裝是在編譯php的時候加上--enable-mbstring=?"="後面就是跟需要支持的語言,具體參數如下:

--enable-mbstring=cn for Simplified Chinese support, --enable-mbstring=tw for Traditional Chinese support,--enable-mbstring=kr for Korean support, --enable-mbstring=ru for Russian support, --enable-mbstring=ja for Japanese support.

php-pecl-apcu

類似於緩存,php-pecl-apcu會有效的提高php執行速度。

推薦閱讀:

Linux 伺服器安全簡明指南
第一本電子書:《Linux Perf Master》
【技術人快報】巴塞羅那擁抱開源Linux+Python需求增速達174%,AI人才缺口仍超百萬
內核編譯與進程管理
用R語言修改一個工具包,做並行計算上的優化應該怎麼入手?

TAG:PHP | Linux | Nginx |