在Linux服务器上部署Laravel应用通常涉及以下几个步骤:
准备工作:
安装Composer: Composer是PHP的依赖管理工具,用于安装和管理Laravel及其依赖包。
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
上传Laravel应用:
使用FTP、SCP或其他文件传输方法将你的Laravel应用上传到服务器上的一个目录中,例如/var/www/yourapp。
设置文件权限: Laravel需要对其存储目录和缓存目录有写权限。
sudo chown -R www-data:www-data /var/www/yourapp
sudo chmod -R 755 /var/www/yourapp
sudo chmod -R 777 /var/www/yourapp/storage
sudo chmod -R 777 /var/www/yourapp/bootstrap/cache
安装依赖: 进入你的Laravel应用目录,使用Composer安装依赖。
cd /var/www/yourapp
composer install
配置环境变量:
复制.env.example文件并编辑它以匹配你的服务器环境。
cp .env.example .env
nano .env
在.env文件中设置数据库连接、APP_NAME、APP_ENV、APP_KEY等信息。
生成应用密钥: 如果你还没有APP_KEY,可以使用以下命令生成一个。
php artisan key:generate
运行迁移: 运行数据库迁移以创建必要的数据库表。
php artisan migrate
优化: 你可以使用Laravel的优化命令来提高性能。
php artisan optimize
配置Web服务器:
对于Nginx,你需要创建一个新的服务器块文件,指向你的Laravel应用的public目录。对于Apache,你需要启用mod_rewrite并配置.htaccess文件。
Nginx示例:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourapp/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 根据你的PHP版本调整
}
location ~ /\.ht {
deny all;
}
}
Apache示例:
确保mod_rewrite已启用,并在你的Laravel应用的public目录中创建或编辑.htaccess文件。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
重启Web服务器: 重启Nginx或Apache以应用配置更改。
sudo systemctl restart nginx
# 或者
sudo systemctl restart apache2
访问你的应用: 在浏览器中输入你的服务器地址,你应该能够看到你的Laravel应用。
请注意,这些步骤可能会根据你的具体需求和服务器配置有所不同。确保在生产环境中使用HTTPS来保护用户数据的安全。