记一次身心俱疲的部署php项目经历
0. 前言
这两天帮狗儿子部署从GitHub上down的php论坛项目,看着那上传时间四年前,我突然有一种不详的预感????。果然,折腾了好久。。。其实还是自己太菜了,服务器啥的搞的少。????
1. 本地部署
首先,先在本地试试能不能跑起来,没怎么写过php代码,用的是集成的wamp环境部署的,嗯,没啥问题。
2. 虚拟机部署
2.1 安装Ubuntu server 14.04
最开始安装的是16.04,但是后来在哪看的说:ubuntu16.04已经选择PHP7.0作为新的基础包了,所以不能再Ubuntu16.04上安装PHP5,如果硬要安装,则会出现依赖问题,而且一般无法解决
而这个项目比较老,装php7会有一些函数不能用,所以老老实实换成了14.04
2.2 修改数据源
#1. 编辑数据源
vi /etc/apt/sources.list
#2.删除全部内容并修改为
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
#3. 更新数据源
apt-get update
2.3 安装apache
#1.更新检查
apt-get update
#2.安装Apache
apt-get install apache2
2.4 安装PHP 5.6
#1. 添加支持php5.6源
add-apt-repository ppa:ondrej/php
#2. 安装php5.6
apt-get update
apt-get install php5.6
apt-get install php5.6-gd
apt-get install php5.6-mysql
apt-get install php5.6-mbstring
apt-get install php5.6-zip
apt-get install php5.6-curl
#3.解决apache无法解析php文件,显示php源码
apt-get install libapache2-mod-php5.6
2.5 安装mysql
apt-get install mysql-client
apt-get install mysql-server
2.6 配置mysql远程访问
mysql -uroot -p
use mysql;
update user set Host='%' where User='root';
flush privileges;
#打开mysql配置文件
vi /etc/mysql/mysql.conf.d/mysqld.cnf
将bind-address = 127.0.0.1注释
#重启mysql服务:
service mysql restart
使用navicat远程连接数据库–>建表
2.7 将代码上传到/var/www/html里
2.8 apache开启伪静态
之前都是常规操作,本以为这样就可以了。结果部署完首页是出来了,点别的页面跳转都是404。百度了一下,说是在虚机配置中没有把AllowOverride 打开,导致无法加载 .htaccess 文件引起的。我最开始还把人家源码里的 .htaccess 文件给删了哈哈哈????
按照网上的说法是修改<Directory></Directory>
里的内容,但是也没说这个东西在哪。我是通过apt安装的apache,没有网上说的http.conf文件。后来经过了解才知道apache2.conf便是主要的配置文件。果然,在这里面找到了<Directory></Directory>
,并做了以下修改
这样改完之后再打开首页。。直接500错误了。第一天我以为这样不行,导致后来又乱折腾,走了很多弯路。直到我想起来,可以看看日志,报的啥错误????
#查看日志
tail -f /var/log/apache2/error.log
Invalid command ‘RewriteEngine’, perhaps misspelled or defined by a module not included in the server configuration…又是啥鸡儿错误????
百度说是打开apache的配置文件httpd.conf ,取消 LoadModule rewrite_module modules/mod_rewrite.so前的注释。。可是我没有httpd.conf,apache2.conf里也没这个东西。
研究了一下原来是这样
模块在mods目录,将./mods-available中可用的建立链接到./mods-enabled即可启用
cp /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
则可将rewrite模块启用
3. 总结
至此终于部署完成。其实最近在做毕设就在想,各种软件框架迅速更迭真是让人难受。大佬们总是能拥抱变化,享受新特性,我这种菜鸡却只能对着网上各种不适用的解决方案欲哭无泪????