1. 程式人生 > >PHP全棧工程師實戰小技巧(運維篇)

PHP全棧工程師實戰小技巧(運維篇)

php工程師在工作中經常遇到環境配置問題,本文主要通過Centos7 中的yum對環境Nginx+Php+MySQL環境的搭建與配置,希望給看到這篇文章的同學節省一些時間。同時也能為還不清楚如何搭建環境的同學提供一個搭建的思路。文章中的技術要點不是很全面,可根據思路自己拓展技術點。

linux伺服器(CentOS 7)

檢視IP地址

ip addr

新安裝好的 Centos7 系統用上面的命令檢視ip地址,先用ssh [email protected]地址的+輸入密碼的方式登入
在這裡插入圖片描述

SSH 免密登入

ssh-keygen -t rsa

在home目錄下執行 ssh-keygen -t rsa

一路回車,在home/root 下生成了 .ssh 資料夾。目錄下有 id_rsa id_rsa.pub 兩個檔案。實現免密登入需要本地的公鑰放在伺服器上的 authorized_keys 檔案中。如果.ssh 目錄下沒有 authorized_keys 檔案手動建立一個。注意 authorized_keys 檔案的許可權必須是600,如果許可權不對會影響登入。

touch authorized_keys
chmod 600 authorized_keys 

我以我自己的電腦操作,在本地機的home下和伺服器上同樣的操作執行 ssh-keygen -t rsa 一路回車,也生成id_rsa id_rsa.pub 兩個檔案。

將本地的 id_rsa.pub 檔案中的內容複製到伺服器上的 authorized_keys 檔案中。

此時,exit 在本地退出伺服器的 ssh 連線。再執行 ssh [email protected] 地址登入已不需要輸入密碼。
在這裡插入圖片描述

如果還覺得比較麻煩可以在本地 .ssh 目錄下建立一個 config 檔案。配置如下:

# Host 自定義連線伺服器名稱
Host Serv5
# HostName 連線伺服器IP
HostName 10.211.55.34
# Port 伺服器 ssh 對外開放的埠
Port 22
# 登入伺服器的使用者
User root
# 本地伺服器金鑰檔案地址
IdentityFile ~/.ssh/id_rsa

我們只需要在本地執行 ssh Serv5 便可登入遠端伺服器
在這裡插入圖片描述

檢視linux是什麼作業系統

cat /etc/redhat-release
在這裡插入圖片描述

yum管理

當我們想查詢是否有 php71 軟體包的時候,我們會執行 yum search php71,此時得到的結果也許是 警告:沒有匹配 php71 的軟體包。所有我們第一件事要做的就是軟體包的升級。
在這裡插入圖片描述

軟體包倉庫升級

安裝 epel-release 已是最新版本無須任何處理,但還是找不到 php71 的軟體包
yum install -y epel-release
在這裡插入圖片描述

Nginx安裝源:rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
PHP安裝源: rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
在這裡插入圖片描述

執行 yum makecache 將伺服器軟體資訊儲存在本地,提高搜尋安裝效率。
在這裡插入圖片描述

搜尋php71相關的軟體包 yum search php71
在這裡插入圖片描述

Nginx

安裝

新安裝的系統沒有yum倉庫映象來安裝nginx,會有如下提示:
在這裡插入圖片描述

新增源

預設情況Centos7中沒有Nginx的源,Nginx官網提供了Centos的源地址:

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

執行完上面的新增源命令,在執行yum install -y nginx 便會安裝。下圖便是nginx的安裝目錄和版本資訊。
在這裡插入圖片描述

管理nginx伺服器

# 開機啟動
systemctl enable nginx.service
# 開啟
systemctl start nginx.service
# 停止
systemctl stop nginx.service
# 重啟
systemctl restart nginx.service
# 平滑重啟
systemctl reload nginx.service

啟動nginx伺服器
在這裡插入圖片描述

此時我們在瀏覽器中訪問伺服器的ip,無法訪問。是應為伺服器防火牆開啟且沒有開放80埠。

Nginx 自定義Server

nginx -t 檢視 nginx 的配置問題
在這裡插入圖片描述
進入 /etc/nginx/conf.d 複製 default.conf 為 myhost.conf
配置 myhost.conf
在這裡插入圖片描述

本地配置hosts指向伺服器IP,10.211.55.35 www.myhost.me
這是瀏覽器訪問 www.myhost.me 應該能能訪問nginx歡迎頁。然而頁面提示 403
在這裡插入圖片描述

在這裡插入圖片描述

如何訪問PHP檔案

按照下面的php部分安裝成功並啟動php-fpm服務後配置:開啟紅框部分程式碼。便訪問成功。
root /workspace/myhost 被定義了兩次,所以可以將兩處合併到最上面的紅色字型部分。
在這裡插入圖片描述

訪問效果:
在這裡插入圖片描述

防火牆 firewalld

# 新增埠   --permanent永久生效,沒有此引數重啟後失效
firewall-cmd --zone=public --add-port=80/tcp --permanent    
# 重新載入
firewall-cmd --reload

php

檢視 php 命令位置

在這裡插入圖片描述
都沒有找到php的安裝位置,進行安裝

php71 yum源

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

安裝

執行 yum install -y php71
在這裡插入圖片描述
在這裡插入圖片描述
安裝完成之後我們執行 whereis phpwhich php 都沒有資訊。我們需要查詢 whereis php71which php71 的資訊。

php 版本資訊

php71 -v 我們每次都需要執行 php71 然後加引數,我們可以加一個連結後用 php -v 檢視 php 版本。
在這裡插入圖片描述

php 版本切換

php 配置檔案問題

php --ini 紅框框起來的便是 php 的配置檔案
在這裡插入圖片描述

安裝 php-fpm

yum search php71 查到 fpm 資訊並執行命令 yum install -y php71-php-fpm 安裝
在這裡插入圖片描述

執行 yum install -y php71-php-fpm 並安裝成功
在這裡插入圖片描述

php 服務管理

啟動php服務 :systemctl start php71-php-fpm
停止php服務 :systemctl stop php71-php-fpm
重啟php服務 :systemctl restart php71-php-fpm
檢視php程序 :ps -ef | grep php
在這裡插入圖片描述

php 擴充套件安裝

以 swoole 擴充套件為例:
查詢 yum search php71 | grep swoole
在這裡插入圖片描述

安裝 yum install -y php71-php-pecl-swoole
檢視擴充套件是否安裝 php -m | grep swoole
在這裡插入圖片描述
安裝 redis gd bcmath 等擴充套件都是按照此方法安裝。

按關鍵字殺死程序

在伺服器上操作上,如果我們要停止伺服器的程序,只需執行 php 服務管理中的停止 php 服務即可。假如我們又開啟了 php-WebSocket 程序伺服器。按照 swoole 官網的文件新建swoole服務。

<?php
$server = new swoole_websocket_server("127.0.0.1", 9502);

$server->on('open', function($server, $req) {
    echo "connection open: {$req->fd}\n";
});

$server->on('message', function($server, $frame) {
    echo "received message: {$frame->data}\n";
    $server->push($frame->fd, json_encode(["hello", "world"]));
});

$server->on('close', function($server, $fd) {
    echo "connection close: {$fd}\n";
});

$server->start();

在任意位置新建 swoole-server.php 檔案
後臺啟動服務 php swoole-server.php &
檢視swoole服務程序 ps -ef | grep php
在這裡插入圖片描述
此時我們看到 php 的 swoole-server.php 程序。加入我們按照停止php伺服器的方式停止我們看一下截圖:
在這裡插入圖片描述
php 程序被殺死了,swoole-server.php 服務還在,完全沒有按照我們的設想結束程序。我們再重新啟動php服務。
當然我們可以根據程序號 id 一個一個 kill 掉。這裡主要說明按照關鍵字批量殺死程序。

在這裡插入圖片描述

根據上圖我們連續執行的一系列的命令,進行說明。

# 檢視 php 的程序
ps -ef | grep php
# 檢視 swoole 的程序
ps -ef | grep swoole
# 檢視 swoole 的程序並排除 grep 執行的程序
ps -ef | grep swoole | grep -v grep
# 列印要殺死的程序id
ps -ef | grep swoole | grep -v grep | awk '{print "kill -9 " $2}'
# 殺死指定程序
ps -ef | grep swoole | grep -v grep | awk '{print "kill -9 " $2}'|sh
# 檢視 swoole 的程序並排除 grep 執行的程序
ps -ef | grep swoole | grep -v grep
# 檢視 swoole 的程序
ps -ef | grep swoole
# 檢視 php 的程序
ps -ef | grep php

命令執行完畢後我們能夠分析出,swoole 程序已被全部殺死,php程序正常執行。真正操作中,只需執行中間最長的一行程式碼,把 swoole 換成你想 kill 掉的程序。

相關推薦

PHP工程師實戰技巧

php工程師在工作中經常遇到環境配置問題,本文主要通過Centos7 中的yum對環境Nginx+Php+MySQL環境的搭建與配置,希望給看到這篇文章的同學節省一些時間。同時也能為還不清楚如何搭建環境的同學提供一個搭建的思路。文章中的技術要點不是很全面,可根據

PHP工程師實戰經驗程式設計

PHP全棧工程師實戰經驗(程式設計篇) PDO連線MySQL PDO連線MySQL 建好資料庫和表 <?php $dsn = "mysql:host=localhost;dbname=myhost"; $db = new PDO($

PHP工程師實戰經驗

php工程師在工作中經常遇到環境配置問題,本文主要通過Centos7 中的yum對環境Nginx+Php+MySQL環境的搭建與配置,希望給看到這篇文章的同學節省一些時間。同時也能為還不清楚如何搭建環境的同學提供一個搭建的思路。文章中的技術要點不是很全面,可根據思路自己拓展技術點。

C#實戰技巧:List<string>和string[]的相互轉換

List是string型別列表,string[]是string型別陣列,二者可以互相轉換。 1.string[]轉List string[] strArray = {"a", "ab", "abc"}; List<string> strList = new List<s

C#實戰技巧:將剪下板中的內容儲存為圖片

進行C#開發時,可以將複製到剪下板中的內容轉為HTML檔案,再將HTML頁面轉為圖片進行儲存,示例效果如下。 被複制的Excel表格: 生成的圖片: 實現上述功能的主要程式碼如下,能夠將從Word、Excel、網頁等地方複製的內容匯出,並儲存為圖片。 程式碼:

APP工程師修煉之路

第三章 資料庫設計        從本章開始,我們將真正的開始進入全棧之路。因為全棧工程師不需要對某種技術有著深入的研究,所以本書不會深入探討技術細節,只注重產品的設計與開發。3.1 MySql概要        MySql是一個關係型資料庫,最初是由瑞典MySql AB公司

APP工程師修煉之路

第一章 全棧導論1.1 概述        全棧工程師,也叫全端工程師,英文名Full Stack developer。是指掌握多種技能,並能利用各種技能獨立完成產品的人。全棧工程師按照產品的型別不同又分為:Web全棧工程師、APP全棧工程師、硬體全棧工程師等。       

C#實戰技巧:生成縮圖

在C#開發中,經常會遇到為某張圖片生成縮圖的需求,本文提供一個能夠生成縮圖的C#函式,支援將bmp、png、jpg等常見格式的靜態圖片壓縮,生成縮圖,可以避免png圖片丟失透明度。不過該函式的圖片壓縮方法比較簡單,只能壓縮20M以內的圖片,圖片大於20M將出現記

C#實戰技巧:獲取當前日期時間

我們可以通過使用DataTime這個類來獲取當前的時間。通過呼叫類中的各種方法我們可以獲取不同的時間:如:日期(2008-09-04)、時間(12:12:12)、日期+時間(2008-09-04 12:11:10)等。 //獲取日期+時間 DateTime.Now.To

unity_實用技巧敵人追蹤主角

ren 聽力 5* iss 發現 date() ima nav path 首先要明白敵人發現主角可以通過兩種形式:一種是看見主角(即主角出現在敵人的視野之內)。另一種是聽見主角(即聽見主角走路聲或者是跑步聲) 第一種形式:看。 如下圖 ,判斷主角是否在敵人視野角度內,只需判

PythonWeb工程師必備技能之<MySQL開發>

MySQL 數據庫 Python開發 emmm...接下來還有<MySQL運維篇>...(1)數據庫的CURD:--基本使用:1.選擇數據庫: use 數據庫名稱;mysql> use test;Database changed2.創建數據庫: create dat

Vue全家桶+SSR+Koa2開發美團網更新最快

第1章 課程導學這門課主講以Vue SSR+Koa2全棧技術為目標,最終實現美團網專案。本章節旨在告訴大家我們會用到哪些技能、教學方法、課程內容分佈、學習方法等。備註:我們會涉及Vue2.5、Nuxt、Koa2、element-ui、Mongodb等1-1 課程導學第

微信程式之開發的技巧不斷更新中

開發中總結的一些小技巧: 1.公共檔案app檔案可以放一些經常用到的方法 列如網路請求和判斷網路的封裝 在檔案中如果想使用app.js中的方法直接var app = getApp() 直接就可以呼叫了 2.position相關的設定 想把文字放在圖片上邊 position:

開發部落格系統nodejs+vuejs+mongodb

本篇文章將會介紹如何使用nodejs+vuejs構建個人部落格。 主要分三部分內容: 環境準備 部落格後端管理系統(admin) 後端服務(主要提供admin及web端介面) 部落格前端展示(web) 環境準備 nodejs 直接去官網下載最新的穩定版就好,以下為下載連結: https://nodejs

【資料庫】MySQL奇淫技巧報錯

繼《【資料庫】MySQL奇淫技巧》,此篇為報錯梳理,整理測試時遇到的各種報錯及應對策略 1、 (1046, ‘No database selected’) 沒選擇資料庫,此問題很有可能是再執行命令或者查詢時沒針對資料庫操作,視覺化的工具一般不會出現此錯誤

『中級』docker之虛擬機器建立vagrant技巧番外81

原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝! 原文連結地址:『中級篇』docker之虛擬機器建立vagrant技巧(番外篇)(81) 之前一直用的原生的centos7的源映象安裝虛擬機器,然後在這個基礎執行shell指令碼,經常出

Python 實用程式設計技巧裝飾器

一、如何使用函式裝飾器? 1.需求: 比如說,我們想為很多不同的函式新增相同的功能,比如說計時統計、記錄日誌、快取運算結果等,但是我們又不想在每個函式中新增相同的程式碼 有需要Python學習資料的小夥伴嗎?小編整理【一套Python資料、原始碼和PDF】,感興趣者可以

關於.NET HttpClient方式獲取微信程式碼

隨著微信小程式的火熱應用,市面上有關小程式開發的需求也多了起來。近來分析了一項生成有關生成微信小程式碼的需求——要求掃碼跳轉到小程式指定頁面(帶引數);看了下小程式官方文件,以及網上的例子,未看到多少有價值的採用C#呼叫小程式介面生成小程式碼的例子,於是拾起多年前的程式碼,略作分析嘗試

python基礎—字符串處理、文件處理必備

python open string 字符串處理 文件處理 小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------謝謝您的參考,如有疑問,歡迎交流一、 字

Jenkins用HTTP Request Plugin插件進行網站的監控/加探針監控

pla .org 需要 技術 通知 動作 設置 特定 name 使用的插件: 【HTTP Request Plugin】 思路: 說明:只能是網站是否正常打開,而不能是這個網站業務是否正常,如果是後者,則需要寫特定的接口進行請求處理。 1、通過插件,發送GET請求指定的UR