步骤 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

步骤

  1. 将当前用户(fenxiang)添加到 Docker 组:

    sudo usermod -aG docker fenxiang
    

    这会将用户 fenxiang 添加到 Docker 组。

  2. 退出当前会话并重新登录,或者运行以下命令来应用组的更改:

    newgrp docker
    

    或者退出并重新登录,以便 fenxiang 用户可以继承新的组权限。

  3. 之后,你就可以直接运行 Docker 和 Docker Compose 命令,而无需使用 sudo 了:

    docker-compose up -d
    
  4. 验证权限是否生效

在你将用户添加到 docker 组之后,验证一下是否生效:

docker ps

如果没有出现权限问题,并且能够成功列出正在运行的容器,那么权限已经正确配置。

步骤 4:安装acme

安装很简单,一条命令:

curl https://get.acme.sh | sh -s email=ssy329504125@gmail.com

acme使用说明

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