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
如果.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 php
和 which php
都沒有資訊。我們需要查詢 whereis php71
和 which 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