linux下手動搭建php+mysql+nginx

轉載自:

https://www.cnblogs.com/yanqingxu/p/9248849.html

https://blog.csdn.net/wangliqiang1014/article/details/82906234

1、首先要更新yum源,不然是默認的老版本,一般都在5.6及以下,但是php7都出來好久了,性能提升50%以上!

按照系統更新yum源,我的是centos7,所以我運行下面的代碼!

CentOS/RHEL 7.x:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

如果是centos6,那么執行以下代碼:

CentOS/RHEL 6.x:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpmrpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

安裝php

?然后就可以直接yum安裝php7.0了,可以安裝的拓展如下:

yum install php70w-common php70w-fpm php70w-opcache php70w-gd php70w-mysqlnd php70w-mbstring php70w-pecl-redis php70w-pecl-memcached php70w-devel

? 安裝 Nginx 和 PHP7-FPM

??在開始安裝 Nginx 和 php7-fpm 之前,我們要先添加 EPEL 包的倉庫源。使用如下命令:

yum?-y?install?epel-release(上面更新yum包了這步就可以省略了)

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

yum?-y?install?nginx

??執行完上面的命令之后執行nginx -v,會出現nignx版本信息

??接下來,啟動nginx,并且把他設置為開機自啟動。

systemctl?start?nginx

systemctl?enable?nginx

??然后通過瀏覽器訪問我們服務器的公網地址,出現如下界面說明nginx安裝和啟動成功了。


??然后我們還需要為 php7-fpm 添加另外一個倉庫?;ヂ摼W中有很個遠程倉庫提供了 PHP 7 系列包,我在這里使用的是 webtatic。

??添加 PHP7-FPM webtatic 倉庫:

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

??然后就是安裝 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

??最后,從服務器終端里查看 PHP 的版本號,以便驗證 PHP 是否正確安裝。

php?-v

配置 PHP7-FPM

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

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

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

? 在第 8 行和第 10行,user?和?group?賦值為?nginx。

user?=?nginx

group?=?nginx

? 在第 22 行,確保 php-fpm 運行在指定端口。

listen?=?127.0.0.1:9000

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

env[HOSTNAME]?=?$HOSTNAME

env[PATH]?=?/usr/local/bin:/usr/bin:/bin

env[TMP]?=?/tmp

env[TMPDIR]?=?/tmp

env[TEMP]?=?/tmp

??保存文件并退出 vim 編輯器。

? 接下來我們編輯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?restart

systemctl?start?php-fpm

systemctl?enable?php-fpm

PHP7-FPM 配置完成。

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

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

接在在里面填寫如下信息

<?php

phpinfo();

然后訪問http://你的服務器公網ip/phpinfo.php,出現php的信息之后說明配置成功。

接下來,還要一步要做,那就是設置下session有關的東西。如果我們不把session擁有者設置為nginx,session不在同一個頁面的話就會出現問題(博主親身的辛酸經歷啊)。我們需要再/var/lib/目錄下,創建文件夾,文件夾名字為session,進行如下命令:

mkdir?-p?/var/lib/php/session

chown?nginx:nginx?-R?/var/lib/php/session

安裝和配置 MariaDB或者mysql

在這里我們提供安裝mariadb和mysql的,如果不想安裝mariadb的,請拉下去看安裝mysql的部分。

我這里使用 MariaDB 作為數據庫。可以直接使用?yum?命令從 CentOS 默認遠程倉庫中安裝?mariadb-server?包。

yum?-y?install?mariadb?mariadb-server

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

systemctl?start?mariadb

systemctl?enable?mariadb

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

mysql_secure_installation

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

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

Set root password? [Y/n] Y

New password:

Re-enter new password:

Remove anonymous users? [Y/n] Y

Disallow root login remotely? [Y/n] Y

Remove test database and access to it? [Y/n] Y

Reload privilege tables now? [Y/n] Y

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

mysql?-uroot?-p

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


安裝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?openscanner:openscanner?/var/lib/mysql(這一步可能會報錯, 我沒有操作成功)

然后重啟服務器:

service?mysqld?restart

接下來登錄重置密碼:

mysql?-uroot

mysql?>use?mysql;

mysql?>update?user?set?password=passworD("123456")?where?user='root';

mysql>?flush?privileges;

mysql>?exit;

mysql>select version();查詢版本

mysql 配置文件一般在 /etc/my.cnf

配置可以參考https://blog.csdn.net/zwlsuperman/article/details/81333890


安裝redis數據庫

yum?install?redis

安裝完畢后,使用下面的命令啟動redis服務

# 啟動redis

service redis start

# 停止redis

service redis stop

# 查看redis運行狀態

service redis status

# 查看redis進程

ps?-ef |?grep?redis

設置redis為開機自動啟動

service enable redis 或者 chkconfig redis on

詳細可參考:https://www.cnblogs.com/rslai/p/8249812.html


安裝php-redis擴展

列出所有的可以安裝的 php 軟件包列表(安裝對應PHP使用版本的redis)

yum list| grep php70w*

yum 安裝 redis 擴展

yum -y install php70w-pecl-redis.x86_64

重啟 php-fpm

service php-fpm restart

附:


在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

CLI是命令行版本。

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

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

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


php_cli模式優點

1. 使用多進程, 子進程結束以后, 內核會負責回收資源

2. 使用多進程,子進程異常退出不會導致整個進程Thread退出. 父進程還有機會重建流程.

3. 一個常駐主進程, 只負責任務分發, 邏輯更清楚.

4.完全支持多線程

5.如上,可以實現定時任務

6.開發桌面應用就是使用PHP-CLI和GTK包

7.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, and --enable-mbstring=ja for Japanese support.


php-pecl-apcu:

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容