你刚装好Ubuntu 16.04系统,是不是看着黑乎乎的终端界面直发怵?别慌!今天咱们就来唠唠怎么在这老系统上搭个能跑的PHP网站。前几天我帮朋友公司搞迁移,发现他们花大价钱买的服务器居然还在用2016年的系统——哎,你说这技术债堆的...
一、基础环境搭建:别急着敲代码!
先搞明白三件套的关系:Apache是门卫,PHP是厨师,MySQL是仓库管理员。这三兄弟配合不好,网站就得趴窝。
安装顺序不能乱(亲测有效):
- 更新系统:
sudo apt-get update && sudo apt-get upgrade
(等进度条的时候可以泡杯茶) - 装Apachesudo apt-get install apache2`(装完浏览器输localhost试试,看到"It works!"算成功)
- 上PHP7.0:
sudo apt-get install php libapache2-mod-php
(注意!16.04默认是PHP7.0) - 配MySQL:
sudo apt-get install mysql-server php-mysql
(记牢设置的root密码!)
新手必踩的坑:
- 权限问题:装完发现/var/www目录改不了文件?试试
sudo chown -R 你的用户名:www-data /var/www
- 端口冲突:要是80端口被占用了,改这里
/etc/apache2/ports.conf
二、虚拟主机配置:一机多用不是梦
很多小白不知道,同一个服务器能托管多个网站。就像合租房子,大家共用厨房但各有各的房间。
三步创建你的专属空间:
- 新建目录:
sudo mkdir /var/www/你的网站
(名字别用中文!) - **配置文件:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/你的网站.conf
- 改关键参数(用nano或vim):
DocumentRoot /var/www/你的网站ServerName 你买的域名.com
启用配置:sudo a2ensite 你的网站.conf
sudo service apache2 reload
避坑指南:
- 要是403报错,检查
里的Require all granted - 想用漂亮网址?记得启用重写模块:
sudo a2enmod rewrite
三、数据库联调:别让数据睡大觉
见过最离谱的案例:有人把用户密码直接写代码里...咱可不能这么干!
安全连接MySQL的正确姿势:
- 创建专属用户:
mysql> CREATE USER '新用户'@'localhost' IDENTIFIED BY '复杂密码';mysql> GRANT ALL PRIVILEGES ON 数据库名.* TO '新用户'@'localhost';
- PHP连接代码:
php**$conn = new mysqli("localhost", "新用户", "复杂密码", "数据库名");if ($conn->connect_error) die("扑街了: " . $conn->connect_error);
性能优化小技巧:
- 用
mysqli_prepare
防SQL注入 - 频繁查询的结果存到Memcached(装个
sudo apt-get install php-memcached
)
四、常见问题急救箱
场景1:PHP文件直接显示代码
👉 检查:sudo apache2ctl -M | grep php
看有没有php7_module
👉 解决:sudo apt-get install lib2-mod-php
场景2:图片上传失败
👉 检查:/etc/php/7.0/apache2/php.ini
里的upload_max_filesize
和post_max_size
👉 推荐设置:
upload_max_filesize = 20Mpost_max_size = 25M
场景3:突然报500错误
👉 查看日志:tail -f /var/log/apache2/error.log
👉 常见原因:文件权限不对或.htaccess写错了
五、小编的私房建议
干了十年运维的老张跟我说:"在Ubuntu 16.04上搞开发,就跟开老爷车似的——稳是稳,就是配件不好找。"
真要长期用的话:
- 源码管理:别直接在服务器改代码,用Git同步才是正道
- 定期备份:写个cron任务每天自动打包网站和数据库
- 安全更新:虽然系统老了,
sudo unattended-upgrade
还是要开着
最后说句掏心窝的:新手别追求最新技术栈,把LAMP玩明白了比啥都强。就像学做菜,先把蛋炒饭做到极致,分子料理的事儿。下次碰到有人吹Docker多牛逼,你就问他——能给我讲讲Apache的MPM工作原理不?