Update-Verlauf
21. Oktober 2020 – Erster Entwurf
Originaltext – https://wsgzao.github.io/post/laravel/
SoftwareversionSie können PHP-Version 7.3 oder höher wählen, ich wähle it yourself Die neueste Version von 7.2CentOS Linux Release 7. v6 .x npm 3. /CentOS stellt Pakete bereit, die nicht standardmäßig bereitgestellt werden. Diese Quelle ist mit RHEL und Derivaten wie CentOS und Scientific Linux kompatibel.
- Weitere Details finden Sie hier: EPEl
- Wir benötigen das EPEL-Repository für die Nginx-Installation, da das Nginx-Paket nicht im offiziellen CentOS-Repository vorhanden ist.
sudo yum -y install epel-release
# 安装Nginx sudo yum -y install nginx # 安装完成后,启动Nginx并将其添加到系统自启动 sudo systemctl start nginx sudo systemctl enable nginx # Nginx默认运行在80端口,使用下面的netstat命令检查。 netstat -plntu | grep 80
remi
oder webtatic
installieren. Methode 1 Remi Warehouse (empfohlen)
sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php72 # 默认remi仓库禁用的,在实际需要的时候启用
sudo yum update
# sudo yum search php72 | more
sudo yum install -y php72 php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache php72-php-pecl-zip
sudo mkdir -p /run/php-fpm/remi-php72 # 创建一个sock存放的目录
sudo ln -s `which php72` /usr/local/sbin/php # 建立软连接方便命令行使用
Nach der Ausführung des obigen Befehls wurde PHP 7.2 auf dem CentOS-System installiert. Das installierte Verzeichnis php72
befindet sich in /etc/opt/remi/php72Code>, Sie können auch auf diesen Link verweisen, um weitere Betriebsdetails anzuzeigen. <p></p>
<p>Deinstallation</p>
<p></p>
<code>remi
-Repository unterstützt die Koexistenz mehrerer PHP-Versionen Eine Deinstallation wird nur empfohlen, wenn dies unbedingt erforderlich ist
sudo yum-config-manager --disable remi-php72 # 禁用remi-php72仓库 sudo systemctl stop php72-php-fpm.service yum remove php72 php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache sudo rmdir /run/php-fpm/remi-php72 sudo rm -rf /etc/opt/remi/remi-php72 # 删除前记得备份配置Zu diesem Zeitpunkt wurde PHP erfolgreich über das Remi-Repository installiert deinstalliert.
Mehrversionsinstallation
Nehmen Sie die Installation einer anderen PHP7.3-Version als Beispiel. Führen Sie die folgenden Vorgänge aus, um die Installation der PHP7.3-Version abzuschließen.
sudo yum-config-manager --enable remi-php73 sudo yum install php73 php73-php-fpm php73-php-gd php73-php-json php73-php-mbstring php73-php-mysqlnd php73-php-xml php73-php-xmlrpc php73-php-opcache sudo mkdir -p /run/php-fpm/remi-php73 # 创建一个sock存放的目录 sudo ln -s `which php73` /usr/local/sbin/php # 建立软连接方便命令行使用
Methode 2 Webtatic Warehouse
remi
或webtatic
的第三方仓库中安装它。方式一 remi仓库(推荐)
之所以推荐它是因为它非常方便切换PHP的版本。
更多仓库相关信息参考这里。
安装
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm sudo yum install -y php72w php72w-gd php72w-curl php72w-common php72w-cli php72w-mysql php72w-mbstring php72w-fpm php72w-xml php72w-pdo php72w-zip
执行完上面的命令后,CentOS系统上已经安装了PHP 7.2, 安装好的php72
目录在/etc/opt/remi/php72
, 也可以参考这个链接查看更多操作详情。
卸载
remi
仓库支持PHP的多版本共存,不到万不得已不建议使用卸载操作
sudo systemctl stop php-fpm yum remove php72w php72w-curl php72w-common php72w-cli php72w-mysql php72w-mbstring php72w-fpm php72w-xml php72w-pdo php72w-zip
至此,使用remi仓库安装的PHP已经成功卸载。
多版本安装
再安装一个PHP7.3版本为例,执行下面的操作即可完成PHP7.3版本的安装。
cgi.fix_pathinfo=0
方式二 webtatic仓库
安装
# 用户和组保持和Nginx一致,使用命令 egrep '^(user|group)' /etc/nginx/nginx.conf 查看nginx进程的用户 user = nginx group = nginx
其他版本下载可以查看这里:webtatic仓库。
如果执行上面的命令一直报错curl: (35) Encountered end of file
,可以尝试将上面的https
协议改成http
协议获取rpm源。
执行完上面的命令后,CentOS系统上已经安装了PHP 7.2, 安装好的php72w目录在/etc/php
下。
卸载
注意: 如果想更换到php5.6或7.1版本, 直接把上面yum命令里面的关键字php72w
换成php56w
或者php71w
就可以了。
# remi listen = /run/php-fpm/remi-php72/php-fpm.sock # webtatic listen = /run/php-fpm/php-fpm.sock
至此,使用webtatic仓库安装的PHP已经成功卸载。
配置php-fpm
通过使用vim编辑配置文件php.ini
来配置PHP,remi仓库方式安装的主配置文件存放位置在/etc/opt/remi/php72/php.ini
, webtatic仓库方式安装的主配置文件存放位置在/etc/php.ini
。
在文件中找如如下行,取消它的行注释并将值更改为0。
listen.owner = nginx listen.group = nginx listen.mode = 0660
保存文件并退出编辑器。
编辑php-fpm
文件www.conf
,remi仓库方式安装的配置文件存放位置在/etc/opt/remi/php72/php-fpm.d/www.conf
,webtatic仓库方式安装的配置文件存放位置在/etc/php-fpm.d/www.conf
。
php-fpm
将在用户和组nginx
下运行,将下面两行的值更改为nginx
,这里用户和用户组请保持与Nginx
的用户和用户组一致。
env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp
php-fpm
将在套接字文件下运行,而不是使用服务器端口,remi仓库方式安装的PHP可以将值改为/run/php-fpm/remi-php72/php-fpm.sock
, webtatic仓库方式安装的PHP请将'listen'值更改为路径/run/php-fpm/php-fpm.sock
。
# remi sudo systemctl start php72-php-fpm.service sudo systemctl enable php72-php-fpm.service # webtatic sudo systemctl start php-fpm sudo systemctl enable php-fpm
套接字文件所有者将是“nginx”用户,权限模式为660,取消注释并更改所有值。
sudo netstat -pl | grep php-fpm.sock
对于环境变量,取消注释这些行并设置值。
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm rpm -ivh mysql57-community-release-el7-11.noarch.rpm sudo yum update sudo yum install -y mysql-server
保存文件并退出vim编辑,然后启动php-fpm
sudo systemctl start mysqld sudo systemctl enable mysqld🎜Weitere Versionsdownloads finden Sie hier: Webtatic Warehouse. 🎜🎜Wenn Sie beim Ausführen des obigen Befehls weiterhin die Fehlermeldung
curl: (35) Encountered end of file
erhalten, können Sie versuchen, das obige https
-Protokoll in http zu ändern
Das Protokoll ruft die RPM-Quelle ab. 🎜🎜Nach der Ausführung des obigen Befehls wurde PHP 7.2 auf dem CentOS-System installiert. Das installierte Verzeichnis php72w befindet sich unter /etc/php
. 🎜🎜🎜Deinstallieren🎜🎜🎜🎜Hinweis:🎜 Wenn Sie zur Version php5.6 oder 7.1 wechseln möchten, ersetzen Sie das Schlüsselwort php72w
im obigen Yum-Befehl direkt durch php56w
oder php71w
reicht aus. 🎜netstat -plntu | grep 3306 # 检查端口 ps aux|grep mysqld # 检查进程🎜Zu diesem Zeitpunkt wurde PHP, das über das Webtatic-Repository installiert wurde, erfolgreich deinstalliert. 🎜
Konfigurieren Sie php-fpm
🎜Konfigurieren Sie PHP, indem Sie vim verwenden, um die Konfigurationsdateiphp.ini
zu bearbeiten. Die von 🎜remi Warehouse🎜 installierte Hauptkonfigurationsdatei wird in gespeichert / etc/opt/remi/php72/php.ini
, die über 🎜webtatic Warehouse🎜 installierte Hauptkonfigurationsdatei wird in /etc/php.ini
gespeichert. 🎜🎜Suchen Sie in der Datei nach der folgenden Zeile, entkommentieren Sie ihre Zeile und ändern Sie den Wert auf 0. 🎜sudo grep 'temporary password' /var/log/mysqld.log🎜Speichern Sie die Datei und verlassen Sie den Editor. 🎜🎜Bearbeiten Sie die
php-fpm
-Datei www.conf
, und die vom 🎜remi-Warehouse🎜 installierte Konfigurationsdatei wird in /etc/opt/remi/php72 gespeichert /php -fpm.d/www.conf
, die über 🎜webtatic Warehouse🎜 installierte Konfigurationsdatei wird in /etc/php-fpm.d/www.conf
gespeichert. 🎜🎜php-fpm
wird unter Benutzer und Gruppe nginx
ausgeführt. Ändern Sie den Wert der folgenden beiden Zeilen in nginx
, hier Benutzer und Gruppe Bitte Halten Sie den Benutzer und die Benutzergruppe mit Nginx
konsistent. 🎜mysql -uroot -p # 回车输入上面获取到的密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword1!';🎜
php-fpm
wird unter der Socket-Datei ausgeführt, anstatt den über das 🎜remi-Repository installierten Server-Port zu verwenden. PHP kann den Wert in /run/php-fpm /remi- ändern. php72/php-fpm.sock
, Für PHP, das über 🎜webtatic Warehouse🎜 installiert wurde, ändern Sie bitte den Wert „listen“ in den Pfad /run/php-fpm/php-fpm.sock
. 🎜CREATE DATABASE laravel; -- 创建一个laravel数据库 GRANT ALL PRIVILEGES ON laravel.* TO laravel@localhost IDENTIFIED BY "LaravelPassword1!"; -- 创建一个对应的用户🎜 Der Eigentümer der Socket-Datei ist der Benutzer „nginx“, der Berechtigungsmodus ist 660, kommentieren Sie alle Werte aus und ändern Sie sie. 🎜
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');" sudo mv composer.phar /usr/local/bin/composer🎜Für Umgebungsvariablen kommentieren Sie diese Zeilen aus und legen Sie den Wert fest. 🎜
composer config -g repo.packagist composer https://packagist.phpcomposer.com🎜Speichern Sie die Datei und beenden Sie die vim-Bearbeitung. Starten Sie dann
php-fpm
und lassen Sie es beim Start laufen. 🎜# remi sudo systemctl start php72-php-fpm.service sudo systemctl enable php72-php-fpm.service # webtatic sudo systemctl start php-fpm sudo systemctl enable php-fpm
使用remi
仓库的时候启动的时候可能会报错,由于php-fpm.sock
文件目录不存在,执行命令:sudo mkdir -p /run/php-fpm/remi-php72
后在启动就没有问题了。
检查php-fpm
php-fpm
在套接字文件下运行,使用以下命令检查。
sudo netstat -pl | grep php-fpm.sock
安装MySQL
可以使用MariaDB或PostgreSQL作为Laravel项目的数据库存储。 这里使用MySQL数据库服务器进行安装。 它在CentOS存储库中可用, 使用下面的yum
命令安装MySQL-server。
下载并安装MySQL5.7
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm rpm -ivh mysql57-community-release-el7-11.noarch.rpm sudo yum update sudo yum install -y mysql-server
执行上面的命令进行MySQL的安装,在安装的过程中两次按Y
键,在同意后安装完成。
启动MySQL
使用下面的命令启动mysql
并使其随系统启动而启动。
sudo systemctl start mysqld sudo systemctl enable mysqld
测试MySQL
MySQL已经启动并在3306端口上运行,可以使用netstat命令检查。
netstat -plntu | grep 3306 # 检查端口 ps aux|grep mysqld # 检查进程
配置MySQL
获取安装时初始化密码
sudo grep 'temporary password' /var/log/mysqld.log
登录并重设root账户密码
mysql -uroot -p # 回车输入上面获取到的密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword1!';
创建一个测试数据库和测试用户
CREATE DATABASE laravel; -- 创建一个laravel数据库 GRANT ALL PRIVILEGES ON laravel.* TO laravel@localhost IDENTIFIED BY "LaravelPassword1!"; -- 创建一个对应的用户
至此,MySQL的安装和配置已经完成。
安装PHP Composer
PHP composer是PHP语言的包管理器。 它创建于2011年,灵感来自于Node.js的“npm”和Ruby的“bundler”安装程序。 使用curl
命令安装composer。
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');" sudo mv composer.phar /usr/local/bin/composer
配置Packagist国内镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com
安装完成后,尝试使用“composer”命令,您将看到以下结果。
composer composer config -g repo.packagist -l # 查看配置的Packagist国内镜像
至此,PHP Composer已经正常安装在了CentOS系统上。
NodeJS + NPM + Yarn
sudo yum -y install nodejs npm curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo sudo yum install -y yarn
安装Laravel测试LNMP
现在进入到 laravel 的根目录'/var/www/laravel'。
sudo mkdir -p /var/www/laravel && cd /var/www/laravel
Laravel提供了两种在服务器上安装框架的方法。可以用Laravel安装程序安装Laravel,也可以用PHP composer安装它。在这里我将通过使用composer命令创建一个新项目来安装Laravel,运行下面的命令来安装Laravel。
composer create-project laravel/laravel .
等待Laravel安装完成。 这可能需要一些时间。
安装完成后,将Laravel Web根目录的所有者更改为“nginx”用户,并使用以下命令将存储目录的权限更改为755。
chown -R nginx:root /var/www/laravel chmod 755 -R /var/www/laravel/storage
至此,Laravel安装已经完成。
为Larvel配置Nginx配置
在这个步骤中,将为 Laravel 项目创建 Nginx 虚拟主机配置。 我们需要为此 Laravel 定义web根目录/var/www/laravel/public
。
接下来,cd
到 Nginx 目录,并在conf.d
目录中创建一个新的虚拟主机配置文件laravel.conf
cd /etc/nginx vim conf.d/laravel.conf
将下面的配置粘贴到文件中:
server { listen 80; # Log files for Debugging access_log /var/log/nginx/laravel-access.log; error_log /var/log/nginx/laravel-error.log; # Webroot Directory for Laravel project root /var/www/laravel/public; index index.php index.html index.htm; # Your Domain Name server_name laravel.domain.io; location / { try_files $uri $uri/ /index.php?$query_string; } # PHP-FPM Configuration Nginx location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # fastcgi_pass unix:/run/php-fpm/php-fpm.sock; # webtatic fastcgi_pass unix:/run/php-fpm/remi-php72/php-fpm.sock; # remi fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }
保存文件并退出vim编辑器。
测试并重启Nginx
测试nginx配置,确保没有错误,然后重新启动nginx服务。
nginx -t # 测试配置是否正确 sudo systemctl restart nginx # 重启Nginx
至此,Laravel的nginx虚拟主机配置已经完成。
测试Laravel
打开浏览器并输入服务器配置的Laravel URL,在Nginx虚拟主机文件中定义了Laravel的域名。 我的是laravel.domain.io
。
访问域名时,您将看到Laravel框架的首页。
CentOS 7上的Nginx、PHP-FPM、MySQL、Composer、NodeJS、Yarn和Laravel安装已经成功。
测试数据库和缓存
# 我修改了REDIS_CLIENT=predis,需要先执行以下命令安装依赖包 composer require predis/predis # 生成并修改.env,重点是DB和REDIS部分 /data/www/laravel/.env APP_NAME=Laravel APP_ENV=local APP_KEY=base64:6+QhPUSBPIjI7LZi93aHdHKNWDWVmrI4mtQ3UnVLMV0= APP_DEBUG=true APP_URL=http://localhost LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel DB_PASSWORD=LaravelPassword1! BROADCAST_DRIVER=log #CACHE_DRIVER=file CACHE_DRIVER=redis QUEUE_CONNECTION=sync #SESSION_DRIVER=file SESSION_DRIVER=redis SESSION_LIFETIME=120 REDIS_CLIENT=predis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 MAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=null MAIL_FROM_NAME="${APP_NAME}" AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET= PUSHER_APP_ID= PUSHER_APP_KEY= PUSHER_APP_SECRET= PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" # 修改后需要测试mysql和redis时分别执行以下两个命令完成验证 php artisan migrate php artisan cache:clear
问题记录
执行composer create-project laravel/laravel .
出现“proc_open(): fork failed - Cannot allocate memory”
原因通常是禁用了swap且内存太小导致,比较快速的解决方案是增加swap
dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 mkswap /var/swap.1 swapon /var/swap.1
访问laravel.domain.io
出现502 error code
原因建议优先检查/var/log/nginx/laravel-error.log
日志,可能的情况有
-
/var/wwww/laravel
路径的权限不正确导致permission denied,注意不同laravel版本间对子目录权限的要求 -
/etc/nginx/conf.d/laravel.conf
配置文件fastcgi_pass设置有误 - php-fpm进程未正常启动