溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

服務(wù)器升級至centos8的網(wǎng)站配置以及運(yùn)行php與mysql的操作方法

發(fā)布時間:2021-09-26 16:04:47 來源:億速云 閱讀:156 作者:柒染 欄目:系統(tǒng)運(yùn)維

服務(wù)器升級至centos8的網(wǎng)站配置以及運(yùn)行php與mysql的操作方法,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

linux centos8 安裝php7 nginx1.4 mysql8 ,運(yùn)行php網(wǎng)站,各個模塊從零開始配置

CentOS7與centOS8的抉擇

目前國內(nèi)各大云服務(wù)器的默認(rèn)centos 系統(tǒng)版本還是7,目前沒有centos配套支持,國外云服務(wù)器廠商默認(rèn)就是8,如vultr

centos8的性能提升,官網(wǎng)介紹的更清楚

安裝centos8 min版本,在我的系統(tǒng)上查看,發(fā)現(xiàn)nginx默認(rèn)是1.14

開發(fā)語言版本

  • Python 3.6

  • PHP 7.2

  • Ruby 2.5

  • Node.js 10

  • java::OpenJDK 11


數(shù)據(jù)庫版本

  • MySQL 8.0

  • MariaDB 10.3

  • PostgreSQL 10 and PostgreSQL 9.6

  • Redis 5.0

而我的服務(wù)器msyql是msyql5.6 php是php5.6 ,我是選擇重新來過一遍。

centos8 從零開始安裝nginx mysql php 系統(tǒng)默認(rèn)版本搭建php網(wǎng)站

centos8 安裝nginx

  • 安裝nginx

    yum install nginx php 

  • 啟動nginx

    systemctl start nginx.service

  • 查看nginx狀態(tài)

    systemctl status nginx

  • 設(shè)置nginx開機(jī)啟動

    systemctl enable nginx.service

centos8 安裝php

  • 安裝php

  • yum install  php

  • 安裝php拓展庫 

  • yum install  php-json php-xml  php-mysqlnd php-mbstring  php-common  php-gd

  • 啟動php

  • systemctl start php-fpm

  • 查看php版本

  • php -V

  • 設(shè)置php開機(jī)啟動

  • systemctl enable php-fpm

centos8安裝mysql

  • 查看是否安裝MySQL

    rpm -qa | grep mysql

  • 下載安裝包文件

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

  • 安裝mysql-community-release-el7-5.noarch.rpm包

    rpm -ivh mysql-community-release-el7-5.noarch.rpm

  • 查看可用安裝包

    yum repolist all | grep mysql

  • 安裝mysql

    yum install mysql-server

  • 檢查mysql是否安裝成功。

    rpm -qa | grep mysql

  • 啟動 mysql 服務(wù) 

    systemctl start mysqld.service

網(wǎng)站nginx selinux 文件權(quán)限配置

網(wǎng)站nginx配置

nginx基本配置,這里就不在多說了,查看《Nginx葵花寶典—草根站長配置Nginx運(yùn)維百科全書》

像我這種小水管網(wǎng)站,需要注意的就是,nginx 限流

大致配置如下

    # 1M能存儲16384個狀態(tài),rete的值必須為整數(shù),
    # 如果限制兩秒鐘一個請求,可以設(shè)置成30r/m ,其中$binary_remote_addr有時需要根據(jù)自己已有的log_format變量配置進(jìn)行替換
    limit_conn_zone $binary_remote_addr zone=perip:1m;
    limit_conn_zone $server_name zone=perserver:1m;
    #limit_req   zone=perip burst=10;
     # 限制客戶端并發(fā)連接數(shù)量為20, allow only one connection per an IP address at a time(每次). ;
    #是限制每個IP只能發(fā)起20連接 (addr 要跟 limit_conn_zone 的變量對應(yīng))
    # 表明以ip為key,來限制每個ip訪問lmit.html文件時候,最多只能有一個在線,否則其余的都要返回不可用。
    limit_conn perip 14;
    limit_conn perserver 10;
    limit_req_zone $binary_remote_addr zone=per_ip:1m rate=400r/s;
    limit_req_zone $server_name zone=per_server:10m rate=600r/s;
    limit_req zone=per_ip burst=300 nodelay;
    limit_req zone=per_server burst=500;

具體,推薦閱讀《Nginx下limit_req模塊burst參數(shù)超詳細(xì)解析》

nginx配置目錄結(jié)構(gòu)如下

服務(wù)器升級至centos8的網(wǎng)站配置以及運(yùn)行php與mysql的操作方法

這里把本站配置貼一下

nginx基本配置

nginx配置文件為HOCON,intellij編輯的,配置查看:《HOCON:nginx配置文件后綴conf是什么格式類型文件夾?intellij如何編輯》,其他編輯器應(yīng)該也有相應(yīng)插件。有個插件認(rèn)識代碼,編輯器起來應(yīng)該舒服些。

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /etc/nginx/modules/*.conf;

events {
    # essential for linux, optmized to serve many clients with each thread
      # Linux 關(guān)鍵配置,允許單個線程處理多個客戶端請求。
      use epoll;
      # Determines how many clients will be served by each worker process.
      # (Max clients = worker_connections * worker_processes)
      # "Max clients" is also limited by the number of socket connections available on the system (~64k)
      # 配置單個 Nginx 單個進(jìn)程可服務(wù)的客戶端數(shù)量,(最大值客戶端數(shù) = 單進(jìn)程連接數(shù) * 進(jìn)程數(shù) )
      # 最大客戶端數(shù)同時也受操作系統(tǒng) socket 連接數(shù)的影響(最大 64K )
      worker_connections 51200;

      #用來配置nginx服務(wù)器是否可能多地接收客戶端的連接請求,默認(rèn)值為off
      multi_accept on;
}
# http config
include /etc/nginx/http/default.conf;
#include /etc/nginx/http/http_web.conf;
nginx http配置
http {
################################ logs  #######################
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    # Buffer log writes to speed up IO, or disable them altogether
    # 將日志寫入高速 IO 存儲設(shè)備,或者直接關(guān)閉日志。
    # access_log /var/log/nginx/access.log main buffer=16k;
    access_log off;
    # only log critical errors 只記錄 critical 級別的錯誤日志
    error_log /var/log/nginx/error.log crit;

################################  file  #######################
    # types
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    charset UTF-8;
    # 只允許get post 請求
    add_header 'Access-Control-Allow-Methods' 'GET, POST';
    #隱藏掉nginx的版本號
    server_tokens off;
################################ 開啟gzip壓縮 相關(guān)配置 #######################
    gzip on;
    gzip_disable   "MSIE [1-6]\.";
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 4;
    gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
    gzip_vary on;
    gzip_proxied   expired no-cache no-store private auth;

    #  請求設(shè)置優(yōu)化配置 #######################
    tcp_nodelay         on;
    # sendfile() 不但能減少切換次數(shù)而且還能減少拷貝次數(shù)。
    sendfile            on;
    # 使緩沖區(qū)中的數(shù)據(jù)立即發(fā)送出去
    tcp_nopush          on;
    # 指定每個 TCP 連接最多可以保持多長時間。Nginx 的默認(rèn)值是 75 秒,有些瀏覽器最多只保持 60 秒,所以可以設(shè)定為 60 秒
    # 配置連接 keep-alive 超時時間,服務(wù)器將在超時之后關(guān)閉相應(yīng)的連接
    keepalive_timeout   65;
    types_hash_max_size 2048;
    client_max_body_size 2m;
    # Number of requests a client can make over the keep-alive connection. This is set high for testing.
    # 單個客戶端在 keep-alive 連接上可以發(fā)送的請求數(shù)量,在測試環(huán)境中,需要配置個比較大的值。
    keepalive_requests  10000;
    # Timeout for keep-alive connections. Server will close connections after this time.
    # 配置連接 keep-alive 超時時間,服務(wù)器將在超時之后關(guān)閉相應(yīng)的連接。
    # 客戶端向服務(wù)端發(fā)送一個完整的 request header 的超時時間。如果客戶端在指定時間內(nèi)沒有發(fā)送一個完整的 request header,Nginx 返回 HTTP 408(Request Timed Out
    client_header_timeout 40s;
    # send the client a "request timed out" if the body is not loaded by this time. Default 60.
    # 指定客戶端與服務(wù)端建立連接后發(fā)送 request body 的超時時間。如果客戶端在指定時間內(nèi)沒有發(fā)送任何內(nèi)容,Nginx 返回 HTTP 408(Request Timed Out)
    client_body_timeout 40s;
    reset_timedout_connection on;
    # If the client stops reading data, free up the stale client connection after this much time. Default 60.
    # 客戶端數(shù)據(jù)讀超時配置,客戶端停止讀取數(shù)據(jù),超時時間后斷開相應(yīng)連接,默認(rèn)是 60 秒。 服務(wù)端向客戶端傳輸數(shù)據(jù)的超時時間
    send_timeout 30;
    server_names_hash_bucket_size 128;
    #客戶端請求頭部的緩沖區(qū)大小,這個可以根據(jù)你的系統(tǒng)分頁大小來設(shè)置,一般一個請求頭的大小不會超過1k,不過由于一般系統(tǒng)分頁都要大于1k,所以這里設(shè)置為分頁大小
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;

################################ 限速配置 ################################
    limit_conn_log_level error;
    limit_conn_status 503;
    #limit_conn_zone $binary_remote_addr zone=one:1m;
    #limit_conn_zone $server_name zone=perserver:1m;
    # 定義一個名為allips的limit_req_zone用來存儲session,大小是10M內(nèi)存,
    # 以$binary_remote_addr 為key,限制平均每秒的請求為20個,
    # 1M能存儲16384個狀態(tài),rete的值必須為整數(shù),
    # 如果限制兩秒鐘一個請求,可以設(shè)置成30r/m ,其中$binary_remote_addr有時需要根據(jù)自己已有的log_format變量配置進(jìn)行替換
    limit_conn_zone $binary_remote_addr zone=perip:1m;
    limit_conn_zone $server_name zone=perserver:1m;

    #limit_req   zone=perip burst=10;
     # 限制客戶端并發(fā)連接數(shù)量為20, allow only one connection per an IP address at a time(每次). ;
    #是限制每個IP只能發(fā)起20連接 (addr 要跟 limit_conn_zone 的變量對應(yīng))
    # 表明以ip為key,來限制每個ip訪問lmit.html文件時候,最多只能有一個在線,否則其余的都要返回不可用。
    limit_conn perip 14;
    limit_conn perserver 10;
    limit_req_zone $binary_remote_addr zone=per_ip:1m rate=400r/s;
    limit_req_zone $server_name zone=per_server:10m rate=600r/s;
    limit_req zone=per_ip burst=300 nodelay;
    limit_req zone=per_server burst=500;
################################ web server #######################
    include  /etc/nginx/http/http_web.conf;

}
nginx空域名設(shè)置,禁止ip訪問

防止別把域名解析到我們的ip服務(wù)器,造成我們的ip被墻

# 關(guān)閉nginx空主機(jī)頭 防止nginx空主機(jī)頭及惡意域名指向
server {
    listen *:80 default;
    server_name _;
    #index index.html index.php index.htm;
    #root  /data/wwwroot/zhoulujun;
    #include /etc/nginx/conf.d/php.conf;
    # rewrite ^(.*) //zhoulujun.cn permanent;
    return 301 https://www.zhoulujun.cn$request_uri;
}
nginx php支持配置
################################  php 相關(guān)配置 #######################
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # include /etc/nginx/conf.d/php-fpm.conf
    upstream php-fpm {
        server unix:/run/php-fpm/www.sock;
    }
################################  php fastcgi 相關(guān)配置 #######################
    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 256k;

################################ host ################################
    include  /etc/nginx/site/default.conf;

linux服務(wù)器 web目錄權(quán)限設(shè)置

給需要讀取的文件,設(shè)置644,給需要指向的文件,如php文章,設(shè)置755,給需要讀寫的文件夾,如html uploadfile 文件夾設(shè)置777

具體權(quán)限設(shè)置,可以參看我之前寫的文章《理清用戶組概念及文件權(quán)限—搞懂網(wǎng)站權(quán)限設(shè)置》

設(shè)置了權(quán)限,由于centos8 默認(rèn)開啟selinux ,網(wǎng)站還是不能訪問。一般報(bào)403錯誤。

centos8 網(wǎng)站服務(wù)器 selinux設(shè)置

網(wǎng)上搜索,一般都是說關(guān)閉selinux,但是,個人不建議關(guān)閉

設(shè)置selinux給web目錄讀權(quán)限

 chcon -v -R --type=httpd_sys_content_t /data/www/

設(shè)置selinux給web目錄寫權(quán)限

chcon -R -t httpd_sys_rw_content_t /data/www/

具體參看《centos8 nginx server root指向自定義目錄如(/data/www),訪問報(bào)403 404,所有文件用戶組為root 權(quán)限為755》

設(shè)置完了,網(wǎng)站就可以運(yùn)行了

linux網(wǎng)站基本安全設(shè)置

linux添加用戶,修改用戶密碼,修改用戶權(quán)限,設(shè)置root操作

  • 添加一個名為 andyZhou的用戶

    useradd andyZhou

  • 修改密碼

    passwd chenjiafa

  • 給用戶root權(quán)限

    usermod -g root chenjiafa

網(wǎng)站平時用這個新增的用戶登錄,需要root權(quán)限,就su 切換

具體查看《linux添加用戶,修改用戶密碼,修改用戶權(quán)限,設(shè)置root用戶操作》

禁止root ssh登錄 修改默認(rèn)端口

修改ssh配置文件

修改ssh登錄端口

vim /etc/ssh/sshd_config

找到“#Port 22”,這一行直接鍵入“yyp”復(fù)制該行到下一行,然后把兩行的“#”號即注釋去掉,修改成:

#Port 22
Port 10086

大家修改端口時候最好挑10000~65535之間的端口號,10000以下容易被系統(tǒng)或一些特殊軟件占用,或是以后新應(yīng)用準(zhǔn)備占用該端口的時候,卻被你先占用了,導(dǎo)致軟件無法運(yùn)行

禁止root ssh登錄

PermitRootLogin no

增加ssh 普通登錄用戶

AllowUsers andyzhou

重啟ssh服務(wù)

systemctl restart sshd

linux防火墻端口設(shè)置

  • linux 防火墻關(guān)閉某個端口

    firewall-cmd --permanent --zone=public --remove-port=8080/tcp

  • linux 防火墻打開某個端口

    firewall-cmd --permanent --add-port=10086/tcp

  • 重新加載防火墻策略:

    firewall-cmd --reload

  • 查看防火墻端口開放情況

     firewall-cmd --list-ports

linux虛擬內(nèi)存設(shè)置

我的個人博客是1g小內(nèi)存,mysql跑起來,經(jīng)常崩潰。

free -m  查看內(nèi)存,根據(jù)情況設(shè)置內(nèi)存,一般虛擬機(jī)內(nèi)存為物理內(nèi)存的2倍。那么設(shè)置2g虛擬內(nèi)存,命令如下

dd if=/dev/zero of=/opt/swap bs=1024 count=2048000
chmod 600 /opt/swap
mkswap /opt/swap
swapon /opt/swap

mysql創(chuàng)建新用戶并授權(quán),禁止root登錄

下面幾行sql,應(yīng)該滿足您的需求

-- 創(chuàng)建用戶,以后用這個用戶登錄

CREATE USER 'userName' @ '訪問限制' IDENTIFIED BY 'password';

-- 授權(quán)用戶 ,給與數(shù)據(jù)的權(quán)限

GRANT ALL PRIVILEGES ON 數(shù)據(jù)庫名稱.表名稱 TO 'userName'@'訪問限制';

---修改用戶密碼(修改root密碼)

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPassword';

-- 刷新用戶權(quán)限

FLUSH PRIVILEGES;

網(wǎng)站cloudflare加速

阿里云,導(dǎo)出zone文件,然后clouefare 導(dǎo)出模板,然后復(fù)制粘貼即可

網(wǎng)上教程很多,比如《如何用CDN加速你的網(wǎng)站 – Cloudflare免費(fèi)版詳細(xì)使用教程》

這里提下需要注意的幾個點(diǎn)

服務(wù)器升級至centos8的網(wǎng)站配置以及運(yùn)行php與mysql的操作方法

如果打開 Under Attack Mode ,總會出現(xiàn)一個5m 的啟動頁,而且現(xiàn)在免費(fèi)用戶,不能在customer page 里面配置

第二是,cloudflare Rocket Loader,國內(nèi)被墻了,我的異步執(zhí)行,插入的js 會被這個js阻塞。國內(nèi)用戶不管怎么樣,還是關(guān)閉好。

關(guān)于服務(wù)器升級至centos8的網(wǎng)站配置以及運(yùn)行php與mysql的操作方法問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI