1. 程式人生 > >搭建Laravel API服務

搭建Laravel API服務

一、伺服器環境

主機 作業系統 Nginx版本 php版本 lumen版本
騰訊雲主機 Centos 7.2 64位 1.14.0 7.1.17 5.6

二、安裝nginx

1、 安裝 nginx 需要先將官網下載的原始碼進行編譯,編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝:

yum install gcc gcc-c++

2、 安裝 PCRE (Perl Compatible Regular Expressions)庫,PCRE是一個正則表示式庫,nginx 的 http 模組使用 pcre 來解析正則表示式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也需要此庫。

yum install -y pcre pcre-devel

3、安裝 zlib 庫 —— zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,所以需要安裝 zlib 庫:

yum install -y zlib zlib-devel

4、安裝OpenSSL庫。OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼演算法、常用的金鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程式供測試或其它目的使用。Nginx 不僅支援 http 協議,還支援 https(即在ssl協議上傳輸http),所以需要安裝 OpenSSL 庫:

yum install -y openssl openssl-devel

5、安裝Nginx到目錄/usr/local/services

  • 官網下載tar.gz安裝包
  • 使用wget命令下載:wget -c https://nginx.org/download/nginx-1.14.0.tar.gz
  • 進入解壓後目錄,編譯安裝:./configure --prefix=/usr/local/services/nginx&make&make install
  • 啟動停止nginx:
    • ./nginx —— 啟動
    • ./nginx -s stop —— 強制停掉nginx程序
    • ./nginx -s quit —— 待nginx程序處理完任務後停止
    • ./nginx -s reload —— 重新載入配置

然後在瀏覽器裡訪問 80 埠,如果可以看到如下頁面,表示 Nginx 安裝成功:

這裡寫圖片描述

三、安裝php-fpm

PHP-FPM(FastCGI Process Manager:FastCGI程序管理器),是 FastCGI 的實現,並提供了程序管理的功能。程序包含 master 程序和 worker 程序兩種程序。

  • master 程序只有一個,負責監聽埠,接收來自 Web Server 的請求,
  • worker 程序則一般有多個(具體數量根據實際需要配置),每個程序內部都嵌入了一個 PHP 直譯器,是 PHP 程式碼真正執行的地方。

PHP從 5.3.3 版本開始已經講 php-fpm 納入php原始碼核心了,不再是第三方的包,所以不需要另外下載了。只需要在編譯 php 的時候帶上--enable-fpm就可以了。

① 獲取tar.gz安裝包

wget -c http://cn.php.net/distributions/php-7.1.17.tar.gz

② 進入解壓後目錄:

./configure --prefix=/usr/local/services/php7 \
--with-openssl \
--with-pcre-regex \
--with-kerberos \
--with-libdir=lib \
--with-libxml-dir \
--with-mysqli=shared,mysqlnd \
--with-pdo-mysql=shared,mysqlnd \
--with-pdo-sqlite \
--with-gd \
--with-iconv \
--with-zlib \
--with-xmlrpc \
--with-xsl \
--with-pear \
--with-gettext \
--with-curl \
--with-png-dir \
--with-jpeg-dir \
--with-freetype-dir \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-mysqlnd \
--enable-zip \
--enable-inline-optimization \
--enable-shared \
--enable-libxml \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-gd-native-ttf \
--enable-pcntl \
--enable-sockets \
--enable-soap \
--enable-session \
--enable-opcache \
--enable-fpm \
--enable-maintainer-zts \
--enable-fileinfo

執行./configure時發現有些庫沒有裝,於是yum安裝了一下庫:

yum install libxml2-devel             // error: libxml2 not found
yum install curl-devel                // error: cURL version 7.10.5 or later is required to compile php with cURL support
yum -y install libjpeg-devel          // error: jpeglib.h not found.
yum -y install libpng-devel           // error: png.h not found.
yum install freetype freetype-devel   // error: freetype-config not found.
yum install libxslt libxslt-devel     // error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution

配置成功以後,執行make && make install安裝。

③ 配置php

cp /usr/local/php-7.1.17/php.ini-development /usr/local/services/php7/lib/php.ini

修改 php.ini 的內容:

######避免PHP資訊暴露在http頭中
expose_php = Off
######避免暴露php呼叫mysql的錯誤資訊
display_errors = Off
######在關閉display_errors後開啟PHP錯誤日誌
log_errors = On
######錯誤日誌路徑
error_log = /usr/local/services/php7/log/php_errors.log

######設定PHP的擴充套件庫路徑
extension_dir = "/usr/local/services/php7/lib/php/extensions/no-debug-zts-20160303/"
######設定PHP的一些動態庫
zend_extension = opcache.so
extension=amqp.so
extension=redis.so
extension=mongodb.so
extension=swoole.so

######設定PHP的時區
date.timezone = Asia/Shanghai

######開啟opcache
[opcache]
opcache.enable=1
opcache.enable_cli=1

④ 配置 php-fpm

cp etc/php-fpm.conf.default etc/php-fpm.conf

修改 php-fpm.conf 的內容:

######設定錯誤日誌的路徑
error_log = /usr/local/php7/log/php-fpm.log
######設定日誌級別
log_level = error
######引入www.conf檔案中的配置
include=/usr/local/php7/etc/php-fpm.d/*.conf

⑤ 配置www.conf

www.conf是 php-fpm 程序服務的擴充套件配置檔案

cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf

修改 www.conf 的內容:

######設定使用者和使用者組
user = www
group = www

如果不存在則建立使用者&使用者組

groupadd www
useradd -g www www

⑥ 啟動php-fpm

/usr/local/services/php7/sbin/php-fpm

可以檢視程序或者9000埠的監聽情況。

四、安裝lumen

LumenLaravel框架的精簡版,可以快速的開發API介面服務。

1、安裝composer

curl -sS https://getcomposer.org/installer | php

如果提示找不到php,請建軟鏈:

ln -s /usr/local/services/php7/bin/php /usr/bin/php

2、建立lumen專案

如果我們要在/data/project/目錄下建專案,進入該目錄並切換到www使用者(不能用root使用者執行composer命令),執行:

php composer.phar create-project --prefer-dist laravel/lumen demo

執行成功以後,就在當前目錄下建立了一個叫demo的專案。

3、寫一個最簡單的介面

在檔案/data/project/demo/routes/web.php裡新增一個路由:

<?php

$router->get('/', function () use ($router) {
    return $router->app->version();
});


$router->get('getHelloWorld', '[email protected]');   // 新增一個介面

在檔案/data/project/demo/app/Http/Controllers/ExampleController.php裡新增一個getHelloWorld方法:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ExampleController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
    }

    // 新增一個方法
    public function getHelloWorld(Request $request) {
        return "hello, lumen";
    }
}

到這裡介面就開發完成了

五、配置請求轉發

1、nginx轉發配置

假設我們指定請求的域名為api.lumen.com,則當 nginx 收到通過該域名發來的HTTP請求時,將請求轉發到後端的php-fpm模組。

/usr/local/services/nginx/conf 配置目錄下新建一個配置檔案api.lumen.com.conf,內容如下:

server {
    listen       80;
    server_name  api.lumen.com;
    root /data/project/demo/public;
    index index.php;

    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Headers' 'X_forwarded-for,Content-Type';
    add_header 'Access-Control-Allow-Origin' '$http_origin';
    add_header 'Access-Control-Allow-Methods' 'GET,POST';

    location / {
        if ($request_method = 'OPTIONS') {
            return 200;
        }
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php{
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi.conf;
    }
}

然後在nginx.conf的最後把上面的配置檔案 include 進去:

http {
    ...
    include api.lumen.com.conf;
}

重新載入 nginx 配置:

./nginx -s reload

2、測試介面

/etc/hosts裡新增:

127.0.0.1 api.lumen.com

請求介面:

[root@VM_104_153_centos conf]# curl "http://api.lumen.com/getHelloWorld"
hello, lumen

成功返回。

相關推薦

搭建Laravel API服務

一、伺服器環境 主機 作業系統 Nginx版本 php版本 lumen版本 騰訊雲主機 Centos 7.2 64位 1.14.0 7.1.17 5.6 二、安裝nginx 1、 安裝 ngin

[CI] 使用CodeIgniter框架搭建RESTful API服務

解釋 valid 源碼 stat target 面向服務 prot 多次 1.0 在2011年8月的時候,我寫了一篇博客《使用CodeIgniter框架搭建RESTful API服務》,介紹了RESTful的設計概念,以及使用CodeIgniter框架實現RESTful

Go實戰--通過gin-gonic框架搭建restful api服務(github.com/gin-gonic/gin)

users .post sage 事先 eat mas routes pac 操作mysql 生命不止,繼續 go go go !!! 先插播一條廣告,給你堅持學習golang的理由: 《2017 軟件開發薪酬調查:Go 和 Scala 是最賺錢的語言》 言歸正傳!

Go實戰--通過httprouter和redis框架搭建restful api服務(github.com/julienschmidt/httprouter)

生命不止,繼續 go go go !!! httprouter HttpRouter is a lightweight high performance HTTP request router (also called multiplexer or ju

Vue.js(15)之 json-server搭建模擬的API服務

詳情 dash margin 個數 container time clas nbsp host json-server搭建模擬的API服務器 運行命令 npm install json-server -D 全局安裝 json-server 項目根目錄下創建 moc

Json-server搭建前端虛擬REST API服務

嘮嘮嗑、 為什麼要來詳細介紹一下json-server呢?因為我們前端開發人員在開發後臺管理類專案的過程中打交道最多還是API聯調,然後資料渲染頁面,或者動態資料繫結。 但是有個很矛盾的問題就是,很多時候前後端是一起開發的,有可能後端的進度趕不上前端的進度。一般情況下的解

《深入理解Spring Cloud與微服務構建》學習筆記(七)~SpringBoot 整合 Swagger2,搭建線上api文件

一、在專案 pom.xml 引入 swagger 依賴 springfox-swagger2 和 springfox-swagger-ui 如: <dependency> <groupId>io.springfox</groupId>

Beego搭建api服務,自動生成文件。

在網上找了一些例子,為了應用方便,自己簡單記錄一下。前提條件:配置GOPATH、GOBIN、PATH 一、檢查環境配置,很重要! Ubuntu16.04下配置(~/.bashrc)如下: export GOPATH=/home/user/go export GOBIN=$

11.2.5、搭建RESTful API 之 實現WSGI服務的URL對映

問題引出:對於一個稍具規模的網站來說,實現的功能不可能通過一條URL來完成。如何定義多條URL,也是RESTful API考慮的問題。 需求: 本小節將考慮這樣一個虛擬機器管理的WSGI服務。使用者可以通過傳送HTTP請求,來實現對虛擬機器的管理(包括建立、查詢、更新以及刪

【重學Node.js 第1&2篇】本地搭建Node環境並起RESTful Api服務

本地搭建Node環境並起RESTful Api服務 課程介紹看這裡:https://www.cnblogs.com/zhangran/p/11963616.html 專案github地址:https://github.com/hellozhangran/happy-egg-server 說明:本想分兩章講環境

centos搭建ntp時間服務

搭建本地ntp服務器 centos1、安裝。yum install -y ntp2、開機啟動。chkconfig ntpd on3、配置。vim /etc/ntp.conf修改restrict default kod nomodify notrap nopeer noquery變成restrict defau

利用vultr搭建自己的服務器,附帶ss搭建哦!!!

設置 rtu 網絡數 瀏覽器 命令 運行 12個 信用 sof   眾所周知,我國因為某些原因查閱瀏覽不到一些國外的資料及內容,這給我們的學習工作帶來了很大的不便。所以怎樣才能跨越這個障礙呢?這就需要VPS(Virtual Private Server 虛擬專用服務器)的幫

騰訊雲,搭建Http靜態服務器環境

輸出 成功 靜態網站 hello push 正常 con clas target 任務時間:15min ~ 30min 搭建靜態網站,首先需要部署環境。下面的步驟,將告訴大家如何在服務器上通過 Nginx 部署 HTTP 靜態服務。 安裝 Nginx 在 CentOS

基於tinyproxy搭建yum代理服務

mtu packet onf adc enca 容器 back user spa 在我們實際的工作當中,經常會遇到這種情況,我們對線上服務器進行操作時是通過跳板機來進行的,出於安全性及投入資金來考慮非必要情況下除跳板機以外的服務器是沒有內網ip的,所以當我們位於內網的服務器

搭建FTP/NFS服務(vsftpd基於虛擬用戶的訪問形式)

nfs ftp vsftpd mysql題目:搭建一套文件vsftp文件共享服務,共享目錄為/ftproot,要求:(描述完整的過程)1)基於虛擬用戶的訪問形式;2)匿名不允許上傳;3)禁錮所有的用戶於其家目錄當中;4)限制最大並發連接數為200;5)匿名用戶的最大傳輸速率512KB/s;6)虛擬用戶的賬號存

mac 教你如何在Mac上搭建自己的服務器——Nginx

啟動 blank index 模擬 imp json 等待 打開終端 簡單 WHAT 本篇主要是基於Nginx在Mac上搭建自己的服務器。 我相信很多朋友肯定是第一次聽到Nginx,關於它具有怎樣的傳奇,這兒肯定說不完也說不透. 有興趣的朋友可以自行google或者baid

阿裏雲centos7.2 搭建 laravel 框架走過的坑

阿裏雲centos7.2 搭建 laravel 框架走過的坑centos7.2 搭建 laravel框架走過的坑前言 公司正在處於發展階段最近開發的夥伴和運維的夥伴一直在忙碌著 開發人員一直在寫laravel架構的代碼以及新項目的拓展,時間很趕所以作為linux運維的我也不能怠慢。首先搭建lnmp架構 ngi

FTP(三)vsftp + ssl搭建安全ftp服務

ssl vsftpd配置一、背景 ftp是一個古老協議,明文傳輸數據,所以為了安全需要結合ssl證書加密通訊 。本文是繼上兩篇的擴展優化。二、創建本地ssl證書#(umask 077;openssl genrsa -out /etc/vsftpd/ftpkey.pri 2048)#openssl req

搭建NTP時間服務

ntpCentos 7#安裝軟件[[email protected]/* */ ~]# yum -y install chrony#修改配置文件[[email protected]/* */ ~]# vi /etc/chrony.conf 22:allow 192.168/16#設置時

從第一次在家聽了一點小迪培訓寫起,搭建一個IIS服務

htm 服務 asp環境 web管理 信息 6.0 int win 結果 今天回家終於考慮好了,學滲透。說做就做,開了電腦聽小迪培訓第二天,開頭說的是搭建IIS,我記得我那本書上有,但是書上的是XP。於是我百度了一下“WIN7下搭建IIS服務器”。搜索結果很詳細,有配圖,但