操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    一、WSL2 安裝 CentOS8

    在前面的文章中介紹了 WSL(Win-dows Sub-sys-tem for Linux) 、在 Win10 中的安裝與配置 WSL2。

    WSL2——Windows10 V2004版安裝配置第二代Linux的Windows子系統(tǒng)

    如文中所示,首先安裝配置完成 WSL2,然后 Ubuntu20 等 Linux 發(fā)行版在 Windows 應(yīng)用商店(store)中直接點(diǎn)擊安裝即可。本人為了和線上服務(wù)器環(huán)境保持一致,想安裝 CentOS8,但是 Windows 應(yīng)用商店中卻沒(méi)有包含 CentOS。那么在安裝好 WSL 之后,如何不通過(guò) store 而手動(dòng)安裝適配 WSL 的 Linux 發(fā)行版呢?

    1、安裝 Chocolatey

    NuGet(讀作New Get)是用于微軟.NET開發(fā)平臺(tái)的軟件包管理器,是一個(gè)Visual Studio的擴(kuò)展。Chocolatey 是基于 NuGet 的一個(gè)軟件包管理器,就像 Linux 中的 yum 或 apt 一樣,在 Windows10 中也可以用命令行安裝程序了。

    右鍵單擊開始菜單,選擇 Windows PowerShell(管理員),打開一個(gè)具有管理員權(quán)限的 PowerShell 窗口,輸入命令并回車:

    Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

    完成后,輸入命令:choco ,如果能正確顯示版本號(hào),說(shuō)明安裝成功。

    官網(wǎng)文檔:https://chocolatey.org/docs/installation

    2、安裝 LxRunOffline

    LxRunOffline 是非常實(shí)用的 WSL 管理軟件,可以備份、創(chuàng)建、恢復(fù)、導(dǎo)出WSL子系統(tǒng),也可以安裝適配 WSL 的任何 Linux 發(fā)行版,可以將 WSL 子系統(tǒng)安裝到任意目錄中。

    在 PowerShell 窗口中輸入命令安裝LxRunOffline,安裝完成后重啟 PowerShell。

    choco install lxrunoffline -y

    3、下載 CentOS 鏡像

    GitHub 上有開源的適用于 WSL 的 CentOS 系統(tǒng)安裝鏡像,打開項(xiàng)目頁(yè)面,選擇 CentOS8 分支,進(jìn)入 docker 目錄,下載文件 centos-8-x86_64.tar.xz ,假如下載后保存在 D 盤下。

    https://github.com/CentOS/sig-cloud-instance-images/tree/CentOS-8-x86_64/dockergithub.com

    4、安裝 CentOS 鏡像

    安裝WSL子系統(tǒng)的命令行格式為:

    LxRunOffline install -n 自定義系統(tǒng)名稱 -d 安裝目錄路徑 -f 安裝包路徑.tar.xz

    重新啟動(dòng) PowerShell,輸入命令安裝 CentOS 鏡像:

    LxRunOffline install -n centos -d C:/centos -f D:\centos-8-x86_64.tar.xz

    表示將 CentOS 系統(tǒng)安裝到 C 盤的 centos 文件夾下,并且命名為 centos。注意:Windows 系統(tǒng)命令行中的文件路徑和 Linux 系統(tǒng)不同,這里安裝目錄 C:/ 要用 Linux 方式的反斜線表示,是為了 WSL 使用;而安裝包路徑 D:\ 是為了 LxRunOffline 使用,是 Windows 下的路徑。

    查看所有已安裝鏡像,能夠顯示已安裝的 centos ,表示安裝成功。

    LxRunOffline.exe list

    如果安裝失敗也會(huì)出現(xiàn) centos 目錄,安裝失敗重新安裝時(shí)需要卸載鏡像,另外安裝目錄在 C 盤在卸載時(shí)可能存在權(quán)限問(wèn)題,卸載后如果目錄沒(méi)有刪除可以手動(dòng)刪除目錄。

    卸載 WSL 系統(tǒng)鏡像命令:

    LxRunOffline.exe uninstall -n centos

    5、升級(jí)為 WSL2

    輸入命令并回車,列出已經(jīng)安裝的 WSL 的信息

    wsl -l -v

    將對(duì)應(yīng)的 WSL 發(fā)行版設(shè)為 WSL2,命令格式:

    wsl --set-version <Distro> 2

    其中<Distro>要和上面查詢到的信息一致,本例中為 centos,輸入以下命令并回車:

    wsl --set-version centos 2

    輸入以下命令并回車,設(shè)置默認(rèn)使用的發(fā)行版:

    wsl -d centos

    此時(shí),再次使用命令 wsl -l -v 查看,可以看到 centos 的 VERSION 已經(jīng)變?yōu)?2,并且名稱前加了*號(hào)(即默認(rèn)的WSL系統(tǒng))。

    6、WSL 子系統(tǒng)的啟動(dòng)與關(guān)閉

    此時(shí),輸入命令 wsl -d centos 即可啟動(dòng)。

    停止WSL子系統(tǒng)命令:wsl --shutdown -n 系統(tǒng)名稱,如果直接輸入 wsl --shutdown ,會(huì)停止所有已啟動(dòng)的 WSL 子系統(tǒng)。

    在管理員權(quán)限的 PoweShell 中輸入命令:net stop LxssManager ,也可以停止 WSL 子系統(tǒng)。

    7、使用 Windows Terminal

    當(dāng)然,為了更好的配合 WSL ,一定要安裝 Windows Terminal。

    Windows10 安裝最新版 PowerShell 及 Windows Terminal 并美化

    有了 Terminal ,可以直接打開所有已安裝的 WSL 發(fā)行版:

    Terminal 的配色方案,可以參考:https://iterm2colorschemes.com/

    8、目錄設(shè)置

    在 WSL2 系統(tǒng)中可以直接訪問(wèn) windows 磁盤文件,因此為了不增加 WSL系統(tǒng) VHD 虛擬磁盤空間,我個(gè)人打算將一些安裝軟件包放在 F:\wsl 目錄下,將網(wǎng)站web程序放在 E:\wwwroot 目錄中。而在 wsl 系統(tǒng)中的訪問(wèn)路徑分別是 /mnt/f/wsl 和 /mnt/e/wwwroot ,當(dāng)然 WSL 這樣直接訪問(wèn) windows 磁盤會(huì)有很大的性能問(wèn)題。后續(xù)使用中如果性能的降低超過(guò)了可忍受的程度,再考慮將這兩個(gè)目錄移動(dòng)到 wsl 的虛擬磁盤。

    打開 Windows 安全中心,病毒和威脅防護(hù)設(shè)置,管理設(shè)置,添加或刪除排除項(xiàng),添加排除項(xiàng),將上述兩個(gè)目錄排除,這樣會(huì)減少 windows 的系統(tǒng)性能占用。


    二、centos8 基本配置

    1、查看 centos 版本

    uname -a
    cat /proc/version
    cat /etc/redhat-release

    2、安裝 wget vim 等工具

    cd ~ #轉(zhuǎn)到用戶目錄
    dnf -y install vim wget
    dnf -y install net-tools #啟用 ifconfig,netstat 等網(wǎng)絡(luò) 命令

    3、更換國(guó)內(nèi)源

    (1) 備份原始的yum源

    cd /etc/yum.repos.d
    mv CentOS-Base.repo CentOS-Base.repo.bak
    mv CentOS-extras.repo CentOS-extras.repo.bak
    mv CentOS-centosplus.repo CentOS-centosplus.repo.bak
    mv CentOS-PowerTools.repo CentOS-PowerTools.repo.bak
    mv CentOS-AppStream.repo CentOS-AppStream.repo.bak

    (2) 下載對(duì)應(yīng)版本的repo文件

    # wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
    vim CentOS-Base.repo

    可以看到 aliyun 的源包含的以下各項(xiàng):[base] [extras] [centosplus] [PowerTools] [AppStream] ,因此前面對(duì)這些源都做了備份。

    (3) 清除舊的緩存并生成新的緩存

    # dnf clean all
    # dnf makecache


    三、源碼編譯安裝 Nginx

    1、安裝編譯工具及庫(kù)文件:

    如果缺少某個(gè)庫(kù)文件,在編譯時(shí)會(huì)給出錯(cuò)誤提示,可按提示安裝缺失的庫(kù)文件,然后重新進(jìn)行編譯。

    dnf -y install make gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

    gcc 是是GNU開發(fā)的C,C++和Java等多種語(yǔ)言的編譯器。

    pcre pcre-devel 是一個(gè) perl 庫(kù),包括 perl 兼容的正則表達(dá)式庫(kù),Nginx 的 Rewrite 模塊和HTTP 核心模塊會(huì)使用到 PCRE 來(lái)解析正則表達(dá)式語(yǔ)法。

    zlib zlib-devel 庫(kù)提供了很多種壓縮和解壓縮方式,Nginx 啟用壓縮功能后,將使用 zlib 對(duì) http 包的內(nèi)容進(jìn)行 gzip 壓縮。

    openssl openssl-devel 是實(shí)現(xiàn)了SSL協(xié)議的開源項(xiàng)目,可以實(shí)現(xiàn)秘鑰證書管理、對(duì)稱加密和非對(duì)稱加密 。用 SSL 加密的安全數(shù)據(jù)傳輸通道,保證客戶端和服務(wù)器之間數(shù)據(jù)的安全。簡(jiǎn)單的說(shuō)就是瀏覽器以 https 開頭的網(wǎng)址訪問(wèn)網(wǎng)站,瀏覽器和服務(wù)器之間數(shù)據(jù)加密傳輸。當(dāng) Nginx 開啟SSL功能后需要此模塊的支持。

    2、下載并解壓:

    打開官網(wǎng) nginx: download,可以看到當(dāng)前最新版本是 nginx-1.19.1 ,下載 nginx-1.19.1.tar.gz 文件并解壓。

    cd /mnt/f/wsl #此目錄是我個(gè)人存放各種安裝包的目錄,也就是 win10 的 F 盤 wsl 目錄。
    wget http://nginx.org/download/nginx-1.19.1.tar.gz
    tar -zxvf nginx-1.19.1.tar.gz

    3、開始編譯

    cd  nginx-1.19.1
    ./configure

    檢查系統(tǒng)環(huán)境是否符合編譯安裝的要求,比如是否有g(shù)cc編譯工具,是否支持編譯參數(shù)當(dāng)中的模塊,并根據(jù)開啟的參數(shù)等生成Makefile文件為下一步做準(zhǔn)備。

    make && make install

    生成腳本及配置文件,根據(jù)Makefile文件生成相應(yīng)的模塊,安裝,創(chuàng)建目錄,并將生成的模塊和文件復(fù)制到相應(yīng)的目錄。

    4、等待安裝完成

    如果沒(méi)有錯(cuò)誤提示,默認(rèn)安裝目錄是:/usr/local/nginx,現(xiàn)在可以查看版本,能正確顯示版本,說(shuō)明安裝完成。

    /usr/local/nginx/sbin/nginx -V

    5、添加軟鏈接

    由于 WSL 不能使用 systemd ,使用 service 時(shí)會(huì)出現(xiàn)錯(cuò)誤提示,這里不注冊(cè)為 service ,而是使用軟鏈接的方式省略執(zhí)行 nginx 命令的路徑前綴。

    ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
    nginx #啟動(dòng)服務(wù)
    nginx -s reload  #不停止服務(wù)重新載入配置文件
    nginx -s stop #停止服務(wù)

    6、配置

    創(chuàng)建 Nginx 運(yùn)行用戶及用戶組 www ,先停止服務(wù)再編輯 nginx.conf 文件

    groupadd www
    useradd -g www www
    
    mkdir -p /data/wwwlogs
    chown -R www:www /data/wwwlogs
    
    nginx -s stop #停止服務(wù)
    vim /usr/local/nginx/conf/nginx.conf

    參考了集成環(huán)境 OneinStack 中的配置。默認(rèn) user 為 nobody ,修改為 www 。將網(wǎng)站放在 /mnt/e/wwwroot 路徑中,即 Win10 本地 E 盤 wwwroot 目錄。

    fastcgi_pass unix:/dev/shm/php-cgi.sock; 表示 Nginx 和 PHP-FPM 的進(jìn)程間采用UNIX Domain Socket 方式通信,因此在 PHP-FPM 的配置文件中也要做相應(yīng)的配置。

    最后自動(dòng)加載 vhost 目錄中的配置文件,完整內(nèi)容如下:

    user www www;
    worker_processes auto;
    
    error_log /data/wwwlogs/error_nginx.log crit;
    pid /var/run/nginx.pid;
    worker_rlimit_nofile 51200;
    
    events {
      use epoll;
      worker_connections 51200;
      multi_accept on;
    }
    
    http {
      include mime.types;
      default_type application/octet-stream;
      server_names_hash_bucket_size 128;
      client_header_buffer_size 32k;
      large_client_header_buffers 4 32k;
      client_max_body_size 1024m;
      client_body_buffer_size 10m;
      sendfile on;
      tcp_nopush on;
      keepalive_timeout 120;
      server_tokens off;
      tcp_nodelay on;
    
      fastcgi_connect_timeout 300;
      fastcgi_send_timeout 300;
      fastcgi_read_timeout 300;
      fastcgi_buffer_size 64k;
      fastcgi_buffers 4 64k;
      fastcgi_busy_buffers_size 128k;
      fastcgi_temp_file_write_size 128k;
      fastcgi_intercept_errors on;
    
      #Gzip Compression
      gzip on;
      gzip_buffers 16 8k;
      gzip_comp_level 6;
      gzip_http_version 1.1;
      gzip_min_length 256;
      gzip_proxied any;
      gzip_vary on;
      gzip_types
        text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
        text/javascript application/javascript application/x-javascript
        text/x-json application/json application/x-web-app-manifest+json
        text/css text/plain text/x-component
        font/opentype application/x-font-ttf application/vnd.ms-fontobject
        image/x-icon;
      gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    
    ######################## default ############################
      server {
        listen 80;
        server_name _;
        access_log /data/wwwlogs/access_nginx.log combined;
        root /mnt/e/wwwroot/default;
        index index.html index.htm index.php;
        #error_page 404 /404.html;
        #error_page 502 /502.html;
        #location /nginx_status {
         # stub_status on;
         # access_log off;
         # allow 127.0.0.1;
         # deny all;
        #}
        location ~ [^/]\.php(/|$) {
          #fastcgi_pass 127.0.0.1:9000;
          fastcgi_pass unix:/dev/shm/php-cgi.sock;
          fastcgi_index index.php;
          include fastcgi.conf;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
          expires 30d;
          access_log off;
        }
        location ~ .*\.(js|css)?$ {
          expires 7d;
          access_log off;
        }
        location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) {
          deny all;
        }
      }
    ########################## vhost #############################
      include vhost/*.conf;
    }

    錯(cuò)誤提示:

    unknown directive "stub_status" in /usr/local/nginx/conf/nginx.conf:64

    stub_status模塊主要用于查看Nginx的一些狀態(tài)信息,默認(rèn)不會(huì)編譯進(jìn)Nginx,在配置文件中就不能有stub_status 相關(guān)配置信息。

    7、測(cè)試

    啟動(dòng)命令:nginx ,沒(méi)有出現(xiàn)任何提示。

    查看端口服務(wù)是否開啟

    netstat -lnt|grep 80

    打開瀏覽器

    輸入 http://localhost 或者 http://127.0.0.1,然后回車

    如果出現(xiàn) Welcome to nginx! 頁(yè)面,說(shuō)明 WSL 及 Nginx 服務(wù)器運(yùn)行正常。


    四、源碼安裝 MySql8.0

    1、下載 MySql8.0

    打開mysql官網(wǎng),社區(qū)版下載頁(yè),當(dāng)前最新版本是 8.0.21,操作系統(tǒng)選擇 Linux-Generic ,這里根據(jù)自己的系統(tǒng)選擇下載文件:mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz,即 x86 架構(gòu) 64位版本。

    https://dev.mysql.com/downloads/mysql/dev.mysql.com

    點(diǎn)擊 Download 后,轉(zhuǎn)到文件鏈接頁(yè),在 No thanks,just start my download. 上右鍵,選擇復(fù)制鏈接,在 Centos 中下載鏈接文件:

    cd /mnt/f/wsl #此目錄是我個(gè)人存放各種安裝包的目錄,也就是 win10 的 F 盤 wsl 目錄。
    wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz

    2、解壓并配置相關(guān)目錄與權(quán)限

    解壓之后,將解壓出的目錄移動(dòng)到 /usr/local/ 下并改名為 mysql,切換到 /usr/local/mysql 目錄,創(chuàng)建 data 目錄,再在根目錄下創(chuàng)建 /data/mysql 目錄。目錄路徑可以按自己的需要?jiǎng)?chuàng)建。

    tar -xvf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
    
    mv mysql-8.0.21-linux-glibc2.12-x86_64 /usr/local/mysql
    
    cd /usr/local/mysql
    mkdir data
    mkdir -p /data/mysql

    創(chuàng)建用戶組 mysql ,給用戶組添加用戶 mysql,并給相應(yīng)的目錄權(quán)限。

    groupadd mysql
    useradd -g mysql mysql
    
    chown -R mysql:mysql /usr/local/mysql/
    chown -R mysql:mysql /data/mysql

    3、初始化 MySql

    添加需要的庫(kù)文件

    dnf install libaio numactl initscripts -y

    初始化,參數(shù)要和前面創(chuàng)建的用戶及目錄對(duì)應(yīng)。

    bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

    執(zhí)行結(jié)束會(huì)生成數(shù)據(jù)庫(kù)root用戶密碼,做好記錄。( A temporary password is generated for root@localhost: Zlg+oqdhy9i=)

    如果執(zhí)行失敗,需要?jiǎng)h除 data 和 tmp 目錄下所有內(nèi)容,根據(jù)錯(cuò)誤提示,檢查配置后重新執(zhí)行初始化。

    4、創(chuàng)建并配置 my.cnf 文件

    touch /etc/my.cnf
    vim /etc/my.cnf

    my.cnf 參考了集成環(huán)境 OneinStack 中的配置,內(nèi)容如下。同樣,my.cnf 配置文件中的目錄路徑也要和前面mysql初始化時(shí)的一致。

    [client]
    port = 3306
    socket = /tmp/mysql.sock
    default-character-set = utf8mb4
    
    [mysql]
    prompt="MySQL [\d]> "
    no-auto-rehash
    
    [mysqld]
    port = 3306
    socket = /tmp/mysql.sock
    default_authentication_plugin = mysql_native_password
    
    basedir = /usr/local/mysql
    datadir = /usr/local/mysql/data
    pid-file = /data/mysql/mysql.pid
    user = mysql
    bind-address = 0.0.0.0
    server-id = 1
    
    init-connect = 'SET NAMES utf8mb4'
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    
    skip-name-resolve
    #skip-networking
    back_log = 300
    
    max_connections = 1259
    max_connect_errors = 6000
    open_files_limit = 65535
    table_open_cache = 1024
    max_allowed_packet = 500M
    binlog_cache_size = 1M
    max_heap_table_size = 8M
    tmp_table_size = 128M
    
    read_buffer_size = 2M
    read_rnd_buffer_size = 8M
    sort_buffer_size = 8M
    join_buffer_size = 8M
    key_buffer_size = 256M
    
    thread_cache_size = 64
    
    ft_min_word_len = 4
    
    log_bin = mysql-bin
    binlog_format = mixed
    binlog_expire_logs_seconds = 604800
    
    log_error = /data/mysql/mysql-error.log
    slow_query_log = 1
    long_query_time = 1
    slow_query_log_file = /data/mysql/mysql-slow.log
    
    performance_schema = 0
    explicit_defaults_for_timestamp
    
    #lower_case_table_names = 1
    
    skip-external-locking
    
    default_storage_engine = InnoDB
    #default-storage-engine = MyISAM
    innodb_file_per_table = 1
    innodb_open_files = 500
    innodb_buffer_pool_size = 1024M
    innodb_write_io_threads = 4
    innodb_read_io_threads = 4
    innodb_thread_concurrency = 0
    innodb_purge_threads = 1
    innodb_flush_log_at_trx_commit = 2
    innodb_log_buffer_size = 2M
    innodb_log_file_size = 32M
    innodb_log_files_in_group = 3
    innodb_max_dirty_pages_pct = 90
    innodb_lock_wait_timeout = 120
    
    bulk_insert_buffer_size = 8M
    myisam_sort_buffer_size = 64M
    myisam_max_sort_file_size = 10G
    myisam_repair_threads = 1
    
    interactive_timeout = 28800
    wait_timeout = 28800
    
    [mysqldump]
    quick
    max_allowed_packet = 500M
    
    [myisamchk]
    key_buffer_size = 256M
    sort_buffer_size = 8M
    read_buffer = 4M
    write_buffer = 4M

    5、啟動(dòng) MySql

    /usr/local/mysql/support-files/mysql.server start

    只創(chuàng)建軟鏈接,不配置環(huán)境變量。因?yàn)槭褂?mysql 命令登錄數(shù)據(jù)庫(kù),或使用 mysqldump 命令備份數(shù)據(jù)庫(kù),都不常用,要用的時(shí)候直接使用絕對(duì)路徑。

    ln -s /usr/local/mysql/support-files/mysql.server /usr/bin/mysqld
    mysqld start #啟動(dòng)mysql
    mysqld stop #停止mysql
    netstat -lnt #查看已開放的端口

    查看所有可用的命令參數(shù)

    mysqld --help
    Usage: mysqld  {start|stop|restart|reload|force-reload|status}  [ MySQL server options ]

    6、修改密碼

    /usr/local/mysql/bin/mysql -uroot -p
    #輸入初始化時(shí)記錄的密碼
    
    #登錄后在命令提示符 MySQL [(none)]> 后,輸入如下語(yǔ)句并回車
    #(MySql語(yǔ)句要以;結(jié)束,password 修改成自己的新密碼)
    
    alter user 'root'@'localhost' identified by 'password';
    exit #退出

    7、安裝過(guò)程中的報(bào)錯(cuò)及處理方法

    /etc/redhat-lsb/lsb_log_message: line 3: /etc/init.d/functions: No such file or directory

    解決方法是安裝initscripts:dnf -y install initscripts

    報(bào)錯(cuò):

    mysqld_safe error: log-error set to '/data/mysql/mysql-error.log', however file don't exists. Create writable for user 'mysql'.

    解決方法是:創(chuàng)建此文件并給予 mysql 組和用戶權(quán)限

    echo "" > /data/mysql/mysql-error.log
    chown -R mysql:mysql /data/mysql/mysql-error.log

    如下報(bào)錯(cuò)也可以嘗試用此方法解決

    The server quit without updating PID file (/data/mysql/mysql.pid)


    五、源碼編譯安裝 php7.4

    1、下載

    打開PHP官網(wǎng),看到當(dāng)前最新版本是 7.4.9,由于官網(wǎng)國(guó)內(nèi)下載很慢,找到一個(gè)souhu 的庫(kù),下載源碼文件。Index of /php/

    cd /mnt/f/wsl #此目錄是我個(gè)人存放各種安裝包的目錄,也就是 win10 的 F 盤 wsl 目錄。
    wget http://mirrors.sohu.com/php/php-7.4.9.tar.xz

    2、安裝編譯工具和庫(kù)

    dnf -y install make gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

    在安裝 Nginx 時(shí)就已經(jīng)安裝過(guò)編譯工具和庫(kù),在檢查配置編譯參數(shù)時(shí),提示缺少哪個(gè)就安裝哪個(gè)庫(kù)。

    3、創(chuàng)建用戶組和用戶

    如果在安裝 Nginx 時(shí)已經(jīng)創(chuàng)建過(guò),就不用再重復(fù)創(chuàng)建了。

    groupadd www
    useradd -g www www

    4、配置編譯

    解壓縮,移動(dòng)到 /usr/local/ 目錄并重命名為 php,切換到 /usr/local/php 目錄。

    tar -xvf php-7.4.9.tar.xz
    mv php-7.4.9 /usr/local/php

    查看已安裝的 php 編譯參數(shù)命令是:

    php -i|grep configure

    以下編譯參數(shù)來(lái)源于 oneinstack 集成包,復(fù)制以下所有內(nèi)容到 CentOS 命令行窗口,回車,開始檢查配置。

    ./configure --prefix=/usr/local/php \
    --with-config-file-path=/usr/local/php/etc \
    --with-config-file-scan-dir=/usr/local/php/etc/php.d \
    --with-fpm-user=www \
    --with-fpm-group=www \
    --enable-fpm \
    --enable-opcache \
    --disable-fileinfo \
    --enable-mysqlnd \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --with-iconv-dir=/usr/local/libiconv \
    --with-freetype \
    --with-jpeg \
    --with-zlib \
    --enable-xml \
    --disable-rpath \
    --enable-bcmath \
    --enable-shmop \
    --enable-exif \
    --enable-sysvsem \
    --enable-inline-optimization \
    --with-curl=/usr/local/curl \
    --enable-mbregex \
    --enable-mbstring \
    --with-password-argon2 \
    --with-sodium=/usr/local \
    --enable-gd \
    --with-openssl=/usr/local/openssl \
    --with-mhash \
    --enable-pcntl \
    --enable-sockets \
    --with-xmlrpc \
    --enable-ftp \
    --enable-intl \
    --with-xsl \
    --with-gettext \
    --with-zip=/usr/local \
    --enable-soap \
    --disable-debug \
    PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:

    一遍遍執(zhí)行上述檢查配置,根據(jù)報(bào)錯(cuò) error 或類似 not found 類,解決錯(cuò)誤。直到出現(xiàn)如下所示:Thank you for using PHP

    5、安裝完成

    make && make install

    6、報(bào)錯(cuò)及解決

    • 報(bào)錯(cuò)
    configure: error: C++ preprocessor "/lib/cpp" fails sanity check

    解決方法:

    dnf -y install glibc-headers gcc-c++
    • 報(bào)錯(cuò):
    Package 'libxml-2.0', required by 'virtual:world', not found
    Package 'sqlite3', required by 'virtual:world', not found
    Package 'libcurl', required by 'virtual:world', not found
    Package 'libpng', required by 'virtual:world', not found
    Package 'libjpeg', required by 'virtual:world', not found
    Package 'freetype', required by 'virtual:world', not found
    Package 'icu-uc', required by 'virtual:world', not found
    Package 'libsodium', required by 'virtual:world', not found

    解決方法:

    dnf -y install libxml2-devel sqlite-devel libcurl-devel libpng-devel libjpeg-devel freetype-devel libicu-devel
    • 報(bào)錯(cuò):
    Package 'oniguruma', required by 'virtual:world', not found

    oniguruma是一個(gè)處理正則表達(dá)式的庫(kù)

    解決方法:

    wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
    tar -zxvf oniguruma-6.9.4.tar.gz
    cd oniguruma-6.9.4/
    ./autogen.sh && ./configure --prefix=/usr

    報(bào)錯(cuò)

    Generating autotools files.
    ./autogen.sh: line 6: autoreconf: command not found

    解決方法:

    dnf -y install autoconf automake libtool

    再次檢查配置,沒(méi)有問(wèn)題了,再生成腳本及配置文件,安裝。

    ./autogen.sh && ./configure --prefix=/usr
    make && make install
    • 報(bào)錯(cuò):
    configure: error: Package requirements (libsodium >= 1.0.8) were not met:
    Package 'libsodium', required by 'virtual:world', not found

    解決方法:

    Sodium 是一個(gè)全新而且易用的加密庫(kù),用于加密、解密、簽名和生成密碼哈希等等。

    wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable.tar.gz
    tar -zxf libsodium-1.0.18-stable.tar.gz
    cd libsodium-stable
    ./configure --prefix=/usr
    make && make install
    ldconfig
    • 報(bào)錯(cuò):
    checking for Argon2 library... not found
    configure: error: Please ensure the argon2 header and library are installed

    解決方法:

    打開 https://pkgs.org/ ,查找 libargon2 ,找到 centos8 的rpm包,下載安裝。

    wget https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/l/libargon2-20171227-3.el8.x86_64.rpm
    wget https://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/l/libargon2-devel-20171227-3.el8.x86_64.rpm
    rpm -Uvh libargon2-20171227-3.el8.x86_64.rpm
    rpm -Uvh libargon2-devel-20171227-3.el8.x86_64.rpm
    dnf -y install libargon2 libargon2-devel
    • 報(bào)錯(cuò):
    configure: error: Package requirements (libxslt >= 1.1.0) were not met:
    Package 'libxslt', required by 'virtual:world', not found

    解決方法:

    dnf -y install libxslt libxslt-devel
    • 報(bào)錯(cuò):
    Failed to set locale, defaulting to C.UTF-8
    error: rpmdb: BDB2034 unable to allocate memory for mutex; resize mutex region
    error: cannot open Packages index using db5 - Cannot allocate memory (12)
    error: cannot open Packages database in /var/lib/rpm
    Error: Error: rpmdb open failed

    解決方法:

    一般是由于rpm本地?cái)?shù)據(jù)庫(kù)損壞導(dǎo)致的。

    cd /var/lib/rpm      # rpm db所在目錄
    ls | grep 'db.'   # 列出相關(guān)rpm db文件
    rm -f __db.*     # 清除原rpmdb文件
    rpm --rebuilddb     # 重建rpm數(shù)據(jù)庫(kù)
    yum clean all
    dnf makecache
    • 報(bào)錯(cuò):
    Package 'libzip', required by 'virtual:world', not found

    解決方法:

    打開 https://pkgs.org/ ,查找 libzip 及 libzip-devel,找到 centos8 的rpm包,下載安裝。

    wget http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/libzip-1.5.2-1.module_el8.2.0+314+53b99e08.x86_64.rpm
    wget http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/libzip-devel-1.5.2-1.module_el8.2.0+314+53b99e08.x86_64.rpm
    rpm -Uvh libzip-1.5.2-1.module_el8.2.0+314+53b99e08.x86_64.rpm
    rpm -Uvh libzip-devel-1.5.2-1.module_el8.2.0+314+53b99e08.x86_64.rpm
    dnf -y install libzip libzip-devel

    7、配置

    生成 php 配置文件

    cp php.ini-production /usr/local/php/etc/php.ini

    在編譯時(shí)啟用了參數(shù):--enable-opcache ,查找 opcache.so模塊文件所在路徑。

    find /usr -name opcache.so
    
    ###輸出###
    /usr/local/php/ext/opcache/.libs/opcache.so
    /usr/local/php/lib/php/extensions/debug-non-zts-20190902/opcache.so
    /usr/local/php/modules/opcache.so

    編輯 php.ini 文件,在末尾添加如下內(nèi)容,開啟 OPcache 擴(kuò)展

    [opcache]
    zend_extension=/usr/local/php/modules/opcache.so
    opcache.enable=1
    opcache.enable_cli=1
    opcache.memory_consumption=128
    opcache.interned_strings_buffer=8
    opcache.max_accelerated_files=10000
    opcache.revalidate_freq=60
    opcache.file_cache=/tmp/opcache

    生成 php-fpm 配置文件并編輯。

    cd /usr/local/php/etc
    cp php-fpm.conf.default php-fpm.conf
    vim php-fpm.conf

    這里還是參考 OneInStack 集成環(huán)境包中的配置,清空 php-fpm.conf 內(nèi)容,修改如下:

    ;;;;;;;;;;;;;;;;;;;;;
    ; FPM Configuration ;
    ;;;;;;;;;;;;;;;;;;;;;
    
    ;;;;;;;;;;;;;;;;;;
    ; Global Options ;
    ;;;;;;;;;;;;;;;;;;
    
    [global]
    pid = run/php-fpm.pid
    error_log = log/php-fpm.log
    log_level = warning
    
    emergency_restart_threshold = 30
    emergency_restart_interval = 60s
    process_control_timeout = 5s
    daemonize = yes
    
    ;;;;;;;;;;;;;;;;;;;;
    ; Pool Definitions ;
    ;;;;;;;;;;;;;;;;;;;;
    
    [www]
    listen = /dev/shm/php-cgi.sock
    listen.backlog = -1
    listen.allowed_clients = 127.0.0.1
    listen.owner = www
    listen.group = www
    listen.mode = 0666
    user = www
    group = www
    
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 30
    pm.min_spare_servers = 20
    pm.max_spare_servers = 50
    pm.max_requests = 2048
    pm.process_idle_timeout = 10s
    request_terminate_timeout = 120
    request_slowlog_timeout = 0
    
    pm.status_path = /php-fpm_status
    slowlog = var/log/slow.log
    rlimit_files = 51200
    rlimit_core = 0
    
    catch_workers_output = yes
    ;env[HOSTNAME] = aliyun-wxy
    env[PATH] = /usr/local/bin:/usr/bin:/bin
    env[TMP] = /tmp
    env[TMPDIR] = /tmp
    env[TEMP] = /tmp

    本配置文件指定了 PHP-FPM 進(jìn)程通信方式:listen = /dev/shm/php-cgi.sock,和 Nginx 的配置保持了一致。

    生成 php-fpm 服務(wù)啟動(dòng)文件:(新的文件名不能有 - 字符)

    cp /usr/local/php/sapi/fpm/init.d.php-fpm /usr/bin/phpfpm
    chmod 740 /usr/bin/phpfpm

    測(cè)試啟動(dòng)php-fpm

    phpfpm start
    phpfpm restart
    phpfpm stop

    查看 php 已啟用的模塊:

    php -m

    查看 php 版本

    /usr/local/php/bin/php -v
    php -v

    8、安裝配置 Xdebug

    OPcache 擴(kuò)展是 PHP7.X 自帶的,只要在編譯時(shí)開啟,就可以配置使用。而 Xdebug 需要另外安裝。參考官網(wǎng):https://xdebug.org/docs/install

    yum install -y git
    git clone git://github.com/xdebug/xdebug.git
    cd xdebug
    phpize
    ./configure --enable-xdebug
    make && make install

    Xdebug編譯完成后顯示擴(kuò)展文件目錄、提示將擴(kuò)展添加到 php.ini文件

    編輯 php.ini ,在末尾增加 xdebug.so擴(kuò)展。

    vim /usr/local/php/etc/php.ini
    
    ####增加xdebug.so擴(kuò)展###
    zend_extension="/usr/local/php/lib/php/extensions/debug-non-zts-20190902/xdebug.so"

    重啟 php-fpm ,檢查 php 擴(kuò)展

    /usr/bin/php-fpm restart
    php -m


    六、LNMP 環(huán)境測(cè)試

    1、Nginx 和 PHP-FPM 的配合

    Nginx 和 PHP-FPM 的進(jìn)程間通信有兩種方式,一種是TCP,另一種是 UNIX Domain Socket。

    其中 TCP 方式是 IP 加端口,可以跨服務(wù)器。而 UNIX Domain Socket 不經(jīng)過(guò)網(wǎng)絡(luò),只能用于Nginx 跟 PHP-FPM 都在同一服務(wù)器的場(chǎng)景。不管用哪種方式在 Nginx 和 PHP-FPM 配置時(shí)要統(tǒng)一。

    方式1: TCP

    php-fpm.conf 文件配置: listen = 127.0.0.1:9000
    nginx.conf 文件配置: fastcgi_pass 127.0.0.1:9000;

    方式2: UNIX Domain Socket

    php-fpm.conf 文件配置: listen = /tmp/php-fpm.sock
    nginx.conf 文件配置: fastcgi_pass unix:/tmp/php-fpm.sock;

    其中 php-fpm.sock 是一個(gè)文件,由 php-fpm 生成,如果在 php-fpm.conf 配置文件中指定的用戶和組是 www ,確保 /tmp/php-fpm.sock 的權(quán)限是 www:www。

    2、測(cè)試 phpinfo 文件

    在瀏覽器中打開內(nèi)容為 phpinfo() 函數(shù)的 PHP 文件,如果 nginx 出現(xiàn)錯(cuò)誤,則說(shuō)明 php 無(wú)法配合 Nginx 運(yùn)行, 請(qǐng)查看 nginx 錯(cuò)誤日志。

    vim /data/wwwlogs/error_nginx.log

    phpinfo 顯示了編譯參數(shù)、 php.ini 的文件位置、已開啟OPcache 及 Xdebug 擴(kuò)展等信息

    3、phpMyAdmin

    下載 phpMyAdmin 并解壓到 /mnt/e/wwwroot/default 目錄,即 Nginx 配置文件中指定的默認(rèn)網(wǎng)站目錄。在瀏覽器中打開 http://localhost/phpMyAdmin/ ,如果能順利登錄數(shù)據(jù)庫(kù),則說(shuō)明不但 Nginx 和 php 沒(méi)有問(wèn)題,而且 Mysql 也沒(méi)有問(wèn)題。至此,Nginx php Mysql 已經(jīng)完全能配合運(yùn)行了。

    4、關(guān)于開機(jī)自動(dòng)啟動(dòng)服務(wù)

    通常在 Linux 中開機(jī)啟動(dòng)可以通過(guò)編輯/etc/rc.loacl 文件、在/etc/init.d/ 下添加啟動(dòng)腳本或者配置systemd 實(shí)現(xiàn),但是關(guān)于由于 WSL 架構(gòu)的特殊性,并且不支持 systemd ,這幾種方式在 WSL 子系統(tǒng)中無(wú)法使用。而在 Windows 中用 VBS 腳本結(jié)合 WSL 命令的實(shí)現(xiàn)開機(jī)啟動(dòng)的方式似乎存在不能使用 LocalHost 地址訪問(wèn)子系統(tǒng)的問(wèn)題。總之,暫時(shí)還是手動(dòng)啟動(dòng)吧。

    如前述,已安裝的 Nginx、PHP、MySql 啟動(dòng)及停止命令總結(jié)如下:

    nginx #啟動(dòng)nginx服務(wù)
    phpfpm start #啟動(dòng)php-fpm服務(wù)
    mysqld start #啟動(dòng)mysql
    
    
    nginx -s reload  #不停止服務(wù)重新載入配置文件
    nginx -s stop #停止服務(wù)
    
    phpfpm restart
    phpfpm stop
    
    mysqld restart #重啟mysql
    mysqld stop #停止mysql


    參考資料:

    Windows Terminal + WSL2 + CENTOS 配置Windows命令終端https://www.tinychen.com/200512-windowsterminal-wsl2-centos/https://github.com/CentOS/sig-cloud-instance-images

    LxRunOffline 使用教程 - WSL 自定義安裝、備份 https://p3terx.com/archives/manage-wsl-with-lxrunoffline.html

    https://chocolatey.org/docs/installationhttps://blog.csdn.net/hiqiming/article/details/105244147

    http://nginx.org/https://www.cnblogs.com/zhang-shijie/p/5294162.html

    https://www.cnblogs.com/pp-yang/p/12595387.html

    https://www.jianshu.com/p/64e12bea3d49

    Linux安裝mysql8.0(踩坑實(shí)況) https://blog.csdn.net/LittleSeedling/article/details/105851113

    https://www.cnblogs.com/cxyyh/p/12431424.htmlIndex of /php/

    centos8安裝php7.4 https://www.cnblogs.com/architectforest/p/12433541.html

    https://www.cnblogs.com/alliancehacker/p/12255445.html

    CGI

    CGI全稱是“公共網(wǎng)關(guān)接口”(Common Gateway Interface),HTTP服務(wù)器與你的或其它機(jī)器上的程序進(jìn)行“交談”的一種工具,其程序須運(yùn)行在網(wǎng)絡(luò)服務(wù)器上。

    CGI可以用任何一種語(yǔ)言編寫,只要這種語(yǔ)言具有標(biāo)準(zhǔn)輸入、輸出和環(huán)境變量。如php,perl,tcl等。

    FastCGI

    FastCGI像是一個(gè)常駐(long-live)型的CGI,它可以一直執(zhí)行著,只要激活后,不會(huì)每次都要花費(fèi)時(shí)間去fork一次(這是CGI最為人詬病的fork-and-execute 模式)。它還支持分布式的運(yùn)算,即 FastCGI 程序可以在網(wǎng)站服務(wù)器以外的主機(jī)上執(zhí)行并且接受來(lái)自其它網(wǎng)站服務(wù)器來(lái)的請(qǐng)求。

    FastCGI是語(yǔ)言無(wú)關(guān)的、可伸縮架構(gòu)的CGI開放擴(kuò)展,其主要行為是將CGI解釋器進(jìn)程保持在內(nèi)存中并因此獲得較高的性能。眾所周知,CGI解釋器的反復(fù)加載是CGI性能低下的主要原因,如果CGI解釋器保持在內(nèi)存中并接受FastCGI進(jìn)程管理器調(diào)度,則可以提供良好的性能、伸縮性、Fail- Over特性等等。

    FastCGI特點(diǎn)

    1. FastCGI具有語(yǔ)言無(wú)關(guān)性.
    2. FastCGI在進(jìn)程中的應(yīng)用程序,獨(dú)立于核心web服務(wù)器運(yùn)行,提供了一個(gè)比API更安全的環(huán)境。APIs把應(yīng)用程序的代碼與核心的web服務(wù)器鏈接在一起,這意味著在一個(gè)錯(cuò)誤的API的應(yīng)用程序可能會(huì)損壞其他應(yīng)用程序或核心服務(wù)器。 惡意的API的應(yīng)用程序代碼甚至可以竊取另一個(gè)應(yīng)用程序或核心服務(wù)器的密鑰。
    3. FastCGI技術(shù)目前支持語(yǔ)言有:C/C++、Java、Perl、Tcl、Python、SmallTalk、Ruby等。相關(guān)模塊在Apache, ISS, Lighttpd等流行的服務(wù)器上也是可用的。
    4. FastCGI的不依賴于任何Web服務(wù)器的內(nèi)部架構(gòu),因此即使服務(wù)器技術(shù)的變化, FastCGI依然穩(wěn)定不變。

    FastCGI的工作原理

    1. Web Server啟動(dòng)時(shí)載入FastCGI進(jìn)程管理器(IIS ISAPI或Apache Module)
    2. FastCGI進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)CGI解釋器進(jìn)程(可見(jiàn)多個(gè)php-cgi)并等待來(lái)自Web Server的連接。
    3. 當(dāng)客戶端請(qǐng)求到達(dá)Web Server時(shí),F(xiàn)astCGI進(jìn)程管理器選擇并連接到一個(gè)CGI解釋器。Web server將CGI環(huán)境變量和標(biāo)準(zhǔn)輸入發(fā)送到FastCGI子進(jìn)程php-cgi。
    4. FastCGI子進(jìn)程完成處理后將標(biāo)準(zhǔn)輸出和錯(cuò)誤信息從同一連接返回Web Server。當(dāng)FastCGI子進(jìn)程關(guān)閉連接時(shí),請(qǐng)求便告處理完成。FastCGI子進(jìn)程接著等待并處理來(lái)自FastCGI進(jìn)程管理器(運(yùn)行在Web Server中)的下一個(gè)連接。 在CGI模式中,php-cgi在此便退出了。

    在上述情況中,你可以想象CGI通常有多慢。每一個(gè)Web請(qǐng)求PHP都必須重新解析php.ini、重新載入全部擴(kuò)展并重初始化全部數(shù)據(jù)結(jié)構(gòu)。使用FastCGI,所有這些都只在進(jìn)程啟動(dòng)時(shí)發(fā)生一次。一個(gè)額外的好處是,持續(xù)數(shù)據(jù)庫(kù)連接(Persistent database connection)可以工作。

    FastCGI的不足

    因?yàn)槭嵌噙M(jìn)程,所以比CGI多線程消耗更多的服務(wù)器內(nèi)存,PHP-CGI解釋器每進(jìn)程消耗7至25兆內(nèi)存,將這個(gè)數(shù)字乘以50或100就是很大的內(nèi)存數(shù)。

    Nginx 0.8.46+PHP 5.2.14(FastCGI)服務(wù)器在3萬(wàn)并發(fā)連接下,開啟的10個(gè)Nginx進(jìn)程消耗150M內(nèi)存(15M*10=150M),開啟的64個(gè)php-cgi進(jìn)程消耗1280M內(nèi)存(20M*64=1280M),加上系統(tǒng)自身消耗的內(nèi)存,總共消耗不到2GB內(nèi)存。如果服務(wù)器內(nèi)存較小,完全可以只開啟25個(gè)php-cgi進(jìn)程,這樣php-cgi消耗的總內(nèi)存數(shù)才500M。

    上面的數(shù)據(jù)摘自Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建勝過(guò)Apache十倍的Web服務(wù)器(第6版)

    PHP-CGI

    PHP-CGI是PHP自帶的FastCGI管理器。

    PHP-CGI的不足:

    1. php-cgi變更php.ini配置后需重啟php-cgi才能讓新的php-ini生效,不可以平滑重啟。
    2. 直接殺死php-cgi進(jìn)程,php就不能運(yùn)行了。(PHP-FPM和Spawn-FCGI就沒(méi)有這個(gè)問(wèn)題,守護(hù)進(jìn)程會(huì)平滑從新生成新的子進(jìn)程。)

    PHP-FPM

    PHP-FPM是一個(gè)PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下載得到。

    PHP-FPM其實(shí)是PHP源代碼的一個(gè)補(bǔ)丁,旨在將FastCGI進(jìn)程管理整合進(jìn)PHP包中。必須將它patch到你的PHP源代碼中,在編譯安裝PHP后才可以使用。

    現(xiàn)在我們可以在最新的PHP 5.3.2的源碼樹里下載得到直接整合了PHP-FPM的分支,據(jù)說(shuō)下個(gè)版本會(huì)融合進(jìn)PHP的主分支去。相對(duì)Spawn-FCGI,PHP-FPM在CPU和內(nèi)存方面的控制都更勝一籌,而且前者很容易崩潰,必須用crontab進(jìn)行監(jiān)控,而PHP-FPM則沒(méi)有這種煩惱。

    PHP5.3.3已經(jīng)集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP進(jìn)程管理方式,可以有效控制內(nèi)存和進(jìn)程、可以平滑重載PHP配置,比spawn-fcgi具有更多有點(diǎn),所以被PHP官方收錄了。在./configure的時(shí)候帶 –enable-fpm參數(shù)即可開啟PHP-FPM。

    Spawn-FCGI

    Spawn-FCGI是一個(gè)通用的FastCGI管理服務(wù)器,它是lighttpd中的一部份,很多人都用Lighttpd的Spawn-FCGI進(jìn)行FastCGI模式下的管理工作,不過(guò)有不少缺點(diǎn)。而PHP-FPM的出現(xiàn)多少緩解了一些問(wèn)題,但PHP-FPM有個(gè)缺點(diǎn)就是要重新編譯,這對(duì)于一些已經(jīng)運(yùn)行的環(huán)境可能有不小的風(fēng)險(xiǎn)(refer),在php 5.3.3中可以直接使用PHP-FPM了。

    Spawn-FCGI目前已經(jīng)獨(dú)成為一個(gè)項(xiàng)目,更加穩(wěn)定一些,也給很多Web 站點(diǎn)的配置帶來(lái)便利。已經(jīng)有不少站點(diǎn)將它與nginx搭配來(lái)解決動(dòng)態(tài)網(wǎng)頁(yè)。

    注:最新的Spawn-FCGI可以到lighttpd.net網(wǎng)站搜索“Spawn-FCGI”找到它的最新版本發(fā)布地址。

    PHP-FPM與spawn-CGI對(duì)比

    PHP-FPM的使用非常方便,配置都是在PHP-FPM.ini的文件內(nèi),而啟動(dòng)、重啟都可以從php/sbin/PHP-FPM中進(jìn)行。更方便的是修改php.ini后可以直接使用PHP-FPM reload進(jìn)行加載,無(wú)需殺掉進(jìn)程就可以完成php.ini的修改加載

    結(jié)果顯示使用PHP-FPM可以使php有不小的性能提升。PHP-FPM控制的進(jìn)程cpu回收的速度比較慢,內(nèi)存分配的很均勻。

    Spawn-FCGI控制的進(jìn)程CPU下降的很快,而內(nèi)存分配的比較不均勻。有很多進(jìn)程似乎未分配到,而另外一些卻占用很高??赡苁怯捎谶M(jìn)程任務(wù)分配的不均勻?qū)е碌?。而這也導(dǎo)致了總體響應(yīng)速度的下降。而PHP-FPM合理的分配,導(dǎo)致總體響應(yīng)的提到以及任務(wù)的平均。

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有