步骤 1:更新系统和软件源
首先,确保系统的软件包是最新的:
sudo apt update
sudo apt upgrade -y
步骤 2:编译安装 Nginx
apt install git -y #安装git
git clone https://github.com/nginx/nginx.git #下载nginx源码
cd nginx
# auto/configure --prefix=/usr/local/nginx \
# --with-http_ssl_module \
# --with-stream_ssl_module \
# --with-stream_ssl_preread_module \
# --with-http_v2_module \
# --with-http_gzip_static_module \
# --with-pcre \
# --with-http_realip_module \
# --with-stream_geoip_module=dynamic \
# --with-stream
./auto/configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_v3_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-pcre \
--with-openssl=/usr/local/src/openssl \
--with-threads \
--with-file-aio \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-cc-opt='-O3 -march=native'
make -j$(nproc)
make install #安装在 "/usr/local/nginx/sbin/nginx"
安装开机自启服务
创建一个 systemd 服务文件:
nano /usr/lib/systemd/system/nginx.service
将以下内容添加:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
重新加载 systemd 配置并启动 Nginx:
sudo systemctl daemon-reload
sudo systemctl enable nginx.service
sudo systemctl start nginx
查看nginx状态
systemctl status nginx.service
nginx.service - nginx
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor>
Active: inactive (dead)
# 很奇怪,明明启动成功了,为什么显示Active: inactive (dead)?
杀死nginx重启nginx
pkill -9 nginx
ps -aux|grep nginx
root 29703 0.0 0.1 12112 1108 pts/0 R+ 04:10 0:00 grep --color=auto nginx
systemctl start nginx
再次查看状态,变成了active,搞定。
将 Nginx 添加到 PATH
如果 Nginx 成功安装,并且你想在任何地方使用 nginx 命令,可以将 Nginx 的 sbin 目录添加到系统的 PATH 环境变量中。编辑 ~/.bashrc 文件(或 ~/.bash_profile,取决于你的 shell 配置文件):
nano ~/.bashrc
在文件的末尾添加以下行:
export PATH=$PATH:/usr/local/nginx/sbin
保存并退出后,运行以下命令使修改生效:
source ~/.bashrc
现在,你可以在任何地方直接运行 nginx 命令了。
步骤 3:安装docker 和 docker-compose
安装依赖包
apt install apt-transport-https ca-certificates curl software-properties-common
执行以下命令,导入 Docker 的 GPG 密钥:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
将 Docker 的官方 APT 仓库添加到系统中:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
再次更新包索引,以便系统能够识别新添加的 Docker 仓库:
apt update
安装 Docker CE(社区版):
apt install docker-ce
安装完成后,启动 Docker 并设置开机自启动:
systemctl start docker
systemctl enable docker
通过运行以下命令来验证 Docker 是否安装成功:
docker --version
输出类似如下内容,表示安装成功:Docker version 20.10.8, build 3967b7d
下载 Docker Compose
从 GitHub 上下载 Docker Compose 的最新稳定版本:
apt install jq -y
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r .tag_name)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
此命令会下载 Docker Compose 并将其保存到 /usr/local/bin/docker-compose。
为 Docker Compose 文件授予可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
运行以下命令验证 Docker Compose 是否成功安装:
docker-compose --version
输出类似如下内容,表示安装成功:
docker-compose version 1.29.2, build 5becea4c
将当前用户添加到 Docker 组(推荐)
如果你不希望每次都使用 sudo,可以将当前用户添加到 docker 组,这样就能直接运行 Docker 命令而无需 sudo。
步骤:
将当前用户(
fenxiang)添加到 Docker 组:sudo usermod -aG docker fenxiang这会将用户
fenxiang添加到 Docker 组。退出当前会话并重新登录,或者运行以下命令来应用组的更改:
newgrp docker或者退出并重新登录,以便
fenxiang用户可以继承新的组权限。之后,你就可以直接运行 Docker 和 Docker Compose 命令,而无需使用
sudo了:docker-compose up -d验证权限是否生效
在你将用户添加到 docker 组之后,验证一下是否生效:
docker ps
如果没有出现权限问题,并且能够成功列出正在运行的容器,那么权限已经正确配置。
步骤 4:安装acme
安装很简单,一条命令:
curl https://get.acme.sh | sh -s email=ssy329504125@gmail.com
export CF_Key="763eac4f1bcebd8b5c95e9fc50d010b4"
export CF_Email="alice@example.com"
./acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'
安装证书
acme.sh --install-cert -d uiuuyr.top \
--key-file /usr/local/nginx/conf/cert/key.pem \
--fullchain-file /usr/local/nginx/conf/cert/cert.pem
