在ubuntu上搭建apache服务器的一些坑

前言

最近在阿里云买了一个服务器用来测试个人博客网站,2g内存,40g硬盘,第一年是89块钱。想法是在阿里云上搭建Lamp架构的服务器。系统是ubuntu18,服务器apache2,数据库mysql,服务器脚本语言php。
这个过程对于一个小白来说是万分艰辛,花了3天配置服务器环境,各种坑,痛苦万分。

ubuntu

这个系统是在买服务器时选的,阿里给你装好了。拿到服务器密码后,因为我的笔记本是win10系统,所以按win+r输入cmd,在cmd中利用ssh远程登录服务器。
格式是:ssh 用户名@服务器公网ip地址
回车输入密码,回车登陆,密码自动隐藏。

这里附上ubuntu上常用命令

  • / 返回根目录
  • cd . 当前目录
  • cd … :返回上级目录
  • cd /。。。/。。。 到达所处绝对路径
  • ls 返回当前目录下文件
  • ls -a 返回当前目录下包括隐藏文件的所有文件
  • ls -l 返回所有文件的具体信息
  • find / -name 寻找名字和尖括号里filename一样的文件的绝对路径(输入命令不要加尖括号)
  • df -h 返回系统各盘所用空间,剩余空间
  • rmdir 就是remove删除文件夹
  • mkdir 就是创造一个文件夹
  • rm 删除文件
  • rm -rf 递归删除所有
  • mv 文件名 新名称 就是在当前目录下改名
  • mv 路经/文件 /路经/文件 移动相对路经下的文件到绝对路经下
  • tar –zcvf benet.tar.gz 把目录打包并压缩
  • tar –zxvf benet.tar.gz 压缩包的文件解压恢复
  • dpkg -l 获得安装的软件的信息

在第一次进入ubuntu时,需要一些配置操作,更新啥的,可以自行百度,主要是用apt-get下载各类包和软件。

apache2

服务器直接使用apt-get install apache2,接着会打印出下载所需的一些信息,按回车就行。
#apache 的常用目录
#默认文档根目录是在 ubuntu 上的 /var/www 目录
#配置文件是 / etc/apache2/apache2.conf
#配置存储在的子目录在/etc/apache2 目录
#重启,执行:

sudo /etc/init.d/apache2 restart

#开启,执行:

sudo /etc/init.d/apache2 start

#关闭,执行:

sudo /etc/init.d/apache2 stop

mysql

apt下载最新mysql,下载完毕命令登陆,首次登陆可以不要密码
sudo apt-get install mysql-server
mysql -u root -p

这边有一个坑,就是明明修改了数据库密码就是能够无密码登陆。
这里附上解决的链接:
mysql无密码登陆问题解决

php

服务器脚本语言我选择的php7.2,这是我格外下载的,在这里提一下,php5和php7有一个不同点就是关于数据库的连接,php5用的是mysql,但是php7淘汰它,采用,mysqli,或者pdo_mysql。所以安装了php之后我才发现忘记装数据库拓展了,心累。
在这种情况下,如何安装php拓展,要看php的安装方式,如果你是用源码解压编译安装的就用源码的方式拓展,如果是用apt-get安装的就用apt-get直接安装拓展。
在这里给一些解决方案:
apt安装的:
apt-get1
apt-get2
源码安装的:
源码1
源码2
这些方法都可以试试,如果不行,自行百度吧。

你可以通过命令php -m来查看php安装的模块。这里注意,你ubuntu里面可能安装了不止一个php版本,像我就有php5,php7,php7.2三个版本,你可以用php7.2 -m查看对应版本的modules。
当你看到了mysqli,或者pdo_mysql就成功了。你的php代码就可以连接数据库并操作了。
在这里插入图片描述

apache2和php版本的坑

apache2服务器开启后,在/etc/apache2目录下可能有一个apache2.conf文件,这就是新版的apache2配置文件,它是一个总的配置文件,里面include了其他的子配置文件。默认的apache2的服务器文件夹是,var/www/html/目录,在该目录下面的index.html或者index.php作为网站的根目录,就是直接输入ip地址进入的第一个文件,也就是网站首页。
默认情况下,在apt-get install 下载apache2时,自动下载了php7.0这个版本,坑啊,apache2在面对客户端ajax请求时会编译请求的php文件,再将结果返回给客户端,可是我写好的php文件是用来操作数据库并提取信息的,无论怎么请求就是报错,说不存在pdo_mysql这个拓展,可是我明明已经装了拓展了,在服务器上面测试时明明就通过了,最终我才发现,客户端请求php文件时,apache2居然用了自带的php7.0编译,而不是我这个配置好了的php7.2,哭了。最后我给php7.0也安装了拓展,问题解决。

ajax跨域请求php文件报错,core同源错误。

大致错误原因是一个core同源规则,在不同的服务器或者端口之间请求资源必须有一个请求头,类似于:Access-Control-Allow-Origin。

php如何解决,如下:
header(“Access-Control-Allow-Origin: http://a.com”); // 允许a.com发起的跨域请求
//如果需要设置允许所有域名发起的跨域请求,可以使用通配符 *
header(“Access-Control-Allow-Origin: *”); // 允许任意域名发起的跨域请求
如果设置了header头,依然没用,我建议重新安装php

路漫漫其修远兮,坑要一个一个踩,代码要一行一行敲。

发布了29 篇原创文章 · 获赞 129 · 访问量 8702

猜你喜欢

转载自blog.csdn.net/weixin_44072077/article/details/103832994
今日推荐