好,现在搞一下个人网站,先在阿里云或者腾讯云购买一个服务器,性能不用太好,2核就好,磁盘的话看自己需求,我的是60GB ,
首先先用Xshell或者MobaXterm远程连接服务器,我选的是sentOS服务器,
ssh root@服务器ip
我看服务器名字不好看干脆改了下 ,直接 vim /etc/hosts修改就行 。
之后可以先美化一下命令提示符,
- 颜色代码:
- 通过 ANSI 转义码为文字上色,格式为
-
\033[颜色代码m
常用为31
红,32
绿,33
黄,34
蓝,35
紫,36
青,0
重置样式 - 常用变量:
\u
:用户名\h
:主机名\W
:当前目录(短格式)\w
:当前目录(完整路径)\$
:提示符($
为普通用户,#
为 root)\t
:显示时间(HH:MM:SS)$(__git_ps1 " %s")
:显示Git分支(需先安装Git)
直接vim ~/.bashrc之后写入ps1变量或者
PS1='[\[\033[31m\]\u@\h\[\033[0m\]]\[\033[32m\] [\t]\[\033[0m\][\w] \$ ' >~/.bashrc #懒人专用
效果如下
安装中间件
首先更新软件包
sudo yum update -y
之后安装中间件,我选择的是Apache
sudo yum install httpd -y
启动服务并设置开机自启
systemctl start httpd #启动服务
systemctl enable httpd #设置开机自启
检查一下服务状态
systemctl status httpd
由于我用的阿里云服务器,添加防火墙规则直接在服务器管理里面直接就可以写,
如果是用指令的话就是
sudo firewall-cmd --permanent --add-service=http #开放 HTTP 端口(80)
sudo firewall-cmd --permanent --add-service=https #开放 HTTPS 端口(443,可选)
sudo firewall-cmd --reload #重载防火墙规则
基本配置
这时候已经可以通过其他机器访问到服务器了
/etc/httpd/conf/httpd.conf #主文件位置
更新服务器名称和网站的根目录路径
sudo vi /etc/httpd/conf/httpd.conf
# 找到 "ServerName" 行,取消注释并修改为:
ServerName your_domain.com:80
# 找到 "DocumentRoot" 行,修改为:
DocumentRoot "/var/www/html/your_site"
# 同时修改下方的 "<Directory>" 路径
sudo systemctl reload httpd
#重启服务
之后就可以在 /var/www/html 目录下创建自己的网页了
cd /var/www/html
touch index.html
echo "<h1>Hello,World</h1>" > index.html
之后再次访问服务器80端口就会看到啦
安装PHP
dnf install php php-mysqlnd php-fpm
systemctl start php-fpm && sudo systemctl enable php-fpm
安装数据库
sudo dnf install mariadb-server
sudo systemctl start mariadb && sudo systemctl enable mariadb
sudo mysql_secure_installation # 设置root密码并删除测试数据库
mysql -u root -p 登录一下看看
我之前用的mysql,这次尝试一下 mariadb,两者差距不大
之后重启Apache
sudo systemctl restart httpd
SSL证书配置(HTTPS)
安装Certbot
sudo dnf install epel-release # 添加EPEL仓库
sudo dnf install certbot python3-certbot-apache
获取证书并自动配置
sudo certbot --apache # 按提示操作,选择域名和加密方式
配置apache虚拟机(可选)
什么是apache虚拟机?
Apache 虚拟主机是 Apache 服务器的一个核心功能,它允许你在同一台服务器上托管多个独立的网站
为什么需要虚拟主机?
-
托管多个网站
如果服务器只有一个默认网站配置,所有请求都会指向同一个网站。通过虚拟主机,可以为每个网站分配独立的域名(如site1.com
、site2.com
),让服务器根据域名区分并响应不同的网站。 -
灵活性和可维护性
每个虚拟主机可以有自己的:- 文档根目录(如
/var/www/site1
和/var/www/site2
) - 配置文件(如日志路径、权限设置)
- SSL 证书(为不同网站启用 HTTPS)
- 文档根目录(如
-
安全性隔离
不同网站的代码和文件彼此隔离,避免一个网站的漏洞影响其他网站。 -
性能优化
可以为每个虚拟主机单独配置资源限制(如内存、CPU),优化服务器性能。
虚拟主机的两种类型
- 基于域名的虚拟主机
通过域名区分网站(最常用),例如:site1.com
→ 指向/var/www/site1
site2.com
→ 指向/var/www/site2
- 基于 IP 的虚拟主机
通过不同 IP 地址区分网站(需服务器有多个 IP)。
如果没购买域名需要通过服务器 IP 直接访问
- 获取服务器公网 IP:
- 登录服务器后,运行
curl ifconfig.me
或curl ipinfo.io/ip
。
- 登录服务器后,运行
- 访问网站:
- 在浏览器输入
http://服务器IP
(如http://192.168.1.100
)。
- 在浏览器输入
2. 本地测试环境
- 在本地开发时,使用
localhost
或127.0.0.1
访问。
步骤:
1,创建配置文件
sudo vi /etc/httpd/conf.d/你的域名.conf
2.添加内容
<VirtualHost *:80>
ServerName 你的域名或IP
DocumentRoot /var/www/html/网站目录
<Directory /var/www/html/网站目录>
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/你的域名-error.log
CustomLog /var/log/httpd/你的域名-access.log combined
<Directory "/var/www/my-dynamic-site"> #启动PHP解析
AllowOverride All
Require all granted
Options -Indexes +FollowSymLinks
SetHandler "proxy:unix:/var/run/php-fpm.sock|fcgi://localhost"
</Directory>
</VirtualHost>
没有域名可以通过不同端口号区分网站
# 网站1:使用默认端口 80
<VirtualHost *:80>
DocumentRoot /var/www/site1
# ...其他配置...
</VirtualHost>
# 网站2:使用端口 8080
<VirtualHost *:8080>
DocumentRoot /var/www/site2
# ...其他配置...
</VirtualHost>
重启阿帕奇
sudo systemctl restart httpd
注
在配置虚拟主机时启用 PHP 解析,是为了让服务器能够正确处理动态内容(如 .php
文件)。以下是详细解释:
一、动态内容 vs 静态内容
- 静态内容(如 HTML、CSS、图片)由服务器直接发送,无需处理。
- 动态内容(如 PHP)需要服务器执行脚本,生成 HTML 后再发送给浏览器。
如果不启用 PHP 解析,浏览器会收到未执行的 PHP 代码(如 <?php echo "Hello"; ?>
),而不是预期的 "Hello"。
二、为什么需要显式启用 PHP 解析?
- Apache 默认不处理 PHP
Apache 本身不解析 PHP,需通过以下两种方式之一:mod_php
模块:直接嵌入 Apache 进程(传统方式,简单但内存占用高)。php-fpm
处理器:通过 FastCGI 协议与 PHP 进程通信(现代推荐方式,更高效)。
- 配置虚拟主机时绑定 PHP 处理器
需要在虚拟主机配置中明确告诉 Apache:- 哪些文件需要 PHP 解析(如
.php
)。 - 如何与 PHP 处理器通信(如通过
ProxyPass
指向php-fpm
)。
- 哪些文件需要 PHP 解析(如
后面就可以往里面写网站啦
完结撒花~