召喚神龍 - 安裝 centos 8, php 8, mysql 8, laravel 8 的整套 php 執行環境

yyy123456發表於2020-11-27

本文編寫時間:2020-11-27

標題說明

傳說集齊龍珠可以召喚神龍。

而使用 php 的常用開發框架 laravel 這一技術棧大版本驚人的實現了統一,均為 8。centos 8, php 8, mysql 8, laravel 8。
(假裝不知道 ubuntu 也有很多人用。。)

用 linux 的好處是開發環境和部署環境高度統一,而 win 10 和 docker 的普及使得所有的 php 程式設計師可以輕易在 windows 電腦和 mac 電腦進行 linux 環境下的開發,同時阿里巴巴開源映象站的存在使得安裝本文全部軟體所需時間僅需2分鐘左右,已經方便的沒法形容了。也是寫這個系列文章的初衷。

以下列出這4類軟體的大版本為 8 時的發行時間。

軟體 發行時間
centos 8 2019-09-24
php 8 2020-11-26
mysql 8 2016-09-12
laravel 8 2020-09-08


本文各軟體版本

centos 8.2
php 8.0.0
mysql 8.0.21
laravel 8.16.1 


首先,安裝阿里的 centos 倉庫。(centos 8)

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
rm -f  /etc/yum.repos.d/CentOS-centosplus.repo
rm -f  /etc/yum.repos.d/CentOS-PowerTools.repo
rm -f  /etc/yum.repos.d/CentOS-Extras.repo
rm -f  /etc/yum.repos.d/CentOS-AppStream.repo
dnf makecache
dnf repolist


安裝阿里的 epel 倉庫。(centos 8)

dnf install -y epel-release

sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*

sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
dnf makecache
dnf repolist


安裝阿里的 remi 的倉庫(centos 8)

dnf install -y https://mirrors.aliyun.com/remi/enterprise/remi-release-8.rpm

sed -i  's/https*:\/\/rpms.remirepo.net/https:\/\/mirrors.aliyun.com\/remi/g'  /etc/yum.repos.d/remi*

sed -i 's/#baseurl/baseurl/g' /etc/yum.repos.d/remi*

sed -i 's|^mirrorlist|#mirrorlist|' /etc/yum.repos.d/remi*

dnf makecache
dnf repolist


安裝 php 8(centos 8)

dnf install -y yum-utils

dnf install -y php80 php80-php-devel  php80-php-fpm  php80-php-mbstring php80-php-memcached php80-php-redis  php80-php-mysqlnd  php80-php-pdo  php80-php-bcmath php80-php-xml php80-php-gd php80-php-gmp php80-php-igbinary php80-php-imagick php80-php-pdo_mysql php80-php-posix php80-php-simplexml  php80-php-opcache php80-php-xsl php80-php-xmlwriter php80-php-xmlreader php80-php-swoole php80-php-zip  php80-php-yaml php80-php-uuid

體驗到快如閃電的速度了吧!

提示 :
php80-php-memcache
php80-php-mcrypt
php80-php-phalcon
php80-php-yar
php80-php-yaf
這幾個暫未發現,所以也沒放在上面的命令裡。

安裝阿里的 composer 映象源(centos 8)

ln -s /usr/bin/php80 /usr/bin/php

curl -o /usr/local/bin/composer https://mirrors.aliyun.com/composer/composer.phar

chmod +x /usr/local/bin/composer

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/


安裝 nginx 並整合 php-fpm 服務(centos 8)

下面這個echo是一句命令,得一起復制

echo $'[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true ' > /etc/yum.repos.d/nginx.repo
dnf makecache
dnf install -y nginx
systemctl enable nginx
systemctl enable php80-php-fpm
sed -i 's/user\ =\ apache/user\ =\ nginx/g' /etc/opt/remi/php80/php-fpm.d/www.conf
sed -i 's/group\ =\ apache/group\ =\ nginx/g' /etc/opt/remi/php80/php-fpm.d/www.conf
sed -i 's/listen\ =\ \/var\/opt\/remi\/php80\/run\/php-fpm\/www.sock/listen=9000/g' /etc/opt/remi/php80/php-fpm.d/www.conf

rm -f /etc/nginx/conf.d/default.conf
vi /etc/nginx/conf.d/default.conf

/etc/nginx/conf.d/default.conf 檔案內容如下

server {
    listen       80;
    server_name  localhost;
    charset utf-8 ;
    access_log  /var/log/nginx/host.access.log  main;
    root   /www/blog/public;
    index index.php  index.html index.htm;
    error_page 404  500 502 503 504  /50x.html;
    location = /50x.html {
        root   /www/blog/public;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}


安裝mysql 8(centos 8)

實際也用了阿里的映象,因為是從AppStream庫下載的,速度極快。

dnf install -y @mysql
systemctl enable mysqld
systemctl start mysqld
mysql -uroot

mysql -uroot,這個命令是登入mysql服務用的。
進入後執行下面這個命令,建立一個空的資料庫名叫laravel,然後用 quit 退出。

create database laravel default charset utf8mb4;


安裝redis,git 以及其他常用庫(centos 8)

dnf install -y  git wget vim redis zip unzip p7zip rsync crontabs supervisor net-tools python3
systemctl enable redis
systemctl start redis


安裝 laravel 8(centos 8)

實際也用了阿里的映象,因為 composer 映象源已設定過。
假設專案名稱叫blog,安裝在 /www 目錄下

mkdir -p /www
cd /www
composer create-project --prefer-dist laravel/laravel blog "8.*"
rm -f ./blog/routes/web.php
vi ./blog/routes/web.php
<?php
use Illuminate\Support\Facades\Route;

Route::get('/', function () {
     ob_start();
     phpinfo(INFO_GENERAL);
     $s = ob_get_contents();
     ob_clean();
     $system = preg_replace( '#^.+?Build.System.</td><td class="v">([^<]+?)\<.+$#s','$1',$s );
     echo "operating system: ".$system."<br>\n";

     echo "php: ".phpversion()."<br>\n";

     echo "laravel: " . app()::VERSION."<br>\n";

     $dbversion = \DB::select("select version() v");
     echo "mysql: " . $dbversion[0]->v."<br>\n";
});


啟動 php-fpm 和 nginx 並驗證安裝正確

systemctl start nginx
systemctl start php80-php-fpm

curl localhost/

就能看到類似下面的輸出:

operating system : Red Hat Enterprise Linux release 8.2 (Ootpa) <br>
php : 8.0.0<br>
laravel: 8.16.1<br>
mysql: 8.0.21<br>


總結(centos 8)

感謝 php 開發組的努力,使得 php 在現代程式語言中保持了競爭力。
感謝阿里的開源映象庫

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章