在CentOS上部署Laravel应用程序的HTTPS涉及几个步骤,包括获取SSL证书、配置Web服务器(如Apache或Nginx)以及更新Laravel配置。以下是使用Apache和Nginx的详细步骤:
安装Certbot: Certbot是一个自动化的工具,用于获取和续订Let’s Encrypt证书。
sudo yum install epel-release
sudo yum install certbot python2-certbot-apache
获取SSL证书: 运行Certbot来获取证书。
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
按照提示完成证书的获取和配置。
配置Apache: Certbot会自动修改Apache配置文件以启用HTTPS。确保你的虚拟主机配置如下:
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/html/your-laravel-app/public
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
<Directory /var/www/html/your-laravel-app/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
重启Apache:
sudo systemctl restart httpd
更新Laravel配置:
确保Laravel知道你正在使用HTTPS。编辑.env文件:
FORCE_SSL=true
安装Certbot:
sudo yum install epel-release
sudo yum install certbot python2-certbot-nginx
获取SSL证书: 运行Certbot来获取证书。
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
按照提示完成证书的获取和配置。
配置Nginx: Certbot会自动修改Nginx配置文件以启用HTTPS。确保你的服务器块配置如下:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
root /var/www/html/your-laravel-app/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
重启Nginx:
sudo systemctl restart nginx
更新Laravel配置:
确保Laravel知道你正在使用HTTPS。编辑.env文件:
FORCE_SSL=true
防火墙配置:确保你的防火墙允许HTTP(80)和HTTPS(443)流量。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
SELinux配置:如果启用了SELinux,可能需要调整相关策略以允许Web服务器访问必要的文件和目录。
通过以上步骤,你应该能够在CentOS上成功部署Laravel应用程序的HTTPS。