Docker
使用官方安装脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
Docker Compose
安装 Docker Compose:
curl -L https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
如果要安装其他版本的 Compose,请替换 v2.22.0。
将可执行权限应用于二进制文件:
chmod +x /usr/local/bin/docker-compose
测试是否安装成功:
docker-compose version
Java Development Kit
1. 查看 JDK 软件包列表
yum search java | grep -i --color jdk
2. 安装 JDK(安装包可以根据上面查看的列表选择)
yum install -y java-1.8.0-openjdk.x86_64
1. 下载 JDK
进入 Oracle 官网下载对应版本的 jdk
可以在 Oracle 官网下载过往版本的 jdk
注意要下载 RPM Package 类型的
以 jdk8 中最后一个免费版本 8u202 版本为例:
.png)
2. 安装 JDK
rpm -ivh jdk-8u202-linux-x64.rpm
MySQL
下载脚本
此脚本使用 Docker Compose
进行安装,请确保执行前安装了 Docker Compose
。
该部分仅登录用户可见
使用脚本
# 给脚本赋予执行权限
chmod u+x mysql.sh
# 运行脚本
./ mysql.sh
Node.js
yum 安装
# 设置Node.js版本(setup_16里的16是nodejs的版本号)
curl --silent --location https://rpm.nodesource.com/setup_16.x | sudo bash
# yum安装Node.js
yum -y install nodejs
# 查看Node.js版本
node -v
# 查看npm版本
npm -v
# 为npm配置淘宝镜像
npm config set registry https://registry.npmmirror.com
pnpm
安装 pnpm
# 全局安装 pnpm
npm install -g pnpm
# 查看 pnpm 版本
pnpm -v
PM2
安装 PM2
# 全局安装PM2
npm install -g pm2
PM2 的使用
Nginx
yum 安装
# 添加 nginx 到 yum 源中
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安装nginx
yum install -y nginx
# 启动nginx
systemctl start nginx
配置信息
- 网站文件存放默认位置(Welcome to nginx 页面)
/usr/share/nginx/html
- 网站默认站点配置
/etc/nginx/conf.d/default.conf
- 自定义 nginx 站点配置文件存放目录
/etc/nginx/conf.d/
- nginx 全局配置文件
/etc/nginx/nginx.conf
- 检查 nginx 配置文件是否正确
nginx -t
常用配置
侦听端口
server {
# Standard HTTP Protocol
listen 80;
# Standard HTTPS Protocol
listen 443 ssl;
# For http2
listen 443 ssl http2;
# Listen on 80 using IPv6
listen [::]:80;
# Listen only on using IPv6
listen [::]:80 ipv6only=on;
}
访问日志
server {
# Relative or full path to log file
access_log /path/to/file.log;
# Turn 'on' or 'off'
access_log on;
}
域名
server {
# Listen to yourdomain.com
server_name yourdomain.com;
# Listen to multiple domains
server_name yourdomain.com www.yourdomain.com;
# Listen to all domains
server_name *.yourdomain.com;
# Listen to all top-level domains
server_name yourdomain.*;
# Listen to unspecified Hostnames (Listens to IP address itself)
server_name "";
}
静态资源
server {
listen 80;
server_name yourdomain.com;
location / {
root /path/to/website;
}
}
重定向
server {
listen 80;
server_name www.yourdomain.com;
return 301 http://yourdomain.com$request_uri;
}
server {
listen 80;
server_name www.yourdomain.com;
location /redirect-url {
return 301 http://otherdomain.com;
}
}
反向代理
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://0.0.0.0:3000;
# where 0.0.0.0:3000 is your application server (Ex: node.js) bound on 0.0.0.0 listening on port 3000
}
}
SSL 协议
server {
listen 443 ssl;
server_name yourdomain.com;
ssl on;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/privatekey.pem;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/fullchain.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_timeout 1h;
ssl_session_cache shared:SSL:50m;
add_header Strict-Transport-Security max-age=15768000;
}
# Permanent Redirect for HTTP to HTTPS
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
负载均衡
upstream node_js {
server 0.0.0.0:3000;
server 0.0.0.0:4000;
server 123.131.121.122;
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://node_js;
}
}
Supervisor
yum 安装
# 安装supervisor
yum install -y supervisor
# 如果遇到错误安装一下依赖
yum install epel-release
yum install python-setuptools
# 设置开机自启
systemctl enable supervisord
# 启动supervisor服务
systemctl start supervisord
# 设置开机自启
systemctl enable nginx
supervisor 配置
配置文件所在位置
# 修改配置文件
vim /etc/supervisor.conf
supervisor 配置示例
; 需要管理的进程
[program:demo]
; 进程运行前,会切换到此目录下,非必需
directory=/app/demo
; 启动进程的命令路径
command=java -jar demo.jar
; 在supervisord启动的时候也自动启动 (default true)
;autostart=true
; 进程挂掉后自动重启,可选值: [false,unexpecte,true] (default unexpected)
; unexpected: 退出码不在exitcodes里定义时才退出
;autorestart=unexpected
; 和上面autorestart=unexpected对应 (default 0,2)
;exitcodes=0,2
; 启动几秒后没有异常退出,就表示进程正常启动了 (default 1)
;startsecs=1
; 启动失败自动重试次数 (default 3)
;startretries=3
; 启动进程的用户 (default root)
;user=root
; 进程的stdout的日志路径,可选值: [auto none 指定路径]
; auto: 随机找一个地方生成日志文件,当supervisor重新启动时以前的日志文件会被清空
stdout_logfile=/app/demo/logs
; 日志文件大小 (default 50MB)
stdout_logfile_maxbytes=1MB
; 日志文件备份数 (default 10)
stdout_logfile_backups=10
supervisor 常用命令
# 查看进程运行状态
supervisorctl status
# 启动进程
supervisorctl start [进程名]
# 关闭进程
supervisorctl stop [进程名]
# 重启进程
supervisorctl restart [进程名]
# 重新载入配置文件
supervisorctl update
# 关闭supervisor
supervisorctl shutdown