在服务器Linux环境下建站是当前互联网主流的部署方式,其稳定性、安全性和灵活性深受开发者青睐,整个过程涉及系统环境配置、服务搭建、网站部署及安全优化等多个环节,下面将详细拆解各步骤操作要点。
前期准备:服务器与系统基础配置
首先需选择合适的服务器,云服务器如阿里云ECS、腾讯云CVM等是常见选择,配置建议根据网站类型(如个人博客、企业官网、电商网站)分别规划CPU、内存、存储及带宽,操作系统优先推荐CentOS 7+/8+或Ubuntu 20.04/22.04 LTS版本,两者社区支持完善,软件资源丰富。
系统初始化配置包括:
- 网络设置:确保服务器有固定公网IP,配置防火墙开放必要端口(如HTTP 80、HTTPS 443、SSH 22),CentOS使用
firewall-cmd --permanent --add-port=80/tcp
命令,Ubuntu则用ufw allow 80/tcp
。 - 更新系统:执行
yum update
(CentOS)或apt update && apt upgrade -y
(Ubuntu)安装最新安全补丁。 - 创建用户:避免直接使用root账户,通过
adduser username
创建普通用户,并赋予sudo
权限(编辑/etc/sudoers
文件添加username ALL=(ALL) ALL
)。
环境搭建:LAMP/LNMP架构部署
网站运行需Web服务器、数据库及编程语言环境,主流组合为LAMP(Linux+Apache+MySQL+PHP)或LNMP(Nginx替代Apache),以下以LNMP为例展开(Nginx在高并发场景性能更优)。
安装Nginx
CentOS通过EPEL源安装:
yum install epel-release -y && yum install nginx -y
Ubuntu需先添加Nginx官方源:
apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring -y curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" | tee /etc/apt/sources.list.d/nginx.list apt update && apt install nginx -y
安装后启动服务并设置开机自启:systemctl start nginx && systemctl enable nginx
。
安装数据库(MySQL/MariaDB)
CentOS 7+默认使用MariaDB(MySQL分支):
yum install mariadb-server mariadb -y systemctl start mariadb && systemctl enable mariadb
Ubuntu可直接安装MySQL:
apt install mysql-server -y mysql_secure_installation # 初始化安全配置,设置root密码、移除匿名用户等
安装PHP及扩展
以PHP 7.4为例,CentOS需Remi源:
yum install epel-release -y && yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y yum install --enablerepo=remi-php74 php php-fpm php-mysql php-gd php-json php-mbstring -y
Ubuntu直接通过PPA安装:
apt install software-properties-common -y add-apt-repository ppa:ondrej/php -y apt update && apt install php7.4 php7.4-fpm php7.4-mysql php7.4-gd php7.4-json php7.4-mbstring -y
启动PHP-FPM:systemctl start php-fpm && systemctl enable php-fpm
。
网站部署:配置虚拟主机与文件管理
假设部署一个域名example.com
的网站,需完成以下步骤:
创建网站目录及数据库
mkdir -p /var/www/example.com # 网站根目录 chown -R nginx:nginx /var/www/example.com # 设置所有者
登录MySQL创建数据库:mysql -u root -p
,执行:
CREATE DATABASE example_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
配置Nginx虚拟主机
编辑Nginx配置文件/etc/nginx/conf.d/example.com.conf
:
server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /.ht { deny all; } }
检查配置语法并重启Nginx:nginx -t && systemctl reload nginx
。
上传网站文件
可通过SCP(scp -r /local/path username@server_ip:/var/www/example.com
)、FTP(如FileZilla)或Git(git clone
)将网站代码上传至根目录,若为WordPress等程序,需导入数据库并修改配置文件(如wp-config.php
中的数据库信息)。
安全加固:保障服务器与网站安全
Linux服务器安全是建站的重中之重,需从多方面加固:
-
防火墙与SSH安全:
- 仅允许指定IP访问SSH(22端口),编辑
/etc/hosts.deny
添加ALL: ALL
,/etc/hosts.allow
添加ALL: 允许的IP
; - 禁用root SSH登录,修改
/etc/ssh/sshd_config
中的PermitRootLogin no
,使用普通用户sudo提权; - 定期更换SSH密钥,禁用密码登录(设置
PasswordAuthentication no
)。
- 仅允许指定IP访问SSH(22端口),编辑
-
定期更新与漏洞修复:
- 设置自动更新:CentOS使用
yum-cron
,Ubuntu使用unattended-upgrades
; - 使用工具如
clamav
扫描病毒,lynis
进行安全审计。
- 设置自动更新:CentOS使用
-
SSL证书与HTTPS:
- 通过Let’s Encrypt免费签发证书:
certbot --nginx -d example.com
,certbot会自动配置Nginx并启用HTTPS; - 强制HTTPS跳转,在Nginx配置中添加:
if ($scheme != "https") { return 301 https://$host$request_uri; }
- 通过Let’s Encrypt免费签发证书:
-
防攻击措施:
- 安装
fail2ban
拦截暴力破解,配置/etc/fail2ban/jail.local
监控SSH和Nginx日志; - 禁用PHP危险函数(如
exec
、shell_exec
),编辑php.ini
中的disable_functions
参数。
- 安装
维护优化:日常监控与性能调优
-
日志分析:
- Nginx日志位于
/var/log/nginx/
,通过goaccess
工具实时分析访问情况(goaccess /var/log/nginx/access.log
); - 使用
logrotate
定期切割日志,避免单个日志文件过大。
- Nginx日志位于
-
性能优化:
- PHP-FPM优化:调整
pm.max_children
、pm.start_servers
等参数,根据服务器内存配置进程数; - Nginx缓存:开启静态资源缓存(如图片、CSS),配置
proxy_cache_path
和proxy_cache
; - 数据库优化:定期清理冗余数据,添加索引(如
ALTER TABLE table_name ADD INDEX index_name (column)
),使用EXPLAIN
分析查询语句。
- PHP-FPM优化:调整
-
备份策略:
- 全量备份:每周使用
rsync
备份整个网站目录和数据库,脚本示例:rsync -avz /var/www/example.com /backup/website/ mysqldump -u root -p example_db > /backup/database/example_db_$(date +%Y%m%d).sql
- 增量备份:通过
inotify-tools
实时监控文件变化,同步至备份服务器。
- 全量备份:每周使用
相关问答FAQs
Q1:Linux服务器建站选择CentOS还是Ubuntu?
A:两者各有优势,CentOS(现改为Rocky Linux/AlmaLinux)以稳定性著称,适合企业级生产环境,软件包管理采用yum/dnf,依赖EPEL等第三方源;Ubuntu社区活跃,软件更新及时,apt包管理器操作简便,适合新手和需要最新软件版本的场景,若追求长期稳定维护,推荐CentOS Stream或Rocky Linux;若注重生态友好和易用性,Ubuntu更合适。
Q2:网站访问缓慢,如何排查和优化?
A:排查步骤包括:① 检查服务器资源(CPU、内存、IO)使用率,通过top
、htop
或iotop
定位瓶颈;② 分析Nginx/PHP-FPM错误日志,查看是否有脚本错误或配置问题;③ 使用ping
、traceroute
检测网络延迟,排查是否为带宽或运营商问题;④ 通过curl -I -w "Time total: %{time_total}n" -o /dev/null -s http://example.com
测试响应时间,优化措施:升级服务器配置、启用CDN加速、优化数据库查询、压缩静态资源(Nginx配置gzip on
)、使用缓存插件(如Redis、Memcached)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/44088.html