服務(wù)器配置
重啟 Linux 服務(wù)器 reboot
安裝方式 (學(xué)習(xí)對比)
- OpenJDK 使用 yum 安裝
- Oracle JDK 使用 rpm 安裝
- tomcat tar 解壓
- mysql tar 解壓
- nginx tar 解壓
自動(dòng)啟動(dòng) (學(xué)習(xí)對比)
- tomcat 在
/etc/systemd/system下創(chuàng)建mysql.service, 作為服務(wù), 使用 systemd 自啟動(dòng) - mysql 編輯
/etc/rc.d/rc.local - nginx 編輯
/etc/rc.d/rc.local
常用的啟動(dòng)關(guān)閉
- tomcat
systemctl status tomcat8/systemctl start tomcat8/systemctl stop tomcat8 - mysql
ps -ef | grep mysql//usr/local/mysql-8.0.31/bin/mysqld_safe --defaults-file=/usr/local/mysql-8.0.31/my.cnf & - nginx
ps -ef | grep nginx//usr/local/nginx/sbin/nginx//usr/local/nginx/sbin/nginx -s stop
ps -ef | grep 進(jìn)程名稱
- ps 查看服務(wù)器的進(jìn)程信息
- e 等價(jià)于 A, 列出全部的進(jìn)程
- f 顯示全部的列 (全字段) (uid 用戶id, pid 進(jìn)程id, ppid 父級進(jìn)程id, c cpu的占用率, stime 進(jìn)程啟動(dòng)時(shí)間, tty 終端設(shè)備, time 進(jìn)程執(zhí)行時(shí)間, cmd 進(jìn)程的名稱或?qū)?yīng)的路徑)
- | 管道命令, 是指ps命令與grep同時(shí)執(zhí)行
- grep 全稱是Global Regular Expression Print,文本搜索工具, 能使用正則表達(dá)式搜索文本
-
command1 ; command2用;隔開每個(gè)命令, 按照從左到右依次執(zhí)行, 忽略是否失敗, 所有命令都會(huì)執(zhí)行 -
command1 | command2管道符|將兩個(gè)命令隔開,管道符左邊命令的輸出就會(huì)作為管道符右邊命令的輸入. 連續(xù)使用管道意味著第一個(gè)命令的輸出會(huì)作為第二個(gè)命令的輸入, 第二個(gè)命令的輸出又會(huì)作為第三個(gè)命令的輸入依此類推 -
command1 &放在啟動(dòng)參數(shù)后面&表示設(shè)置此進(jìn)程為后臺(tái)進(jìn)程 -
command1 && command2 [&& command3 ...]使用&&連接, 實(shí)現(xiàn)邏輯與的功能.&&前面的命令返回真 (命令返回值$? == 0), 后面的命令才會(huì)被執(zhí)行 -
command1 || command2 [|| command3 ...]使用||連接, 實(shí)現(xiàn)邏輯或的功能. 只要||前面有一個(gè)命令返回真 (命令返回值$? == 0), 后面的命令就不會(huì)被執(zhí)行
-
nohup ./abc.sh > abc.log 2>&1 &后臺(tái)運(yùn)行, 并輸出錯(cuò)誤日志
RPM / YUM[1]
RPM,全稱為RPM Package Manager,是由Red Hat推出的軟件包管理系統(tǒng),現(xiàn)在在各種發(fā)行版中普遍使用。RPM僅適用于安裝用RPM來打包的軟件,目前是GNU/Linux下軟件包資源最豐富的軟件包類型。
Yum (Yellow dog Updater, Modified) 是一個(gè)基于 RPM 包管理的字符前端軟件包管理器,能夠從指定的服務(wù)器自動(dòng)下載 RPM 包并且安裝,可以自動(dòng)解決處理包依賴性關(guān)系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝,更方便的添加/刪除/更新RPM包,便于管理系統(tǒng)的更新問題。被Yellow Dog Linux本身,以及Fedora、Red Hat Enterprise Linux采用。
RPM
-
-i表示安裝。 -
-v, -vv, -vvv表示詳細(xì)信息。 -
-h以"#"號顯示安裝進(jìn)度。 -
-q查詢指定包名。 -
-e卸載指定包名。 -
-U升級軟件,若未軟件尚未安裝,則安裝軟件。 -
-F升級軟件。 -
-V對RPM包進(jìn)行驗(yàn)證。 -
–nodeps忽略依賴關(guān)系。 -
–query查詢指定包名。同-q選項(xiàng)。 -
–hash同-h。 -
–install表示安裝,同-i選項(xiàng)。 -
–test僅作測試,不真正執(zhí)行,可用于測試安裝,測試卸載。 -
–replacepkgs重新安裝。替換原有的安裝。 -
–force忽略軟件包及文件的沖突。 -
–initdb新建RPM的數(shù)據(jù)庫。 -
–rebuilddb重建RPM的數(shù)據(jù)庫。 -
–percent以百分比的形式輸出安裝的進(jìn)度。 -
rpm -q查詢某一個(gè)RPM包是否已安裝 -
rpm -qi查詢某一個(gè)RPM包的詳細(xì)信息 -
rpm -ql列出某RPM包中所包含的文件 -
rpm -qf查詢某文件是哪個(gè)RPM包生成的 -
rpm -qa列出當(dāng)前系統(tǒng)所有已安裝的包
YUM
-
yum list installed顯示已安裝的包 -
yum list available顯示沒有安裝, 但可安裝的包 -
yum list updates查看所有可更新的包 -
yum list obsoletes顯示被廢棄的包 -
yum search 查詢名模糊匹配搜索 -
yum install rpm包路徑安裝本地rpm包 -
yum reinstall 包安裝本地rpm包 -
yum update -y 包/rpm包路徑升級軟件包 (y 自動(dòng) yes) -
yum remove 包卸載軟件包
tar
tar 是用來建立,還原備份文件的工具程序,它可以加入,解開備份文件內(nèi)的文件。
格式
- .tar 默認(rèn)模式,不壓縮,只是將所有文件放到一個(gè)包里。
- .tar.gz 常用模式,采用gzip算法壓縮。壓縮率一般,壓縮時(shí)間中等。
- .tar.bz2 不常用。采用bz2算法壓縮。壓縮率稍差,壓縮時(shí)間較短。
- .tar.xz 不常用,采用xz算法壓縮。壓縮率較好,壓縮時(shí)間較長。
參數(shù)
- -f<備份文件>或--file=<備份文件> 指定備份文件。
- -v或--verbose 顯示指令執(zhí)行過程。
- -x或--extract或--get 從備份文件中還原文件。
- -z或--gzip或--ungzip 通過gzip指令處理備份文件。
- -j 通過bzip2命令壓縮或解壓
解壓
- .tar.gz 后綴
tar -zxvf 文件名 - .tar.xz 后綴
tar -Jxvf 文件名
配置文件
-
/etc/profile全局所有用戶有效 -
~/.bash_profile當(dāng)前用戶有效
JDK
- 檢查系統(tǒng)環(huán)境
uname -a - 查看系統(tǒng)是否自帶 jdk
yum list installed | grep java或者rpm -qa | grep java - 卸載所有java-11-openjdk
yum -y remove java-11-openjdk*或者rpm -qa | grep java | xargs rpm -e --nodeps
OpenJDK (yum 安裝)
- 查看JDK軟件包列表
yum search java | grep jdk - 安裝 OpenJDK
yum install -y java-1.8.0-openjdk*(使用yum安裝后的jdk默認(rèn)安裝路徑為/usr/lib/jvm)
Oracle JDK (rpm 安裝)
- 上傳 Oracle JDK 到服務(wù)器
scp jdk-8u351-linux-x64.rpm root@192.168.1.1:/rootscp -i remote.pem jdk-8u351-linux-x64.rpm root@192.168.1.1:/root
- 使用rpm包安裝
rpm -ivh jdk-8u351-linux-x64.rpm-
-i安裝(install) -
-v顯示更詳細(xì)的信息(verbose) -
-h打印 #,顯示安裝進(jìn)度(hash)
-
- 檢查jdk是否安裝成功
java --version或者rpm -qa | grep jdk
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b10, mixed mode)
- 可執(zhí)行程序放到那里去了
which java(/usr/bin/java) - 配置 JDK, 編輯 profile 文件
vim /etc/profile(如果存在多個(gè) jdk/tomcat, 可以單獨(dú)配置在tomcat/starup.sh中)
# java environment
export JAVA_HOME=/usr/java/jdk1.8.0_351
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
- 使配置文件生效
source /etc/profile
Tomcat (tar.gz 直接解壓)
- 獲取 tomcat.tar.gz 壓縮包
- 上傳 Tomcat 到服務(wù)器
scp apache-tomcat-8.5.83.tar.gz root@192.168.1.1:/root - 在服務(wù)器使用 wget 直接下載
wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.83/bin/apache-tomcat-8.5.83.tar.gz
- 上傳 Tomcat 到服務(wù)器
- 創(chuàng)建tomcat目錄
sudo mkdir /usr/tomcat - 解壓到指定目錄
sudo tar -zvxf apache-tomcat-8.5.83.tar.gz -C /usr/tomcat - 刪除目錄或文件
rm -rf apache-tomcat-8.5.83(r遞歸刪除,f無需確認(rèn)直接刪除) - 改名目錄名為tomcat8
mv /usr/tomcat/apache-tomcat-8.5.83 /usr/tomcat/tomcat8.5 - 配置 JDK (可選)
-
vim /usr/tomcat/tomcat8.5/bin/catalina.sh添加export JAVA_HOME=/usr/java/jdk1.8.0_351 -
vim /usr/tomcat/tomcat8.5/bin/setclasspath.sh添加export JAVA_HOME=/usr/java/jdk1.8.0_351
-
- 修改 tomcat 端口
vim /usr/tomcat/tomcat8.5/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
- 防火墻配置端口
firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload - 重新加載防火墻規(guī)則
firewall-cmd --reload - 啟動(dòng) tomcat
cd /usr/tomcat/tomcat8.5/bin && sh startup.sh
配置開機(jī)啟動(dòng)
- 創(chuàng)建Tomcat8服務(wù)文件
vim /usr/lib/systemd/system/tomcat8.service
#tomcat8.service文件內(nèi)容
[Unit]
Description=Apache Tomcat 8
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking #后臺(tái)運(yùn)行的形式
ExecStart=/usr/tomcat/tomcat8.5/bin/startup.sh
ExecReload=/usr/tomcat/tomcat8.5/bin/startup.sh
ExecStop=/usr/tomcat/tomcat8.5/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
- 重新加載
systemctl daemon-reload - 設(shè)置Tomcat8開機(jī)啟動(dòng)
systemctl enable tomcat8 - 查看是否開機(jī)自啟
systemctl list-unit-files | grep tomcat8 - 啟動(dòng)/關(guān)閉 tomcat8服務(wù)
systemctl start tomcat8/systemctl stop tomcat8 - tomcat8 狀態(tài)
systemctl status tomcat8
防火墻 (systemctl)
CentOS 7 默認(rèn)使用的是 firewall 作為防火墻, 使用 systemctl 來管理服務(wù)和程序, 融合之前 service 和 chkconfig 的功能
systemctl
- 查看防火墻是否開機(jī)自啟
systemctl is-enabled firewalld.service; echo $?/systemctl list-unit-files | grep firewalld - 禁止開機(jī)啟動(dòng)
systemctl disable firewalld.service - 開機(jī)啟動(dòng)
systemctl enable firewalld.service - 開機(jī)啟動(dòng)列表
systemctl list-unit-files | grep enabled - 關(guān)閉防火墻
systemctl stop firewalld.service - 開啟防火墻
systemctl start firewalld.service - 重啟防火墻
systemctl restart firewalld.service - 查看防火墻狀態(tài)
systemctl status firewalld.servicefirewall-cmd --state
防火墻 (firewall-cmd)
- 查看開放的端口
firewall-cmd --list-all/firewall-cmd --list-ports/firewall-cmd --zone=public --list-ports - 端口是否開放
firewall-cmd --query-port=8080/tcp - 開放端口
firewall-cmd --permanent --zone=public --add-port=8080/tcp(permanent永久生效) - 開放端口
firewall-cmd --permanent --zone=public --add-service=http(80端口) - 開放端口
firewall-cmd --permanent --zone=public --add-service=https(443端口) - 刪除端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent - 更新防火墻規(guī)則
firewall-cmd --reload - 查看監(jiān)聽端口
netstat -lnpt
MySQL
由于 CentOS 7 中默認(rèn)安裝了 MariaDB , 需要先進(jìn)行卸載 (yum方式安裝MySQL時(shí)可以不用卸載會(huì)覆蓋, rpm必須卸載)
-
yum list installed | grep mariadb或者rpm -qa | grep -i mariadb(mariadb-libs-5.5.68-1.el7.x86_64) rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
安裝 MySQL
- 下載 MySQL
image.png - wget 下載
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz - tar 解壓
tar -Jxvf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz - 移動(dòng)
mv mysql-8.0.31-linux-glibc2.12-x86_64 /usr/local/mysql-8.0.31 - 配置 PATH
vim /etc/profile
# MySQL
MYSQL_HOME=/usr/local/mysql-8.0.31
export PATH=$PATH:${MYSQL_HOME}/bin
- 校驗(yàn)
mysql --version
mysql Ver 8.0.31 for Linux on x86_64 (MySQL Community Server - GPL)
配置 MySQL
- 創(chuàng)建用戶組
groupadd mysql - 創(chuàng)建用戶
useradd -r -g mysql -s /bin/false mysql(r 創(chuàng)建系統(tǒng)用戶, g 指定用戶組, s /bin/false參數(shù)指定mysql用戶僅擁有所有權(quán), 而沒有登錄權(quán)限) - 創(chuàng)建數(shù)據(jù)目錄
mkdir -p /data/mysql8_data(p 允許創(chuàng)建子目錄) - 更改權(quán)限
-
chown -R mysql:mysql /data/mysql8_data設(shè)置文件所有者和文件關(guān)聯(lián)組的命令 chmod -R 750 /data/mysql8_data
-
- my.cnf 配置文件
vim /usr/local/mysql-8.0.31/my.cnf
[mysql]
# 設(shè)置mysql客戶端默認(rèn)字符集
default-character-set=utf8mb4
[client]
# 設(shè)置mysql客戶端連接服務(wù)端時(shí)默認(rèn)使用的端口
port=3306
socket=/tmp/mysql.sock
[mysqld]
# 設(shè)置3306端口
port=3306
# 設(shè)置mysql的安裝目錄
basedir=/usr/local/mysql-8.0.31
# 數(shù)據(jù)存放目錄
datadir=/data/mysql8_data/mysql
log-bin=/data/mysql8_data/mysql/mysql-bin
innodb_data_home_dir=/data/mysql8_data/mysql
innodb_log_group_home_dir=/data/mysql8_data/mysql
# 日志及進(jìn)程數(shù)據(jù)的存放目錄
log-error=/data/mysql8_data/mysql/mysql.log
pid-file=/data/mysql8_data/mysql/mysql.pid
lower_case_table_names=1
autocommit=1
# 允許最大連接數(shù)
max_connections=10000
# 允許連接失敗的次數(shù)。這是為了防止有人從該主機(jī)試圖攻擊數(shù)據(jù)庫系統(tǒng)
max_connect_errors=10
# 服務(wù)端使用的字符集默認(rèn)為UTF8
character-set-server=utf8
# 創(chuàng)建新表時(shí)將使用的默認(rèn)存儲(chǔ)引擎
default-storage-engine=INNODB
# 默認(rèn)使用“mysql_native_password”插件認(rèn)證
default_authentication_plugin=mysql_native_password
- 初始化
mysqld --defaults-file=/usr/local/mysql-8.0.31/my.cnf --basedir=/usr/local/mysql-8.0.31 --datadir=/data/mysql8_data/mysql --user=mysql --initialize-insecure-
--defaults-file指定配置文件(要放在--initialize 前面) -
--user指定用戶 -
--basedir指定安裝目錄 -
--datadir指定初始化數(shù)據(jù)目錄 -
--intialize-insecure初始化無密碼(否則生成隨機(jī)密碼)
-
啟動(dòng) MySQL
- 啟動(dòng)
-
/usr/local/mysql-8.0.31/bin/mysqld_safe --defaults-file=/usr/local/mysql-8.0.31/my.cnf &(& 后臺(tái)運(yùn)行) mysqld_safe --defaults-file=/usr/local/mysql-8.0.31/my.cnf &
-
- 查看 MySQL 服務(wù)
ps -ef | grep mysql(第二行就是 MySQL)
root 25556 23175 0 18:48 pts/0 00:00:00 /bin/sh /usr/local/mysql-8.0.31/bin/mysqld_safe --defaults-file=/usr/local/mysql-8.0.31/my.cnf
mysql 25799 25556 1 18:48 pts/0 00:00:00 /usr/local/mysql-8.0.31/bin/mysqld --defaults-file=/usr/local/mysql-8.0.31/my.cnf --basedir=/usr/local/mysql-8.0.31 --datadir=/data/mysql8_data/mysql --plugin-dir=/usr/local/mysql-8.0.31/lib/plugin --user=mysql --log-error=/data/mysql8_data/mysql/mysq.log --pid-file=/data/mysql8_data/mysql/mysql.pid --port=3306
root 26073 23175 0 18:49 pts/0 00:00:00 grep --color=auto mysql
- 登錄
-
mysql -u root --skip-password(之前使用--initialize-insecure無密碼初始化) -
mysql -u root -p首次登錄查看密碼cat /var/log/mysqld.log | grep password
-
- 首次修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678'; - 平時(shí)修改密碼
mysqladmin -u root -p 123456 password 456789SET PASSWORD FOR 'root'@'localhost' = PASSWORD(456789');
- 刷新權(quán)限
FLUSH PRIVILEGES; - 查詢用戶
use mysql; SELECT user,host,plugin,authentication_string FROM user;
遠(yuǎn)程訪問
- 創(chuàng)建遠(yuǎn)程連接用戶
CREATE user 'root'@'%'; - 設(shè)置密碼
ALTER USER 'root'@'%' IDENTIFIED BY '12345678' PASSWORD EXPIRE NEVER;(密碼永不過期) - 授權(quán)用戶所有權(quán)限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; - 刷新權(quán)限
FLUSH PRIVILEGES; - 查看端口
firewall-cmd --query-port=3306/tcp - 開放端口
firewall-cmd --add-port=3306/tcp --permanent - 重啟防火墻
systemctl restart firewalld
開機(jī)自啟動(dòng)
- 編輯
vim /etc/rc.d/rc.local - 添加
/usr/local/mysql-8.0.31/bin/mysqld_safe --defaults-file=/usr/local/mysql-8.0.31/my.cnf >/tmp/mysqld_safe_log.log 2>&1 &- command >out.file 是將command的輸出重定向到out.file文件
-
2>&1將標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸出 (>&是一個(gè)整體, 0 鍵盤輸入, 1 屏幕輸出 2錯(cuò)誤輸出) - 最后一個(gè)
&是讓該命令在后臺(tái)執(zhí)行
Nginx
- 下載 nginx-1.22.1.tar.gz
wget http://nginx.org/download/nginx-1.22.1.tar.gz - 解壓到指定目錄
tar -zvxf nginx-1.22.1.tar.gz - 移動(dòng)
mv nginx-1.22.1 /usr/local/nginx-1.22.1 - 進(jìn)入目錄
cd /usr/local/nginx-1.22.1, 安裝- 依次執(zhí)行
./configure/make/make install - 一起執(zhí)行
./configure && make && make install
- 依次執(zhí)行
- 查找安裝路
whereis nginx - 檢查 http_ssl_module 是否安裝
/usr/local/nginx/sbin/nginx -V(configure arguments: –with-http_ssl_module) - 配置 SSL 模塊
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module - 重新編譯
make - 切換到安裝目錄的 sbin 下
cd /usr/local/nginx/sbin - 啟動(dòng)
./nginx - 關(guān)閉
./nginx -s stop - 重新加載
./nginx -s reload - 查看
ps -ef | grep nginx - 自啟動(dòng)服務(wù)
vim /etc/rc.d/rc.local添加/usr/local/nginx/sbin/nginx >/tmp/nginx_log.log 2>&1 - 配置
vim /usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# http
server {
listen 80;
server_name localhost 192.168.1.1;
location / {
# 反向代理
proxy_pass http://localhost:8080;
}
}
# https
server {
listen 443 ssl;
server_name localhost 192.168.1.1;
ssl_certificate /root/ssl/server.crt;
ssl_certificate_key /root/ssl/server.key;
location / {
proxy_pass http://localhost:8080;
}
}
}
server
{
listen 80;
server_name your-domain.com www.your-domain.com;
# rewrite:重寫指令,$host$:請求地址,$1:請求參數(shù),permanent:永久訪問
#rewrite ^(.*)$ https://$host$1 permanent;
return 301 https://$server_name$request_uri;
}
server
{
listen 443 ssl;
server_name your-domain.com www.your-domain.com;
ssl on;
ssl_certificate /root/ssl/your-domain.crt;
ssl_certificate_key /root/ssl/your-domain.key;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
proxy_buffer_size 128k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
proxy_pass http://127.0.0.1:8080;
}
}
完整的 nginx.conf
#安全問題,建議用nobody,不要用root.
#user nobody;
#工作進(jìn)程:數(shù)目。根據(jù)硬件調(diào)整,通常等于cpu數(shù)量
worker_processes 2;
#work綁定cpu(4 work綁定4cpu)
#worker_cpu_affinity 0001 0010 0100 1000
#work綁定cpu (4 work綁定8cpu中的4個(gè)) 。
#worker_cpu_affinity 0000001 00000010 00000100 00001000
#錯(cuò)誤日志存放路徑
#error_log path(存放路徑) level(日志等級); path表示日志路徑,level表示日志等級[ debug | info | notice | warn | error | crit ]
#從左至右,日志詳細(xì)程度逐級遞減,即debug最詳細(xì),crit最少,默認(rèn)為crit。
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
# nginx進(jìn)程pid存放路徑
#pid logs/nginx.pid;
events {
#這個(gè)值是表示每個(gè)worker進(jìn)程所能建立連接的最大值,所以,一個(gè)nginx能建立的最大連接數(shù),應(yīng)該是worker_connections * worker_processes。
#當(dāng)然,這里說的是最大連接數(shù),對于HTTP請求本地資源來說,能夠支持的最大并發(fā)數(shù)量是worker_connections * worker_processes,
#如果是支持http1.1的瀏覽器每次訪問要占兩個(gè)連接,
#所以普通的靜態(tài)訪問最大并發(fā)數(shù)是: worker_connections * worker_processes /2,
#而如果是HTTP作為反向代理來說,最大并發(fā)數(shù)量應(yīng)該是worker_connections * worker_processes/4。
#因?yàn)樽鳛榉聪虼矸?wù)器,每個(gè)并發(fā)會(huì)建立與客戶端的連接和與后端服務(wù)的連接,會(huì)占用兩個(gè)連接。
worker_connections 1024;
#這個(gè)值是表示nginx要支持哪種多路io復(fù)用。
#一般的Linux選擇epoll, 如果是(*BSD)系列的Linux使用kquene。
#windows版本的nginx不支持多路IO復(fù)用,這個(gè)值不用配。
#use epoll;
# 當(dāng)一個(gè)worker搶占到一個(gè)鏈接時(shí),是否盡可能的讓其獲得更多的連接,默認(rèn)是off 。
#multi_accept on;
# 默認(rèn)是on ,開啟nginx的搶占鎖機(jī)制。
#accept_mutex on;
}
http {
#當(dāng)web服務(wù)器收到靜態(tài)的資源文件請求時(shí),依據(jù)請求文件的后綴名在服務(wù)器的MIME配置文件中找到對應(yīng)的MIME Type,再根據(jù)MIME Type設(shè)置HTTP Response的Content-Type,然后瀏覽器根據(jù)Content-Type的值處理文件。
include mime.types;
#如果 不能從mime.types找到映射的話,用以下作為默認(rèn)值
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#一條典型的 accesslog:
#101.226.166.254 - - [21/Oct/2013:20:34:28 +0800] "GET /movie_cat.php?year=2013 HTTP/1.1" 200 5209 "http://www.baidu.com" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322; Tablet PC 2.0); 360Spider"
#1)101.226.166.254:(用戶IP)
#2)[21/Oct/2013:20:34:28 +0800]:(訪問時(shí)間)
#3)GET:http請求方式,有GET和POST兩種
#4)/movie_cat.php?year=2013:當(dāng)前訪問的網(wǎng)頁是動(dòng)態(tài)網(wǎng)頁,movie_cat.php即請求的后臺(tái)接口,year=2013為具體接口的參數(shù)
#5)200:服務(wù)狀態(tài),200表示正常,常見的還有,301永久重定向、4XX表示請求出錯(cuò)、5XX服務(wù)器內(nèi)部錯(cuò)誤
#6)5209:傳送字節(jié)數(shù)為5209,單位為byte
#7)"http://www.baidu.com":refer:即當(dāng)前頁面的上一個(gè)網(wǎng)頁
#8)"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; #.NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322; Tablet PC 2.0); 360Spider": agent字段:通常用來記錄操作系統(tǒng)、瀏覽器版本、瀏覽器內(nèi)核等信息
#日志位置
#access_log logs/access.log main;
#開啟從磁盤直接到網(wǎng)絡(luò)的文件傳輸,適用于有大文件上傳下載的情況,提高IO效率。
sendfile on;
#此選項(xiàng)允許或禁止使用socket的TCP_CORK的選項(xiàng),此選項(xiàng)僅在sendfile的時(shí)候使用
#tcp_nopush on;
#一個(gè)請求完成之后還要保持連接多久, 默認(rèn)為0,表示完成請求后直接關(guān)閉連接。
#keepalive_timeout 0;
keepalive_timeout 65;
#開啟或者關(guān)閉gzip模塊
#gzip on ;
#設(shè)置允許壓縮的頁面最小字節(jié)數(shù),頁面字節(jié)數(shù)從header頭中的Content-Length中進(jìn)行獲取。
#gzip_min_lenth 1k;
# gzip壓縮比,1 壓縮比最小處理速度最快,9 壓縮比最大但處理最慢(傳輸快但比較消耗cpu)
#gzip_comp_level 4;
#匹配MIME類型進(jìn)行壓縮,(無論是否指定)"text/html"類型總是會(huì)被壓縮的。
#gzip_types types text/plain text/css application/json application/x-javascript text/xml
#動(dòng)靜分離
#服務(wù)器端靜態(tài)資源緩存,最大緩存到內(nèi)存中的文件,不活躍期限
#open_file_cache max=655350 inactive=20s;
#活躍期限內(nèi)最少使用的次數(shù),否則視為不活躍。
#open_file_cache_min_uses 2;
#驗(yàn)證緩存是否活躍的時(shí)間間隔
#open_file_cache_valid 30s;
upstream myserver{
# 1、輪詢(默認(rèn))
# 每個(gè)請求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。
# 2、指定權(quán)重
# 指定輪詢幾率,weight和訪問比率成正比,用于后端服務(wù)器性能不均的情況。
#3、IP綁定 ip_hash
# 每個(gè)請求按訪問ip的hash結(jié)果分配,這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器,可以解決session的問題。
#4、備機(jī)方式 backup
# 正常情況不訪問設(shè)定為backup的備機(jī),只有當(dāng)所有非備機(jī)全都宕機(jī)的情況下,服務(wù)才會(huì)進(jìn)備機(jī)。
#5、fair(第三方)
#按后端服務(wù)器的響應(yīng)時(shí)間來分配請求,響應(yīng)時(shí)間短的優(yōu)先分配。
#6、url_hash(第三方)
#按訪問url的hash結(jié)果來分配請求,使每個(gè)url定向到同一個(gè)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較有效。
# ip_hash;
server 192.168.161.132:8080 weight=1;
server 192.168.161.132:8081 weight=1;
#fair
#hash $request_uri
#hash_method crc32
}
server {
#監(jiān)聽端口號
listen 80;
#配置訪問域名,域名可以有多個(gè),用空格隔開
server_name localhost 192.168.161.130;
#字符集
#charset utf-8;
#charset koi8-r;
#access_log logs/host.access.log main;
#location [=|~|~*|^~] /uri/ { … }
# = 精確匹配
# ~ 正則匹配,區(qū)分大小寫
# ~* 正則匹配,不區(qū)分大小寫
# ^~ 關(guān)閉正則匹配
#匹配原則:
# 1、所有匹配分兩個(gè)階段,第一個(gè)叫普通匹配,第二個(gè)叫正則匹配。
# 2、普通匹配,首先通過“=”來匹配完全精確的location
# 2.1、 如果沒有精確匹配到, 那么按照最大前綴匹配的原則,來匹配location
# 2.2、 如果匹配到的location有^~,則以此location為匹配最終結(jié)果,如果沒有那么會(huì)把匹配的結(jié)果暫存,繼續(xù)進(jìn)行正則匹配。
# 3、正則匹配,依次從上到下匹配前綴是~或~*的location, 一旦匹配成功一次,則立刻以此location為準(zhǔn),不再向下繼續(xù)進(jìn)行正則匹配。
# 4、如果正則匹配都不成功,則繼續(xù)使用之前暫存的普通匹配成功的location.
location / {
# 匹配任何查詢,因?yàn)樗姓埱蠖家?/ 開頭。但是正則表達(dá)式規(guī)則和長的塊規(guī)則將被優(yōu)先和查詢匹配。
#定義服務(wù)器的默認(rèn)網(wǎng)站根目錄位置
root html;
#默認(rèn)訪問首頁索引文件的名稱
index index.html index.htm;
#反向代理路徑
#proxy_pass http://myserver;
#反向代理的超時(shí)時(shí)間
#proxy_connect_timeout 10;
#proxy_redirect default;
}
location /images/ {
root images ;
}
location ^~ /images/jpg/ { # 匹配任何已 /images/jpg/ 開頭的任何查詢并且停止搜索。任何正則表達(dá)式將不會(huì)被測試。
root images/jpg/ ;
}
location ~*.(gif|jpg|jpeg)$ {
#所有靜態(tài)文件直接讀取硬盤
root pic ;
#expires定義用戶瀏覽器緩存的時(shí)間為3天,如果靜態(tài)頁面不常更新,可以設(shè)置更長,這樣可以節(jié)省帶寬和緩解服務(wù)器的壓力
expires 3d; #緩存3天
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
Redis
- 下載 redis
wget https://download.redis.io/releases/redis-6.2.11.tar.gz - 解壓
tar -zxvf redis-6.2.11.tar.gz - 移動(dòng)
mv redis-6.2.11 /usr/local/redis - 進(jìn)入目錄
cd /usr/local/redis/ - 編譯
make - 安裝
make install PREFIX=/usr/local/redis - 可以查看配置文件在哪
whereis redis(輸出redis: /usr/local/redis) - 拷貝文件
cp redis.conf bin/redis.conf - 進(jìn)入目錄
cd /usr/local/redis/bin/ - 編輯配置文件
vim redis.confdaemonize yes - 啟動(dòng) redis
./redis-server redis.conf, 檢查ps -ef | grep redis
開機(jī)自動(dòng)啟動(dòng)
- 目錄
cd /lib/systemd/system/ - 配置
vim redis.service
[Unit]
Description=redis-server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 設(shè)置
# 開機(jī)自動(dòng)啟動(dòng)
systemctl enable redis.service
# 啟動(dòng)redis服務(wù)
systemctl start redis.service
# 查看服務(wù)狀態(tài)
systemctl status redis.service
# 停止服務(wù)
systemctl stop redis.service
# 取消開機(jī)自動(dòng)啟動(dòng)(卸載服務(wù))
systemctl disabled redis.service
部署應(yīng)用
初始化數(shù)據(jù)庫
- 上傳數(shù)據(jù)庫文件
scp app.sql root@192.168.1.2:/root/app_sql - 連接數(shù)據(jù)庫, 執(zhí)行 sql 文件
source /root/app_sql/app.sql - 直接執(zhí)行 sql 文件
mysql -h localhost -u username -p < /root/app_sql/app.sql
部署應(yīng)用
- 上傳包
scp app.war root@192.168.1.2:/root/app_war - 移動(dòng)到 tomcat 中
mv /root/app.war /usr/tomcat/tomcat8.5/webapps/
鳴謝
- https://www.cnblogs.com/secretmrj/p/15600144.html
- https://cloud.tencent.com/developer/article/1958096
- https://www.nginx.org.cn/article/detail/215
- https://developer.aliyun.com/article/699966
