从零搭建远程服务器网站步骤


ed2ed47d6a1cbfc07e1da25773e59ef0.gif

作者:郭震

从零开始在新的 Amazon EC2 服务器上搭建完整环境的详细步骤。

服务器是Ubuntu类似系统。

包括安装 Miniconda、Apache2、GitHub、配置 HTTPS 访问、应用程序代理到 8099 端口、复制 Let's Encrypt 证书以及设置负载均衡。

1. 准备工作

登录到新服务器

2. 安装 Miniconda

下载并安装 Miniconda
# 下载 Miniconda 安装脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 运行安装脚本
bash Miniconda3-latest-Linux-x86_64.sh

# 按提示进行安装,完成后重启 shell
source ~/.bashrc
创建和激活环境
# 创建一个新的 conda 环境
conda create -n myenv python=3.9

# 激活环境
conda activate myenv

3. 安装 Apache2 和配置 GitHub

安装 Apache2
sudo apt-get update
sudo apt-get install apache2
安装 Git
sudo apt-get install git
克隆 GitHub 仓库
# 克隆您的 GitHub 仓库
git clone https://github.com/yourusername/yourrepository.git /var/www/yourrepository

4. 配置 HTTPS 访问

安装 Certbot
sudo apt-get install certbot python3-certbot-apache
获取 Let's Encrypt 证书
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com

按提示完成证书的获取和配置。

Certbot 将自动配置 Apache 以使用这些证书。

复制证书到另一台服务器

假设另一台服务器的 IP 为 123.21.21.2,执行以下命令将证书复制到另一台服务器:

scp -i /path/to/your.pem /etc/letsencrypt/live/yourdomain.com/* ubuntu@123.21.21.2:/etc/letsencrypt/live/yourdomain.com/

scp -i /path/to/your.pem /etc/letsencrypt/archive/yourdomain.com/* ubuntu@123.21.21.2:/etc/letsencrypt/archive/yourdomain.com/

scp -i /path/to/your.pem /etc/letsencrypt/renewal/yourdomain.com.conf ubuntu@123.21.21.2:/etc/letsencrypt/renewal/

5. 配置应用程序代理到 8099 端口

配置 Apache 虚拟主机

编辑 Apache 虚拟主机配置文件:

sudo vim /etc/apache2/sites-available/yourdomain.com.conf

添加以下内容:

<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com

    # Redirect HTTP to HTTPS
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =yourdomain.com [OR]
    RewriteCond %{SERVER_NAME} =www.yourdomain.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com

    DocumentRoot /var/www/yourrepository

    <Directory /var/www/yourrepository>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

    ProxyPreserveHost On
    ProxyPass / http://localhost:8099/
    ProxyPassReverse / http://localhost:8099/

    ErrorLog ${APACHE_LOG_DIR}/yourdomain.com_error.log
    CustomLog ${APACHE_LOG_DIR}/yourdomain.com_access.log combined
</VirtualHost>
</IfModule>

这里一定不要错:

ProxyPass / http://localhost:8099/
ProxyPassReverse / http://localhost:8099/

还有这里,下面文件若没有,手动创建,标准内容,从申请域名的最原始服务器那里拷贝:

Include /etc/letsencrypt/options-ssl-apache.conf

启用新站点并重启 Apache:

sudo a2ensite yourdomain.com.conf
sudo systemctl reload apache2

6. 设置负载均衡

在两台服务器上安装并配置 Apache 的负载均衡模块。

安装并启用模块

在两台服务器上执行:

sudo a2enmod proxy
sudo a2enmod proxy_balancer
sudo a2enmod proxy_http
sudo a2enmod lbmethod_bybusyness
配置负载均衡

编辑负载均衡器服务器上的配置文件,例如 loadbalancer.conf:

sudo vim /etc/apache2/sites-available/loadbalancer.conf

添加以下内容:

<Proxy "balancer://mycluster">
    BalancerMember http://123.21.21.1:8099 route=1
    BalancerMember http://123.21.21.2:8099 route=2
    ProxySet lbmethod=bybusyness
</Proxy>

<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{BALANCER_WORKER_ROUTE}e" proxy_combined
    CustomLog ${APACHE_LOG_DIR}/yourdomain.com_access.log proxy_combined

    ErrorLog ${APACHE_LOG_DIR}/yourdomain.com_error.log

    # mod_status 配置
    <IfModule mod_status.c>
        <Location /server-status>
            SetHandler server-status
            Require all granted
        </Location>
    </IfModule>

    ProxyPreserveHost On
    ProxyPass / balancer://mycluster/
    ProxyPassReverse / balancer://mycluster/

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =yourdomain.com [OR]
    RewriteCond %{SERVER_NAME} =www.yourdomain.com
    RewriteRule ^/(.*)$ balancer://mycluster/$1 [P,L]
</VirtualHost>

启用新站点并重启 Apache:

sudo a2ensite loadbalancer.conf
sudo systemctl reload apache2

7. 验证配置

通过浏览器访问 https://yourdomain.com,确保可以正确访问您的应用程序,并通过 https://yourdomain.com/server-status 查看负载均衡状态。

这样,您就成功配置了一个从零开始的完整环境,包括 Miniconda、Apache2、GitHub、HTTPS 访问、应用程序代理和负载均衡。

感谢你的支持,原创不易,希望转发,点击,以及收藏,也可以点击阅读原文更多AI知识分享,同时也可以关注知识星球:郭震AI学习星球

最后,若想利用副业时间提高技能和收入,可以加入我的星球:

87c70b8da5f0d76789d756484cc17430.png

长按上图二维码查看「郭震AI学习星球」

  • 更多Python、数据分析、爬虫、前后端开发、人工智能等教程参考.

  • 以上全文,欢迎继续点击阅读原文学习,阅读更多AI资讯,[请点击这里]  https://ai-jupyter.com/

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值