今天,我将介绍如何在AWS EC2上托管Laravel应用程序。我将介绍从创建EC2实例,配置服务器等等。我会假设您已经拥有一个AWS帐户,并且您已经拥有一个您想托管的Laravel应用程序。如果您不这样做,并且仍然想遵循,则可以在my GitHub上克隆我的项目源代码。
首先,我们需要创建我们的EC2实例。转到AWS的EC2部分,然后按“启动实例”。您现在应该在一个看起来与下面相似的页面上。
将实例命名与您的应用程序相关的内容,或者您想要的。
对于应用程序图像,选择Ubuntu 22.04(64位x86)。
我们将选择T2.Micro以保留在自由层中。
创建一个钥匙对并将其存储在易于访问的位置。
创建一个新的安全组,并允许Internet的SSH和HTTP。
存储和高级详细信息的设置可以空白。仔细检查您的配置,然后按“启动实例”。
现在,要连接到您的实例,请返回EC2部分的“实例”页面,然后找到您刚创建的实例。选择它,然后按“连接”。
选择“ EC2实例连接”,然后将用户名作为默认,按“连接”。
您现在应该连接,然后查看这样的页面。
现在我们准备开始安装一些东西了。按顺序将下面的命令粘贴到您的终端中。只要您选择了Ubuntu作为您的AMI,他们都应该工作。您可以复制命令,然后右键单击以粘贴到AWS实例连接终端。
安装nginx
-
sudo apt Update
-
sudo apt install nginx
-
systemctl状态nginx(如果看到'active(running)',它可以正常工作)
-
sudo systemctl restart nginx
-
sudo nginx -t
安装php
-
sudo apt Update
-
sudo apt install-no-install-recommends php8.1
-
sudo apt-get安装php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-gd php8.1-mbstring php8.1-curl php8.1-curl php8.1-1-- XML php8.1-bcmath php8.1-fpm
安装作曲家
- curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
- HASH=`curl -sS https://composer.github.io/installer.sig`
-
echo $ hash
-
php -r“ if(hash_file('sha384','/tmp/composer-setup.php')==='$ hash'){echo'installer jearter extracified';损坏'; unlink('composer-setup.php');} echo php_eol;“
-
sudo php/tmp/composer-setup.php -install-dir =/usr/local/local/bin -filename = Composer
-
作曲家
安装mysql
-
sudo apt Update
-
sudo apt安装mysql-server
-
sudo mysql
-
alter用户'root'@'localhost'用mysql_native_password通过'your password'';
确保将“密码”更改为实际密码,然后安全保存。我们以后需要它。
您可以键入\ q或退出以退出mysql模式。
-
sudo systemctl restart nginx
-
sudo systemctl重新启动php8.1-fpm
设置Web服务器目录的权限
-
sudo mkdir -p/var/www/html/
-
sudo chown -r ubuntu:ubuntu / var / www / < / p> < / li>
好吧!现在,我们准备将项目克隆到服务器上。让我们在主目录中使用:
-
cd〜
或克隆您想到的项目的回购
从现在开始,我将通过“ yourappname”引用项目文件夹。用文件夹的名称替换您的应用程序。
-
sudo mv yourappname/var/www/yourappname
-
cd/wer/www/
dir
您现在应该看到此(var/www/目录中的'dir'应该返回您的项目文件夹):
现在,我们需要为Web服务器上的某些Laravel特定文件夹设置权限(Cache + Storage)。
-
sudo chown -r www-data.www-data/var/www/yourappname/storage
-
sudo chown -r www-data.www-data/var/www/yourappname/bootstrap/cache
-
sudo chmod -r ugo+rw/var/www/yourappname/storage/logs
(在存储/日志目录中为所有者,组和其他所有文件和目录添加/编写权限)
)
- mkdir -p/var/www/yourappname/storage/framework/{sessions,views,cache}
在框架目录中创建三个目录(会话,视图和缓存)
- sudo chmod -r ugo+rw/var/www/yourappname/storage/framework
在存储/框架中的所有文件和目录
中添加了所有者,组和其他内容的读/写权
服务器配置
现在,我们的项目文件已准备就绪。我们只需要配置NGINX服务器块即可服务我们的文件。我们将在etc/nginx/sites-available
目录中创建一个配置文件。
请记住在适当的情况下更改“ yourappname”。
- sudo nano/etc/etc/nginx/stites-vailable/yourappname
将以下内容粘贴到纳米接口中。可以用EC2实例的公共IPv4地址替换server_domain_or_IP
。这很容易在AWS中的实例摘要中找到。
server {
listen 80;
server_name server_domain_or_IP;
root /var/www/YourAppName/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
粘贴它后,您可以进行Ctrl+S保存,然后Ctrl+X exit。
现在激活我们的配置,只需运行此命令:
- sudo ln -s/etc/nginx/stites-vailable/yourappname/etc/etc/nginx/stites-enabled/
当我们使用时,让我们删除默认配置:
- sudo rm -f/etc/nginx/sites -enabled/default
您可以仔细检查所有内容都可以使用并准备好:
- sudo nginx -t
应用更改:
- sudo systemctl reload nginx
访问服务器上的项目目录并运行:
-
sudo cp .env.example .env
-
sudo nano .env
在这里您可以对应用程序进行任何必需的设置。如果您已经克隆了LaravelBlogApp,则需要生成一个应用程序密钥:
-
作曲家更新
-
php工匠钥匙:生成
如果您遇到有关权限的错误,请尝试以下命令:
- sudo chown -r ubuntu:ubuntu / var / www / yourappname < / li>
创建MySQL数据库
-
sudo mysql -u root -p
-
创建数据库your_db_name;
创建数据库后,我们需要更新我们的.env
。
- sudo nano/var/www/yourappname/.env
用您输入的名称替换DB_DATABASE
,然后用安装MySQL时使用的密码替换DB_PASSWORD
。之后,运行以下命令:
- PHP工匠迁移
-
PHP手工DB:种子
-
sudo服务nginx restart
访问您实例的公共IP:
http://YOUR_IP
确保它是HTTP,因为某些浏览器将默认为HTTPS。
之后,如果一切顺利,您的应用程序应该启动并运行!
这是我在撰写本文时经常提到的一些资源。希望如果您被卡住,他们也可以为您提供帮助。
将Laravel部署到AWS -https://www.linkedin.com/pulse/organized-steps-deploy-laravel-app-ec2-instance-2204-selvanantham/