這篇文章給大家分享的是centos8安裝配置nginx的詳細(xì)安裝教程,相信大部分人都還不知道怎么安裝,為了讓大家學(xué)會(huì),給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。
創(chuàng)新互聯(lián)建站長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為歷城企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作,歷城網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。目前國內(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
啟動(dòng)nginx
systemctl start nginx.service
查看nginx狀態(tài)
systemctl status nginx
設(shè)置nginx開機(jī)啟動(dòng)
systemctl enable nginx.service
安裝php
yum install php
安裝php拓展庫
yum install php-json php-xml php-mysqlnd php-mbstring php-common php-gd
啟動(dòng)php
systemctl start php-fpm
查看php版本
php -V
設(shè)置php開機(jī)啟動(dòng)
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
啟動(dòng) mysql 服務(wù)
systemctl start mysqld.service
像我這種小水管網(wǎng)站,需要注意的就是,nginx 限流
大致配置如下
# 1M能存儲(chǔ)16384個(gè)狀態(tài),rete的值必須為整數(shù), # 如果限制兩秒鐘一個(gè)請(qǐng)求,可以設(shè)置成30r/m ,其中$binary_remote_addr有時(shí)需要根據(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(每次). ; #是限制每個(gè)IP只能發(fā)起20連接 (addr 要跟 limit_conn_zone 的變量對(duì)應(yīng)) # 表明以ip為key,來限制每個(gè)ip訪問lmit.html文件時(shí)候,最多只能有一個(gè)在線,否則其余的都要返回不可用。 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)插件。有個(gè)插件認(rèn)識(shí)代碼,編輯器起來應(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)鍵配置,允許單個(gè)線程處理多個(gè)客戶端請(qǐng)求。 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) # 配置單個(gè) Nginx 單個(gè)進(jìn)程可服務(wù)的客戶端數(shù)量,(大值客戶端數(shù) = 單進(jìn)程連接數(shù) * 進(jìn)程數(shù) ) # 大客戶端數(shù)同時(shí)也受操作系統(tǒng) socket 連接數(shù)的影響(大 64K ) worker_connections 51200; #用來配置nginx服務(wù)器是否可能多地接收客戶端的連接請(qǐng)求,默認(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 存儲(chǔ)設(shè)備,或者直接關(guān)閉日志。 # access_log /var/log/nginx/access.log main buffer=16k; access_log off; # only log critical errors 只記錄 critical 級(jí)別的錯(cuò)誤日志 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 請(qǐng)求 add_header 'Access-Control-Allow-Methods' 'GET, POST'; #隱藏掉nginx的版本號(hào) 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; # 請(qǐng)求設(shè)置優(yōu)化配置 ####################### tcp_nodelay on; # sendfile() 不但能減少切換次數(shù)而且還能減少拷貝次數(shù)。 sendfile on; # 使緩沖區(qū)中的數(shù)據(jù)立即發(fā)送出去 tcp_nopush on; # 指定每個(gè) TCP 連接最多可以保持多長時(shí)間。Nginx 的默認(rèn)值是 75 秒,有些瀏覽器最多只保持 60 秒,所以可以設(shè)定為 60 秒 # 配置連接 keep-alive 超時(shí)時(shí)間,服務(wù)器將在超時(shí)之后關(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. # 單個(gè)客戶端在 keep-alive 連接上可以發(fā)送的請(qǐng)求數(shù)量,在測(cè)試環(huán)境中,需要配置個(gè)比較大的值。 keepalive_requests 10000; # Timeout for keep-alive connections. Server will close connections after this time. # 配置連接 keep-alive 超時(shí)時(shí)間,服務(wù)器將在超時(shí)之后關(guān)閉相應(yīng)的連接。 # 客戶端向服務(wù)端發(fā)送一個(gè)完整的 request header 的超時(shí)時(shí)間。如果客戶端在指定時(shí)間內(nèi)沒有發(fā)送一個(gè)完整的 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 的超時(shí)時(shí)間。如果客戶端在指定時(shí)間內(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í)配置,客戶端停止讀取數(shù)據(jù),超時(shí)時(shí)間后斷開相應(yīng)連接,默認(rèn)是 60 秒。 服務(wù)端向客戶端傳輸數(shù)據(jù)的超時(shí)時(shí)間 send_timeout 30; server_names_hash_bucket_size 128; #客戶端請(qǐng)求頭部的緩沖區(qū)大小,這個(gè)可以根據(jù)你的系統(tǒng)分頁大小來設(shè)置,一般一個(gè)請(qǐng)求頭的大小不會(huì)超過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; # 定義一個(gè)名為allips的limit_req_zone用來存儲(chǔ)session,大小是10M內(nèi)存, # 以$binary_remote_addr 為key,限制平均每秒的請(qǐng)求為20個(gè), # 1M能存儲(chǔ)16384個(gè)狀態(tài),rete的值必須為整數(shù), # 如果限制兩秒鐘一個(gè)請(qǐng)求,可以設(shè)置成30r/m ,其中$binary_remote_addr有時(shí)需要根據(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(每次). ; #是限制每個(gè)IP只能發(fā)起20連接 (addr 要跟 limit_conn_zone 的變量對(duì)應(yīng)) # 表明以ip為key,來限制每個(gè)ip訪問lmit.html文件時(shí)候,最多只能有一個(gè)在線,否則其余的都要返回不可用。 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錯(cuò)誤。
網(wǎng)上搜索,一般都是說關(guān)閉selinux,但是,個(gè)人不建議關(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)行了
添加一個(gè)名為 andyZhou的用戶
useradd andyZhou
修改密碼
passwd chenjiafa
給用戶root權(quán)限
usermod -g root chenjiafa
網(wǎng)站平時(shí)用這個(gè)新增的用戶登錄,需要root權(quán)限,就su 切換
具體查看《linux添加用戶,修改用戶密碼,修改用戶權(quán)限,設(shè)置root用戶操作》
修改ssh配置文件
vim /etc/ssh/sshd_config
找到“#Port 22”,這一行直接鍵入“yyp”復(fù)制該行到下一行,然后把兩行的“#”號(hào)即注釋去掉,修改成:
#Port 22 Port 10086
大家修改端口時(shí)候最好挑10000~65535之間的端口號(hào),10000以下容易被系統(tǒng)或一些特殊軟件占用,或是以后新應(yīng)用準(zhǔn)備占用該端口的時(shí)候,卻被你先占用了,導(dǎo)致軟件無法運(yùn)行。
PermitRootLogin no
AllowUsers andyzhou
重啟ssh服務(wù)
systemctl restart sshd
linux 防火墻關(guān)閉某個(gè)端口
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
linux 防火墻打開某個(gè)端口
firewall-cmd --permanent --add-port=10086/tcp
重新加載防火墻策略:
firewall-cmd --reload
查看防火墻端口開放情況
firewall-cmd --list-ports
我的個(gè)人博客是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)建用戶,以后用這個(gè)用戶登錄
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;
關(guān)于centos8安裝配置nginx的教程就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。