您好,登錄后才能下訂單哦!
服務(wù)器升級至centos8的網(wǎng)站配置以及運(yùn)行php與mysql的操作方法,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
linux centos8 安裝php7 nginx1.4 mysql8 ,運(yùn)行php網(wǎng)站,各個模塊從零開始配置
目前國內(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 ,我是選擇重新來過一遍。
安裝nginx
yum install nginx php
啟動nginx
systemctl start nginx.service
查看nginx狀態(tài)
systemctl status nginx
設(shè)置nginx開機(jī)啟動
systemctl enable nginx.service
安裝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
查看是否安裝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
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)如下
這里把本站配置貼一下
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;
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; }
防止別把域名解析到我們的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; }
################################ 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;
給需要讀取的文件,設(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錯誤。
網(wǎng)上搜索,一般都是說關(guān)閉selinux,但是,個人不建議關(guān)閉
chcon -v -R --type=httpd_sys_content_t /data/www/
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)行了
添加一個名為 andyZhou的用戶
useradd andyZhou
修改密碼
passwd chenjiafa
給用戶root權(quán)限
usermod -g root chenjiafa
網(wǎng)站平時用這個新增的用戶登錄,需要root權(quán)限,就su 切換
具體查看《linux添加用戶,修改用戶密碼,修改用戶權(quán)限,設(shè)置root用戶操作》
修改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)行。
PermitRootLogin no
AllowUsers andyzhou
重啟ssh服務(wù)
systemctl restart sshd
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
我的個人博客是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
下面幾行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;
阿里云,導(dǎo)出zone文件,然后clouefare 導(dǎo)出模板,然后復(fù)制粘貼即可
網(wǎng)上教程很多,比如《如何用CDN加速你的網(wǎng)站 – Cloudflare免費(fèi)版詳細(xì)使用教程》
這里提下需要注意的幾個點(diǎn)
如果打開 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)知識。
免責(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)容。