目录
一、项目上线部署
1、前言
2、安装PHP7
3、安装Apache2
4、安装Mariadb[DY5]
5、域名解析
6、解压代码导入数据库
7、创建虚拟主机
首页 后端开发 php教程 手把手教你Linux PHP环境部署与项目上线(分享)

手把手教你Linux PHP环境部署与项目上线(分享)

Jun 07, 2021 am 09:49 AM

本篇文章给大家分享Linux PHP环境部署与项目上线有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

手把手教你Linux PHP环境部署与项目上线(分享)

一、项目上线部署

1、前言

要想部署环境上线项目,先具备以下条件:服务器(ip、帐号密码、终端)、相应的软件、域名(备案解析、代码)等。

服务器、域名购买

首先登录控制台,获取需要连接的主机ip地址:

手把手教你Linux PHP环境部署与项目上线(分享)

获取到用于连接的公网IP后,即可使用远程终端工具连接上待操作上线的服务器。

远程工具可以使用Putty、CMD等,无限制要求。

手把手教你Linux PHP环境部署与项目上线(分享)

以CentOS7.6为例,在购买好服务器并产生实例后,首次登录进系统请先执行“yum -y update”来更新整个系统,防止系统存在漏洞:

手把手教你Linux PHP环境部署与项目上线(分享)

2、安装PHP7

在当前系统默认的yum源中,PHP最新的版本为5.4.16[DY2] ,而需要上线的项目要求最低版本为PHP7.0,此时,EPEL[DY3] 恰恰可以解决这的问题。

a. 安装CentOS7适用的epel

 rpm -Uvhhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
登录后复制

b. 获取PHP7的yum源

rpm -Uvhhttps://mirror.webtatic.com/yum/el7/webtatic-release.rpm
登录后复制

c. 安装PHP7.2及其常用扩展

yum install php72w php72w-cli php72w-common php72w-develphp72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlndphp72w-opcache php72w-pdo php72w-xml
登录后复制

手把手教你Linux PHP环境部署与项目上线(分享)


d. 测试PHP安装情况

php -v
登录后复制

手把手教你Linux PHP环境部署与项目上线(分享)

3、安装Apache2

a. 执行安装的yum指令:

yum -y install httpd
登录后复制

b. 设置Apache开机启动并且启动Apache:

systemctl enable httpd && systemctl start httpd[DY4]

c. 编写一个静态文件和一个php脚本测试Apache对于动、静态文件是否解析正常

注意:Apache的默认站点位于“/var /www/html

创建index.html、index.php文件,内容随意:

使用浏览器进行测试访问:

手把手教你Linux PHP环境部署与项目上线(分享)

4、安装Mariadb[DY5]

此处安装的Mariadb为MySQL的一大分支,在使用上与MySQL没有太大的差别。

a. 执行安装指令

yum -y install mariadb-server
登录后复制

手把手教你Linux PHP环境部署与项目上线(分享)

b. 启动Mariadb服务并且设置开机启动项

systemctl enable mariadb && systemctlstart mariadb
登录后复制

c. 执行初始化Mariadb数据库指令(设置初始密码等操作)

mysql_secure_installation[DY6]

d. 尝试使用命令行登录到Mariadb

mysql -u root -p
登录后复制

手把手教你Linux PHP环境部署与项目上线(分享)

5、域名解析

之前做修改hosts文件,其实就是域名解析的一种,当时只是局限于本地,现在要考虑是线上。

要做解析得登录到域名控制面板中去,解析域名之前最好先确保域名已经备案,如果没有备案的域名,则虽然解析会成功,但是会影响使用,在使用的时候会被服务商拦截。

手把手教你Linux PHP环境部署与项目上线(分享)

点击添加解析记录按钮:

手把手教你Linux PHP环境部署与项目上线(分享)

在弹出的弹窗界面中填写对应的记录信息[DY7] :

手把手教你Linux PHP环境部署与项目上线(分享)

使用ping测试:

手把手教你Linux PHP环境部署与项目上线(分享)

6、解压代码导入数据库

步骤1**:导入sql****文件到数据库中去**

进入数据库的命令行管理界面,创建出需要的数据库edu16,使用source指令导入sql文件:

手把手教你Linux PHP环境部署与项目上线(分享)

步骤2**:创建站点的运行目录,将上传好的代码zip****压缩包进行解压,然后将代码复制到站点运行目录中去**

a. 约定站点目录为“/var/www/html”。

创建站点目录:

目录已经存在,不需要创建

b. 复制先前上传的代码压缩包到当前站点目录下,解压压缩包,解压完毕之后可以删除

解压语法:unzip 压缩包路径

手把手教你Linux PHP环境部署与项目上线(分享)

此时由于站点入口文件在public目录下,而当前项目的站点在/var/www/html中,缺少个public,所以此时需要修改apache的配置文件中的DocumentRoot一项。

# vim /etc/httpd/conf/httpd.conf
手把手教你Linux PHP环境部署与项目上线(分享)

手把手教你Linux PHP环境部署与项目上线(分享)

同时赋予临时目录写权限:

手把手教你Linux PHP环境部署与项目上线(分享)
解决伪静态的问题(不解决只能访问首页,其他页面都404):

手把手教你Linux PHP环境部署与项目上线(分享)

思路:开启当前站点根目录下的AllowOverride配置项,设置为All即可,然后重启apache。

7、创建虚拟主机

目标:要求上线能够使用https协议进行访问。【提高安全性,增强用户对网站的信心】

a. 申请SSL证书

要想站点支持https协议,先得先去向CA申请服务器证书。目前有很多免费的证书可供申请,例如与阿里云合作的Sysmantec一年免费证书,一般免费的证书只能绑定一个域名。除了1年免费的,还有三个月免费的,但是不限次数,不限域名个数,甚至还支持通配符。

以阿里云为例:

https://common-buy.aliyun.com/?spm=5176.2020520163.cas.3.267d56a7EBRcYw&commodityCode=cas#/buy

手把手教你Linux PHP环境部署与项目上线(分享)

付款完毕之后点击“待申请证书”:
手把手教你Linux PHP环境部署与项目上线(分享)
手把手教你Linux PHP环境部署与项目上线(分享)

手把手教你Linux PHP环境部署与项目上线(分享)
手把手教你Linux PHP环境部署与项目上线(分享)

等待证书签发完成,随后下载证书:

手把手教你Linux PHP环境部署与项目上线(分享)

解压压缩包之后得到的证书公私玥文件:

手把手教你Linux PHP环境部署与项目上线(分享)

将三个文件上传到服务器上去,并且固定保存路径,尽量不要变化。

约定,将证书公私玥文件存储在“/ssl/”
手把手教你Linux PHP环境部署与项目上线(分享)

b. 安装Apache的mod_ssl模块

yum -y install mod_ssl

手把手教你Linux PHP环境部署与项目上线(分享)

c. 虚拟主机的配置参考(80 443):

注意:yum方式安装的apache的默认主配置文件位于/etc/httpd/conf/httpd.conf

手把手教你Linux PHP环境部署与项目上线(分享)

根据主配置文件中的配置可以看出,其引入了conf.d目录下的全部conf文件,那么可以在该目录中创建一个vhosts.conf****文件,作为虚拟主机的配置文件:

80端口主机:

<VirtualHost *:80>
ServerAdmin cherish@cherish.pw
DocumentRoot"PATH"
ServerName “yourdomain.com”
<Directory “PATH”>
Allow from all
AllowOverride all
Options -indexes
Require all granted
登录后复制

443端口主机:

<VirtualHost *:443>
SSLEngine on
SSLCertificateFile “公钥文件路径”
SSLCertificateKeyFile “私钥文件路径”
SSLCertificateChainFile “证书链文件路径”
SSLCipherSuite"ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE"
SSLProtocol TLSv1.1 TLSv1.2
Headeralways set Strict-Transport-Security “max-age=63072000; includeSubdomains;preload”
DocumentRoot “PATH”
ServerName “yourdomain.com”
<Directory “PATH”>
Allowfrom all
AllowOverride all
Options -indexes
Require all granted
登录后复制

手把手教你Linux PHP环境部署与项目上线(分享)

创建好之后,参考上述的框框中配置代码,进行修改,其中443端口的虚拟主机配置含义如下:
手把手教你Linux PHP环境部署与项目上线(分享)

修改完毕之后保存退出,然后重启apache

systemctl restart httpd

d. 打开浏览器访问项目,检查https协议是否生效

手把手教你Linux PHP环境部署与项目上线(分享)

问题,生效虽然生效了,但是https协议需要用户手动去补充,在直接输入域名访问的时候默认还是80的http****协议,如何解决?

答:使用重写的方法,强制用户在访问http的时候跳转到https。操作步骤如下,在站点根目录下的“.htaccess”文件中添加如下代码,保存退出即可:
手把手教你Linux PHP环境部署与项目上线(分享)

RewriteCond %{HTTPS} !=on

RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]

举手之劳:框架运行的时候报错了,请解决。

错误1**:权限不足**
手把手教你Linux PHP环境部署与项目上线(分享)

解决办法:
手把手教你Linux PHP环境部署与项目上线(分享)

错误2**:数据库连接失败**

手把手教你Linux PHP环境部署与项目上线(分享)

解决办法:修改项目目录下的.env文件

手把手教你Linux PHP环境部署与项目上线(分享)

处理完毕之后项目即可访问您的项目了。


[DY1]如搭配使用的服务器在大陆境内,则需要域名先通过ICP备案。

[DY2]RHEL以及他的衍生发行版如CentOS、Scientific Linux为了稳定,官方的rpm repository提供的rpm包往往是很滞后的,当然了,这样做这是无可厚非的,毕竟这是服务器版本,安全稳定才是重点。

[DY3]EPEL:Extra Packages of EnterpriseLinux

[DY4]“指令A && 指令B”语法表示当指令A执行成功之后再去执行指令B。

systemctl指令是CentOS7中特有的指令,含义如指令名称:systemcontrol。

控制服务开关:

systemctl 开关服务名

启动项管理:

  • systemctl enable/disable 服务名

  • [DY5]在CentOS7的yum源中,数据库软件没有MySQL,取而代之的是Mariadb。

  • [DY6]执行该指令后依次有以下几个输入内容:

  • 输入当前数据库root帐号密码,没有密码则直接按回车;

  • 是否设置密码?输入Y后,为root用户设置密码;

  • 是否移除匿名用户?选择Y;

  • 是否禁止root用户远程登录?Y/n均可,不会生效;

  • 是否删除测试的test数据库?选择Y/n均可;

  • 是否刷新权限?选择Y;

[DY7]常见的几个记录类型:

A记录:将域名指向一个IPv4地址;

CNAME记录:域名的别名,将一个域名指向另一个域名;

MX记录:一般用于做域名邮箱,将域名指向一个邮件服务器;

推荐学习:《PHP视频教程

以上是手把手教你Linux PHP环境部署与项目上线(分享)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在Laravel中使用Flash会话数据 在Laravel中使用Flash会话数据 Mar 12, 2025 pm 05:08 PM

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

php中的卷曲:如何在REST API中使用PHP卷曲扩展 php中的卷曲:如何在REST API中使用PHP卷曲扩展 Mar 14, 2025 am 11:42 AM

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

简化的HTTP响应在Laravel测试中模拟了 简化的HTTP响应在Laravel测试中模拟了 Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

在Laravel中发现文件下载的存储::下载 在Laravel中发现文件下载的存储::下载 Mar 06, 2025 am 02:22 AM

Laravel框架的Storage::download方法提供了一个简洁的API,用于安全地处理文件下载,同时管理文件存储的抽象。 以下是一个在示例控制器中使用Storage::download()的例子:

在Codecanyon上的12个最佳PHP聊天脚本 在Codecanyon上的12个最佳PHP聊天脚本 Mar 13, 2025 pm 12:08 PM

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

解释PHP中晚期静态结合的概念。 解释PHP中晚期静态结合的概念。 Mar 21, 2025 pm 01:33 PM

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

PHP记录:PHP日志分析的最佳实践 PHP记录:PHP日志分析的最佳实践 Mar 10, 2025 pm 02:32 PM

PHP日志记录对于监视和调试Web应用程序以及捕获关键事件,错误和运行时行为至关重要。它为系统性能提供了宝贵的见解,有助于识别问题并支持更快的故障排除

如何注册和使用Laravel服务提供商 如何注册和使用Laravel服务提供商 Mar 07, 2025 am 01:18 AM

Laravel的服务容器和服务提供商是其架构的基础。 本文探讨了服务容器,详细信息服务提供商创建,注册,并通过示例演示了实际用法。 我们将从OVE开始

See all articles