linux部署php项目并配置ssl证书
1.前提条件
1.1 域名已注册且完成DNS解析。在cmd输入以下命令查看是否完成域名解析。
nslookup 域名
例:nslookup www.abc.com
如上图所示,解析出来ip地址即为成功。
1.2 下载好域名对应的证书文件
我使用了华为云的 云证书管理服务 CCM 。
下载好证书文件,如下图所示。
进入Apache相关的文件夹,看到有三个文件,如下图所示。
将这三个文件放到linux服务器的某个位置,我放到了/cert/apache
(这个路径自定义),为了方便,我将对应的文件名改成了 ca.crt、server.crt、server.key
2.安装Apache和php
2.1 安装Apache
执行以下命令,等待成功安装完即可。
yum install httpd
2.2 安装php
执行以下命令,等待成功安装完即可。
yum install php
3.配置
配置文件在/etc/httpd/
目录下
3.1 设置 php运行权限
vim /etc/httpd/conf.d/php.conf
在下图位置添加
AddHandler application/x-httpd-php .php
4. 配置http://ip 访问php
默认的项目根目录为:/var/www/html
配置在/etc/httpd/conf/httpd.conf
,如下图所示。
在项目根目录(/var/www/html
)放进一个hello.php
,hello.php
的代码如下:
<html>
<head>
<title>hello world</title>
<meta charset="UTF-8">
</head>
<body>
<?php
$msg = '这里是hello.php!!!!';
?>
<h2> <?php echo $msg; ?></h2>
</body>
</html>
启动apache:
systemctl restart httpd
查看状态,确保启动成功。
systemctl status httpd
如上图,启动成功。
本机访问一下(端口没做配置,默认使用80端口)
curl http://127.0.0.1/hello.php
如上图所示,访问成功。
开放外网80端口
firewall-cmd --zone=public --add-port=80/tcp –permanent
firewall-cmd --reload
使用http://ip:端口/hello.php
访问,如下图所示(端口由于是80,是http的默认端口,所以可忽略)。
至此,已经完成通过 http://ip访问php。
5. 配置https://ip 访问php
安装mod_ssl
模块
yum install -y mod_ssl
等待安装完成即可。
重启apache: systemctl restart httpd
这时候默认端口为443,在/etc/httpd/conf.d/ssl.conf
可以看到,如下图所示、
开放443端口
firewall-cmd --zone=public --add-port=443/tcp –permanent
firewall-cmd --reload
访问:https://ip/hello.php
,效果如下图所示。
访问成功。
6. 配置https://域名 访问php
6.1 添加证书文件
vim /etc/httpd/conf.d/ssl.conf
在</ VirtualHost> 节点里面增加
SSLCertificateFile /cert/apache/server.crt #/server.crt的绝对路径
SSLCertificateKeyFile /cert/apache/server.key #server.key的绝对路径
SSLCertificateChainFile /cert/apache/ca.crt #ca.crt的绝对路径
这三个文件怎么来的,请看 1.2 下载好域名对应的证书文件
6.2 自定义php项目的根目录
vim /etc/httpd/conf.d/ssl.conf
在</ VirtualHost> 节点里面增加
DocumentRoot "/home/php-project"
<Directory "/home/php-project">
Options -Indexes +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
6.3 添加域名
vim /etc/httpd/conf.d/ssl.conf
在</ VirtualHost> 节点里面增加
ServerName 域名
在php项目根目录(/home/php-project
)下放入前面的hello.php
重启apache:systemctl restart httpd
访问:https://域名/hello.php,如下图所示:
访问成功!