這篇文章介紹的內容是關於CentOS7下Laravel部署並用nginx轉發,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
建立php運行環境
執行service php-fpm start啟動php-fpm服務,執行ps aux | grep php-fpm驗證是否成功安裝php-fpm服務。
如果使用第二個方案安裝來源的,請使用下列腳本
yum install php72-php-cli.x86_64 php72-php-common.x86_64 php72-php-fpm.x86_64 php72-php-devel.x86_64 php72-php-gd.x86_64 php72-php-intl.x86_64 php72-php-mbstring.x86_64 php72-php-pecl-mcrypt.x86_64 php72-php-mysqlnd.x86_64 php72-php-opcache.x86_64 php72-php-pdo.x86_64 php72-php-pear.noarch php72-php-xml.x86_64 -y
有php來源
也有可能有部分使用者無法存取這兩個文件,此時可以換用下面方式(7.2),因此後面的部分教程可能也會不一樣,需注意
yum install epel-release -y rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
php來源比較舊
#php:
判斷是否有php的yum源:
yum search php
系統本身自帶php的yum來源,但是版本太舊,還是5.4的,為了安裝最新的來源這裡準備安裝新yum源。
安裝php的yum來源:
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
#此時再執行yum search php 會發現多出來更多選項
安裝php及部分相關外掛(php-cli為shell相關,php-common為常用函數相關,php-devel為編譯相關,php-fpm為服務相關,php -gd為圖片處理相關,php-intl為國際化相關,php-mbstring為多字串處理相關,php-mcrypt為加密相關,php-mysqlnd為mysql相關,php-opcache為效能加速相關,php-pdo為資料物件相關,php-pear為php應用程式擴充相關,php-xml為xml相關)(這裡安裝php7.1)使用了第一種的請用第一個腳本:
yum install php71w-cli.x86_64 php71w-common.x86_64 php71w-fpm.x86_64 php71w-devel.x86_64 php71w-gd.x86_64 php71w-intl.x864 php76868686_64 php11w-intl. 64 php71w-mysqlnd.x86_64 php71w-opcache .x86_64 php71w-pdo.x86_64 php71w-pear.noarch php71w-xml.x86_64 -y
執行php –version查看php是否已安裝並設定完成。出現與截圖類似的版本資訊則表示安裝php配置完成,
#php版本
php -fpm測試
安裝週邊服務(nginx/composer/git/mysql/redis)
這幾個服務基本上可以在基本yum來源中安裝,如果沒有composer,可運行cd /tmp
curl –sShttps://getcomposer.org/installer| php
mv composer.phar/usr/local/ bin/composer 即可完成composer的安裝
服務程式碼準備
為了方便php服務的部署和更新,筆者使用git進行專案下載及更新。
進入準備部署服務的資料夾,執行git clone git位址(範例:git clone root@www.temp.com:/git/php/markingphp)
#下載php程式碼
此時專案權限為root,如果這樣運行php-fpm可能會權限不足,筆者這裡為了簡便及對php專案靜態資源nginx管理,將專案權限變更為nginx,將php-fpm的運行者權限改為nginx。
php及專案相關設定
#nginx錯誤日誌
#服務轉送失敗
初始化mysql
執行chown nginx:nginx - Rf 資料夾名稱(例:chown nginx:nginx -Rf markingphp)
#運行rpm -ql php17w-fpm.x86_64取得php-fpm安裝位址
取得php-fpm安裝位址
嘗試得知/etc/php-fpm.d/www.conf 為設定檔
php-fpm設定檔
更改user = apache与 group = pache 为 user = nginx group = nginx 如果有必要可以更改127.0.0.1:9000为想要的端口
为了服务器信息安全及项目大小控制,git项目未上传项目配置与项目引用库,所以需要重新新建项目配置文件并配置
项目结构
配置文件
运行 composer update -vvv 下载库
下载库失败
如果库下载失败,可能是库被墙的原因,更改composer.json添加国内源再运行即可。
“repositories”: { “packagist”: { “type”: “composer”, “url”: “https://packagist.phpcomposer.com” } }
国内源
再运行 php artisan serve 可测试当前项目库是否完整,出现如下说明项目库下载完成。
尝试启动项目测试
初始化项目mysql表(php artisan migrate:refresh)
配置nginx以转发80端口服务到php-fpm的服务,
server { listen 80; location / { root /php/markingphp/public/; index index.php index.html index.jsp; } location ~ .php{ root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME document_root$fastcgi_script_name; include fastcgi_params; } }
运行curl localhost 判断服务是否正常转发。
运行 vim /var/log/nginx/error.log 检查nginx的log会发现log提示权限不足,可是我们已经把文件权限付给了nginx。
最终得知是因为selinux的缘故,此时只需运行 setenforce 0 即可关闭selinux(临时),再修改配置文件 /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,这样下次重启selinux依然是关闭的。再运行curl localhost 会发现服务已经可以正常服务了。
以上是CentOS7下Laravel部署並用nginx轉發的詳細內容。更多資訊請關注PHP中文網其他相關文章!