云服务器网站部署
前言
本来是top10知识复习与巩固的,结果复习到了xss,之前一直没有搞服务器,每次都是网上搜索解决的,干脆就长期买断一个服务器吧。这样就写了这篇文章。
Ubuntu
服务器安装
由于是云服务,压根就没有安装系统这一步,这我也就直接跳过了
- 大学生嫖一个三大云厂商服务器
- 我个人选择的是ubuntu22.04,无他,centos不更新了,最开始我也是学的centos的,但是后面慢慢转到了ubuntu
添加用户
既然上了公网,这里就不推荐root执行,以及root远程登录了,怎么说也是学安全的,总不能一直使用root登录吧(我们导师每次看到我虚拟机的root账户都要蛐蛐我)。
- 首先使用aliyun自带的web远程登录(这里就是root登录,而且是免密的)
1 | useradd -m -s /bin/bash -G sudo -c "ssh access" username |
- 我这里就是创建了家目录,以及指定了登录shell,写了一个注释,分配了sudo权限
| 选项 | 解释 |
|---|---|
-c, --comment COMMENT |
添加注释,通常用于填写用户全名或描述信息 |
-d, --home HOME_DIR |
指定用户的主目录路径 |
-m, --create-home |
如果主目录不存在,则自动创建主目录 |
-M |
不创建用户的主目录 |
-D, --defaults |
显示或修改默认的 useradd 配置 |
-e, --expiredate EXPIRE_DATE |
设置账户的过期日期,格式为 YYYY-MM-DD |
-f, --inactive INACTIVE |
设置密码过期后,账户被禁用前的天数 |
-g, --gid GROUP |
指定用户的主要组(组名或 GID) |
-G, --groups GROUPS |
指定用户所属的附加组列表,多个组用逗号分隔 |
-k, --skel SKEL_DIR |
指定骨架目录,用于复制文件到用户主目录(需配合 -m 使用) |
-r, --system |
创建系统账户 |
-s, --shell SHELL |
指定用户的登录 shell |
-u, --uid UID |
指定用户的 UID(用户 ID) |
-U, --user-group |
创建与用户名同名的组,并将其作为用户的主要组 |
允许用户ssh密码登录
aliyun的云服务器默认是禁止ssh密码登录的,你用xshell连接服务器,密码选项是无法选择的,只能用公钥和密码登录(虽然这样更安全,但真不符合我的习惯,我的这小云服务器还有高级hei客来打吗?那正好我学习学习技术)
给上一节创建的用户设置密码
1
passwd username
切换到创建的username,然后编辑/etc/ssh/sshd_config
1
sudo vim /etc/ssh/sshd_config
将PasswordAuthentication改为yes即可,保存退出
1
PasswordAuthentication yes
重启ssh服务
1
systemctl restart ssh
nginx
安装apache2也可以进行网站服务,但是我这里选择nginx,因为nginx要小一点(符合我这2核2g的小云服务器)
- 安装nginx
1 | sudo apt install -y nginx |
- 设置为开机自启
1 | sudo systemctl enable nginx |
- 重启nginx服务
1 | sudo systemctl restart nginx |
- 开启aliyun80端口安全组,访问网站(有下面图片就完成了)

php
我这个服务器主要是写题,所以主流语言还是php7.4.3
添加第三方仓库,获取apt软件源
1
2sudo add-apt-repository ppa:ondrej/php -y
sudo apt update安装php7.4.3,以及一系列插件
1 | sudo apt install -y php7.4 php7.4-fpm php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-zip php7.4-bcmath php7.4-json |
- php-fpm: PHP 进程管理器,Nginx 必须配合它使用
- php-mysql: 让 PHP 能连接数据库
- php-curl, php-gd, php-mbstring, php-xml, php-zip: 网站常用功能支持(根据后缀,应该也能知道是支持一系列格式的)
- gd:处理图片,curl:抓取流量,mbstring:处理其他编码,xml:处理xml文档,zip:处理解压缩
将php-fpm设为开机自启,并且重启该服务
1
2sudo systemctl enable php7.4-fpm
sudo systemctl restart php7.4-fpm备份配置文件,并进行修改
1
2sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
sudo vim /etc/nginx/sites-available/default找到如下代码块(将注释掉取消掉,php-cgi的注释保留)

检测nginx语法是否有问题
1
sudo nginx -t
重新加载nginx
1
sudo systemctl reload nginx
写一个info探针,测试是否部署成功
1
2
3
4sudo vim /var/www/html/phpinfo.php
# 文件中写入
<?php phpinfo()?>访问网站,后接uri:phpinfo.php

mysql
参考文章:Ubuntu 22.04 安装 MySQL 5.7 完整指南_ubuntu22.04安装mysql5.7-CSDN博客
现在mysql的通用版本是8以上,我这里是做题环境,所以用mysql5.7
清除现有的mysql安装
1
2
3
4
5
6
7
8
9
10
11
12# 停止 MySQL 服务
sudo systemctl stop mysql
# 卸载现有 MySQL 包
sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
# 删除配置文件和数据
sudo rm -rf /etc/mysql /var/lib/mysql
# 清理自动安装的依赖
sudo apt autoremove
sudo apt autoclean下载mysql5.7.42
1
2
3
4wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.42-1ubuntu18.04_amd64.deb-bundle.tar
# 解压包
tar -xvf mysql-server_5.7.42-1ubuntu18.04_amd64.deb-bundle.tar个人推荐move到opt下面,并且创建一个目录mysql
安装依赖
1
sudo apt install libaio1 libmecab2 libtinfo5 -y
一键安装脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
set -e
echo "开始安装 MySQL 5.7..."
# 按正确顺序安装 MySQL 包
echo "1. 安装 mysql-common..."
sudo dpkg -i mysql-common_5.7.42-1ubuntu18.04_amd64.deb
echo "2. 安装 libmysqlclient20..."
sudo dpkg -i libmysqlclient20_5.7.42-1ubuntu18.04_amd64.deb
echo "3. 安装 libmysqlclient-dev..."
sudo dpkg -i libmysqlclient-dev_5.7.42-1ubuntu18.04_amd64.deb
echo "4. 安装 libmysqld-dev..."
sudo dpkg -i libmysqld-dev_5.7.42-1ubuntu18.04_amd64.deb
echo "5. 安装 mysql-community-client..."
sudo dpkg -i mysql-community-client_5.7.42-1ubuntu18.04_amd64.deb
echo "6. 安装 mysql-client..."
sudo dpkg -i mysql-client_5.7.42-1ubuntu18.04_amd64.deb
echo "7. 安装 mysql-community-server..."
sudo dpkg -i mysql-community-server_5.7.42-1ubuntu18.04_amd64.deb
echo "8. 安装 mysql-server..."
sudo dpkg -i mysql-server_5.7.42-1ubuntu18.04_amd64.deb
echo "MySQL 5.7 安装完成!"添加执行权限,并执行
1
2sudo chmod +x install_mysql.sh
sudo ./install_mysql.sh初始化配置(这个脚本是你安装完成之后就有的,不用找在哪)
1 | sudo mysql_secure_installation |
VALIDATE PASSWORD COMPONENT can be used to test passwords...
- 输入:
n(否),我这小机器就不设置复杂的密码校验了
Change the password for root ?
- 输入:
Y(是)
Remove anonymous users?
- 输入:
Y(是)
Disallow root login remotely?
- 输入:
Y(是) ,为了安全,禁止 root 远程连接,我们稍后会创建专用用户。
Remove test database and access to it?
- 输入:
Y(是)
Reload privilege tables now?
- 输入:
Y(是)
2g内存的性能优化,以及改编码
1
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改下面信息,没有就加上
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21[mysqld]
bind-address = 127.0.0.1
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 2G 内存核心优化
innodb_buffer_pool_size = 256M
# 日志大小:减小日志文件以节省磁盘和内存映射
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
# 连接数限制:小网站不需要太多并发连接,减少每个连接的内存开销
max_connections = 100
# 关闭性能模式 (Performance Schema)
performance_schema = OFF
# 7. 临时表大小限制
tmp_table_size = 32M
max_heap_table_size = 32M设置为开机自启,并且重启该服务
1
2sudo systemctl enable mysql
sudo systemctl restart mysql测试是否成功连接
登录mysql
1
mysql -u root -p
创建测试数据库(一次输入)
1
2
3
4
5
6
7
8
9
10
11
12
13
14-- 1. 创建数据库 (例如叫 mywebsite)
CREATE DATABASE mywebsite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 2. MySQL 5.7 推荐使用 mysql_native_password 认证插件,兼容性最好
CREATE USER 'webuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
-- 3. 授予该用户对特定数据库的所有权限
GRANT ALL PRIVILEGES ON mywebsite.* TO 'webuser'@'localhost';
-- 4. 刷新权限
FLUSH PRIVILEGES;
-- 5. 退出
EXIT;创建测试文件/var/www/html/db_test.php
写入下面内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$servername = "localhost";
$username = "webuser";
$password = "yourpassword"; // 替换为你刚才设置的密码
$dbname = "mywebsite";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "成功连接到 MySQL 5.7! 当前数据库版本信息:<br>";
// 获取服务器版本
$result = $conn->query("SELECT VERSION() as version");
$row = $result->fetch_assoc();
echo "MySQL Version: " . $row["version"];
$conn->close();
linux的phpstudy
这个其实可以一键配置lnmp或者lamp环境,但是我这小服务器,我就直接手动配置的lnmp
这个配置很简单,首先有一个纯净的ubuntu,去phpstudy的官网,用脚本一键下载即可
小皮面板安装脚本下载 - 一键部署 Linux 网站环境 | 支持 CentOS/Ubuntu/Debian
1 | sudo wget -O install.sh https://dl.xp.cn/dl/xp/install.sh && sudo bash install.sh |








