一、获取软件包资源并进行资源更新

apt是Ubuntu上默认的软件包管理器,使用它可以很容易进行各种软件安装,而且会自动帮你安装可能需要的依赖关系。

另一个强大的软件管理工具是 dpkg,可以用于安装本地的deb文件。但是 dpkg 不会解决模块的依赖关系,也不会关心ubuntu的软件仓库内的软件版本,因此不推荐新手使用。

update 用于获取软件包资源,upgrade 用于下载和安装获取到的软件包资源。

sudo apt update
sudo apt upgrade

二、依次安装PHP、PHP的一般性扩展、MySQL和Apache

1.php-fpm:

服务器软件(apache、nginx、IIS)本身不能处理和解释编程语言(JAVA、PHP、Per等),服务器接收到动态请求后,会把请求发送给对应的解释器处理,并把结果返回给客户端。

一般是把请求发送给fastcgi管理进程处理,fastcgi管理进程选择cgi子进程处理结果并返回。

php-fpm就是一个PHP FastCGI管理器,旨在将FastCGI进程管理整合进PHP包中。

php-fpm提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点。

2.php-mbstring:是一个编码相关的扩展

sudo apt install -y php php-fpm php-mbstring mysql-server apache2

三、安装php对MySQL的支持扩展和apache对php的支持扩展

安装完PHP、MySQL和Apache后还要让三者互相支持彼此,为此需要安装一些额外的扩展。

php-mysql扩展能让PHP支持MySQL,而 libapache2-mod-php 能让Apache支持PHP。

sudo apt install -y php-mysql libapache2-mod-php

四、对apache进行相关配置,一般配置文件在 /etc/apache2/ 目录下,其目录结构一般如下:

.
├── apache2.conf
├── conf-available
├── conf-enabled
├── envvars
├── magic
├── mods-available
├── mods-enabled
├── ports.conf
├── sites-available
└── sites-enabled

apache2.conf是主要的配置文件,Apache在启动时会自动读取这个文件的配置信息。而其他的一些配置文件,如 httpd.conf等,则是通过Include指令包含进来。

该目录下有一些以 -available 和 -enable 结尾的目录,正真的配置文件在available 目录中,enable中的只是这些配置文件的一些链接符号(一般是软链接)。

要使用某种配置其实很简单,只需要在enable目录中创建对应available目录中文件的软链接,不需要时再删除软链接。

如果你只是在服务器上放置一个网站,简单的修改一下 /etc/apache2/site-enable 中的符号文件 000-default.conf 就行了,只需要把 DocumentRoot 的值改为你网站入口文件所在的目录即可。该文件配置内容大致如下:

<VirtualHost *:>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

如果想要在一个服务器上放多个域名和网站,又不想使用虚拟主机,这时你可能还需要修改 ServerAdmin 的值为你服务器IP绑定的域名。

五、利用apache重写模块隐藏入口文件:

为了简化和安全的目的,一般会隐藏入口文件。可以利用apache的重写模块和一定的配置实现这个目的。

1.引入重写模块:在 /etc/apache2/mods-enable 中创建符号文件 rewrite.load,指向 /etc/apache2/mods-available 中的重写模块 rewrite.load

ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load 

2.启动重写功能:修改 /etc/apache2/apache2.conf 配置文件中的 AllowOverride None 为 AllowOverride ALL,一共有三处,三处都要修改。

3.隐藏入口文件:在项目入口文件所在的目录中新建 .htaccess 文件,键入如下内容:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$ [QSA,PT,L]
</IfModule>

最新文章

  1. WebApi Post 后台无法获取参数的解决方案
  2. nginx 客户端不缓存header
  3. IOS 杂笔-1(为什么不继承类簇?)
  4. 如何在Ubuntu上更新Node.js
  5. 17SpringMvc_在业务控制方法中写入包装User的模型来收集参数——解决问题
  6. 告示:CSDN博客通道支持Windows Live Writer写blog离线好友
  7. BAPI总的数据库提交和回滚
  8. opencv 训练自己的分类器汇总
  9. Exception in thread &quot;main&quot; org.hibernate.HibernateException: save is not valid without active transaction
  10. jboss规则引擎KIE Drools 6.3.0 Final 教程(3)
  11. 返回present的根
  12. php仿经典省市县三级联动
  13. 跨域请求传递Cookie问题
  14. robot启动
  15. Spring data Jpa,Mybatis,读写锁,@Lock 使用
  16. Python全栈问答小技巧_2
  17. Android get current Locale, not default
  18. 任意的组合,数组或数组,数组或list,list或list不用循环得出匹配的总数和需要的字段列
  19. Spring Cloud Dalston.SR5 BUG一记
  20. vscode 配置import @ 路径提示及代码智提

热门文章

  1. oracle表空间位置迁移
  2. AndroidStudio报错:Emulator: I/O warning : failed to load external entity &quot;file:/C:/Users/Administrator/.AndroidStudio3
  3. mysql在建表语句中添加索引
  4. GMOJ5409.【GDOI2017模拟一试4.11】平行宇宙
  5. MySql学习-2. NavicatforMySQL 与 MySql的对接以及一些操作:
  6. 洛谷P1063能量项链(区间dp)
  7. Gird(2)
  8. C# convert json to datatable,convert list to datatable
  9. Dart中类的getter和setter
  10. HTML指定页面编码