您好,登錄后才能下訂單哦!
服務器升級至centos8的網站配置以及運行php與mysql的操作方法,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
linux centos8 安裝php7 nginx1.4 mysql8 ,運行php網站,各個模塊從零開始配置
目前國內各大云服務器的默認centos 系統版本還是7,目前沒有centos配套支持,國外云服務器廠商默認就是8,如vultr
centos8的性能提升,官網介紹的更清楚
安裝centos8 min版本,在我的系統上查看,發現nginx默認是1.14
開發語言版本
Python 3.6
PHP 7.2
Ruby 2.5
Node.js 10
java::OpenJDK 11
數據庫版本
MySQL 8.0
MariaDB 10.3
PostgreSQL 10 and PostgreSQL 9.6
Redis 5.0
而我的服務器msyql是msyql5.6 php是php5.6 ,我是選擇重新來過一遍。
安裝nginx
yum install nginx php
啟動nginx
systemctl start nginx.service
查看nginx狀態
systemctl status nginx
設置nginx開機啟動
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
設置php開機啟動
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 服務
systemctl start mysqld.service
nginx基本配置,這里就不在多說了,查看《Nginx葵花寶典—草根站長配置Nginx運維百科全書》
像我這種小水管網站,需要注意的就是,nginx 限流
大致配置如下
# 1M能存儲16384個狀態,rete的值必須為整數, # 如果限制兩秒鐘一個請求,可以設置成30r/m ,其中$binary_remote_addr有時需要根據自己已有的log_format變量配置進行替換 limit_conn_zone $binary_remote_addr zone=perip:1m; limit_conn_zone $server_name zone=perserver:1m; #limit_req zone=perip burst=10; # 限制客戶端并發連接數量為20, allow only one connection per an IP address at a time(每次). ; #是限制每個IP只能發起20連接 (addr 要跟 limit_conn_zone 的變量對應) # 表明以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參數超詳細解析》
nginx配置目錄結構如下
這里把本站配置貼一下
nginx配置文件為HOCON,intellij編輯的,配置查看:《HOCON:nginx配置文件后綴conf是什么格式類型文件夾?intellij如何編輯》,其他編輯器應該也有相應插件。有個插件認識代碼,編輯器起來應該舒服些。
# 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 關鍵配置,允許單個線程處理多個客戶端請求。 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 單個進程可服務的客戶端數量,(最大值客戶端數 = 單進程連接數 * 進程數 ) # 最大客戶端數同時也受操作系統 socket 連接數的影響(最大 64K ) worker_connections 51200; #用來配置nginx服務器是否可能多地接收客戶端的連接請求,默認值為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 存儲設備,或者直接關閉日志。 # 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壓縮 相關配置 ####################### 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; # 請求設置優化配置 ####################### tcp_nodelay on; # sendfile() 不但能減少切換次數而且還能減少拷貝次數。 sendfile on; # 使緩沖區中的數據立即發送出去 tcp_nopush on; # 指定每個 TCP 連接最多可以保持多長時間。Nginx 的默認值是 75 秒,有些瀏覽器最多只保持 60 秒,所以可以設定為 60 秒 # 配置連接 keep-alive 超時時間,服務器將在超時之后關閉相應的連接 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 連接上可以發送的請求數量,在測試環境中,需要配置個比較大的值。 keepalive_requests 10000; # Timeout for keep-alive connections. Server will close connections after this time. # 配置連接 keep-alive 超時時間,服務器將在超時之后關閉相應的連接。 # 客戶端向服務端發送一個完整的 request header 的超時時間。如果客戶端在指定時間內沒有發送一個完整的 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. # 指定客戶端與服務端建立連接后發送 request body 的超時時間。如果客戶端在指定時間內沒有發送任何內容,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. # 客戶端數據讀超時配置,客戶端停止讀取數據,超時時間后斷開相應連接,默認是 60 秒。 服務端向客戶端傳輸數據的超時時間 send_timeout 30; server_names_hash_bucket_size 128; #客戶端請求頭部的緩沖區大小,這個可以根據你的系統分頁大小來設置,一般一個請求頭的大小不會超過1k,不過由于一般系統分頁都要大于1k,所以這里設置為分頁大小 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內存, # 以$binary_remote_addr 為key,限制平均每秒的請求為20個, # 1M能存儲16384個狀態,rete的值必須為整數, # 如果限制兩秒鐘一個請求,可以設置成30r/m ,其中$binary_remote_addr有時需要根據自己已有的log_format變量配置進行替換 limit_conn_zone $binary_remote_addr zone=perip:1m; limit_conn_zone $server_name zone=perserver:1m; #limit_req zone=perip burst=10; # 限制客戶端并發連接數量為20, allow only one connection per an IP address at a time(每次). ; #是限制每個IP只能發起20連接 (addr 要跟 limit_conn_zone 的變量對應) # 表明以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服務器,造成我們的ip被墻
# 關閉nginx空主機頭 防止nginx空主機頭及惡意域名指向 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 相關配置 ####################### # 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 相關配置 ####################### 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;
給需要讀取的文件,設置644,給需要指向的文件,如php文章,設置755,給需要讀寫的文件夾,如html uploadfile 文件夾設置777
具體權限設置,可以參看我之前寫的文章《理清用戶組概念及文件權限—搞懂網站權限設置》
設置了權限,由于centos8 默認開啟selinux ,網站還是不能訪問。一般報403錯誤。
網上搜索,一般都是說關閉selinux,但是,個人不建議關閉
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),訪問報403 404,所有文件用戶組為root 權限為755》
設置完了,網站就可以運行了
添加一個名為 andyZhou的用戶
useradd andyZhou
修改密碼
passwd chenjiafa
給用戶root權限
usermod -g root chenjiafa
網站平時用這個新增的用戶登錄,需要root權限,就su 切換
具體查看《linux添加用戶,修改用戶密碼,修改用戶權限,設置root用戶操作》
修改ssh配置文件
vim /etc/ssh/sshd_config
找到“#Port 22”,這一行直接鍵入“yyp”復制該行到下一行,然后把兩行的“#”號即注釋去掉,修改成:
#Port 22 Port 10086
大家修改端口時候最好挑10000~65535之間的端口號,10000以下容易被系統或一些特殊軟件占用,或是以后新應用準備占用該端口的時候,卻被你先占用了,導致軟件無法運行。
PermitRootLogin no
AllowUsers andyzhou
重啟ssh服務
systemctl restart sshd
linux 防火墻關閉某個端口
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小內存,mysql跑起來,經常崩潰。
free -m 查看內存,根據情況設置內存,一般虛擬機內存為物理內存的2倍。那么設置2g虛擬內存,命令如下
dd if=/dev/zero of=/opt/swap bs=1024 count=2048000 chmod 600 /opt/swap mkswap /opt/swap swapon /opt/swap
下面幾行sql,應該滿足您的需求
-- 創建用戶,以后用這個用戶登錄
CREATE USER 'userName' @ '訪問限制' IDENTIFIED BY 'password';
-- 授權用戶 ,給與數據的權限
GRANT ALL PRIVILEGES ON 數據庫名稱.表名稱 TO 'userName'@'訪問限制';
---修改用戶密碼(修改root密碼)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPassword';
-- 刷新用戶權限
FLUSH PRIVILEGES;
阿里云,導出zone文件,然后clouefare 導出模板,然后復制粘貼即可
網上教程很多,比如《如何用CDN加速你的網站 – Cloudflare免費版詳細使用教程》
這里提下需要注意的幾個點
如果打開 Under Attack Mode ,總會出現一個5m 的啟動頁,而且現在免費用戶,不能在customer page 里面配置
第二是,cloudflare Rocket Loader,國內被墻了,我的異步執行,插入的js 會被這個js阻塞。國內用戶不管怎么樣,還是關閉好。
關于服務器升級至centos8的網站配置以及運行php與mysql的操作方法問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。