从零搭建远程服务器网站步骤
编辑日期: 2024-07-18 文章阅读: 次
从零开始在新的 Amazon EC2 服务器上搭建完整环境的详细步骤。 服务器是Ubuntu类似系统。
包括安装 Miniconda、Apache2、GitHub、配置 HTTPS 访问、应用程序代理到 8099 端口、复制 Let's Encrypt 证书以及设置负载均衡。
1. 准备工作
登录到新服务器
2. 安装 Miniconda
下载并安装 Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
创建和激活环境
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 仓库
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
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
<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 访问、应用程序代理和负载均衡。