在Ubuntu中使用Apache2部署项目

1. 安装Apache2

bash 复制代码
sudo apt update
sudo apt install apache2 -y

安装完成后,Apache会自动启动,通过浏览器访问 http://服务器IP 应看到默认的Apache欢迎页。

2. 配置防火墙(UFW)

bash 复制代码
sudo ufw allow 'Apache'  # 允许Apache通过防火墙
sudo ufw status  # 检查状态

3. 部署项目文件

  • 自定义目录:/var/www/

若需使用其他目录(如/var/www/myproject),需确保Apache有权限访问:

bash 复制代码
#myproject替换成你的项目名字
sudo mkdir -p /var/www/myproject
sudo chown -R $USER:$USER /var/www/myproject  # 赋予当前用户权限
sudo chmod -R 755 /var/www/myproject  # 设置目录权限
  • 自定义html页面
bash 复制代码
echo '<!DOCTYPE html>
<html>
<head>
    <title>我的项目</title>
</head>
<body>
    <h1>Hello World!</h1>
</body>
</html>' | sudo tee /var/www/myproject/index.html > /dev/null

4. 配置虚拟主机

为每个项目创建独立的配置文件,避免冲突:

bash 复制代码
sudo cp /etc/apache2/sites-available/000-default.conf 
		/etc/apache2/sites-available/myproject.conf

编辑配置文件:

bash 复制代码
sudo nano /etc/apache2/sites-available/myproject.conf

修改以下内容(示例):

bash 复制代码
<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName myproject.com  # 或服务器IP
    DocumentRoot /var/www/myproject
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/myproject>
        Options Indexes FollowSymLinks
        AllowOverride All  # 允许.htaccess覆盖配置
        Require all granted
    </Directory>
</VirtualHost>

启用配置并重启Apache:

bash 复制代码
sudo a2ensite myproject.conf
sudo a2dissite 000-default.conf  # 可选:禁用默认配置
sudo systemctl restart apache2   # 重启Apache2

5. 测试与调试

  • 检查语法错误:
bash 复制代码
sudo apache2ctl configtest

以上就可以正常使用Http进行访问了,如果要设置成Https看后续操作,不过我这个Https只是测试项目使用,因为我没有域名,所以没办法申请Let's Encrypt的受信任的证书。

设置Https访问

  1. 安装必要软件
bash 复制代码
sudo apt update
sudo apt install apache2 openssl
  1. 生成自签名SSL证书
bash 复制代码
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/ssl/private/apache-selfsigned.key \
  -out /etc/ssl/certs/apache-selfsigned.crt \
  -subj "/C=US/ST=State/L=City/O=Organization/CN=localhost"

说明:
CN=localhost:本地测试时使用localhost作为通用名。
证书有效期为365天,到期后需重新生成。

  1. 启用SSL模块
bash 复制代码
sudo a2enmod ssl
sudo systemctl restart apache2
  1. 配置SSL虚拟主机

手动创建ssl配置文件:

bash 复制代码
sudo nano /etc/apache2/sites-available/localhost-ssl.conf
  • 内容:
bash 复制代码
<VirtualHost *:443>
    ServerName localhost
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
    SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
</VirtualHost>
  1. 启用SSL虚拟主机
bash 复制代码
sudo a2ensite localhost-ssl.conf
sudo systemctl reload apache2
  1. 配置HTTP到HTTPS的重定向
    修改默认虚拟主机配置
bash 复制代码
sudo nano /etc/apache2/sites-available/000-default.conf
  • 添加以下内容:
bash 复制代码
<VirtualHost *:80>
    ServerName localhost
    Redirect permanent / https://localhost/
</VirtualHost>

启用重写模块:

bash 复制代码
sudo a2enmod rewrite
sudo systemctl reload apache2

总结

  • 自签名证书:仅适用于本地测试,生产环境需使用受信任的证书(如Let's Encrypt)。
  • 重定向:通过修改Apache配置或.htaccess实现HTTP到HTTPS的自动跳转。
  • 信任证书:浏览器会提示证书不安全,本地测试时可忽略或手动信任。
相关推荐
2601_965619694 分钟前
历史解说视频怎么做:青铜器瓷器文物画面自动对齐的完整教程
运维·nginx·音视频
LiaoWL12312 分钟前
从零开始学 Linux(二):Shell 脚本入门与文本处理实战
linux·运维·服务器
.道阻且长.27 分钟前
Linux软件包管理器
linux·运维·ubuntu·职场和发展·centos
想做小南娘,发现自己是女生喵1 小时前
第二周学习文档 Linux C 文件操作
linux·c语言·学习
元岳数字人小元1 小时前
一台终端兼顾接待与咨询,AI数字人对话赋能线下多场景服务
运维·人工智能·人机交互·交互·语音识别·源代码管理
djjjx.1 小时前
Linux进程篇(三):深度硬核!全面起底 Linux 进程状态变化与内核链表动态解绑
linux·运维·服务器
乔旭伟1 小时前
Linux 服务器环境搭建实战笔记:最小化安装、Docker Compose 编排与上线检查全流程
linux·服务器·笔记
Chenyu_3109 小时前
DPDK、TC 和 XDP:Linux 高性能网络到底在优化什么
linux·服务器·网络·缓存
qqxiaoxingxing9 小时前
HR重复性工作自动化落地指南:先梳理任务边界,再选工具
运维·自动化