Heim > Artikel > PHP-Framework > So erstellen Sie eine Laravel-Umgebung unter Centos7 (nicht Docker)
Kürzlich hat mich ein Freund um Hilfe beim Einrichten einer PHP-Umgebung gebeten. Ursprünglich wollte ich, dass er Docker direkt verwendet. Der von ihm gekaufte Server stammte jedoch von Jushita. Es gab kein externes Netzwerk für die Datenbank und der Zugriff war nur über das interne Netzwerk möglich. Wenn ich Docker verwende, um auf das Netzwerk des Hosts zuzugreifen, kann die Adresse von Zeit zu Zeit nicht gefunden werden und der gesamte Dienst wird immer unterbrochen. Ich habe keine andere Wahl, als die Umgebung nacheinander zu installieren und neu aufzubauen. Ich bin auch ein Neuling und habe es endlich herausgefunden, nachdem ich lange gekämpft hatte.
$ cd /etc/yum.repos.d/$ cp CentOS-Base.repo CentOS-Base.repo.bak $ wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo $ yum clean all $ yum update $ yum makecache # 查看已安装的PHP,有的话rpm -e卸载 $ yum list installed | grep php
Nach der Installation können Sie yum install packageName
verwenden, um viele Software zu installieren, die zuvor kompiliert und installiert werden musste, häufig verwendete Software oder einige beliebte Software wie Nginx.
$ yum install epel-release
yum install packageName
,即可安装很多以前需要编译安装的软件、常用的软件或一些比较流行的软件,比如Nginx之类。
$ rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm
CentOS下除了EPEL源之外还有REMI的源,REMI源保证了软件的最新版,但是不保证软件是稳定版。主要拿来安装最新的PHP版本。
$ yum repolist all | grep php * remi-php72: mirrors.tuna.tsinghua.edu.cn remi-php70 Remi's PHP 7.0 RPM repositor disabled remi-php70-debuginfo/x86_64 Remi's PHP 7.0 RPM repositor disabled remi-php70-test Remi's PHP 7.0 test RPM repo disabled remi-php70-test-debuginfo/x86_64 Remi's PHP 7.0 test RPM repo disabled remi-php71 Remi's PHP 7.1 RPM repositor disabled remi-php71-debuginfo/x86_64 Remi's PHP 7.1 RPM repositor disabled remi-php71-test Remi's PHP 7.1 test RPM repo disabled remi-php71-test-debuginfo/x86_64 Remi's PHP 7.1 test RPM repo disabled!remi-php72 Remi's PHP 7.2 RPM repositor enabled: 412remi-php72-debuginfo/x86_64 Remi's PHP 7.2 RPM repositor disabled remi-php72-test Remi's PHP 7.2 test RPM repo disabled remi-php72-test-debuginfo/x86_64 Remi's PHP 7.2 test RPM repo disabled remi-php73 Remi's PHP 7.3 RPM repositor disabled remi-php73-debuginfo/x86_64 Remi's PHP 7.3 RPM repositor disabled remi-php73-test Remi's PHP 7.3 test RPM repo disabled remi-php73-test-debuginfo/x86_64 Remi's PHP 7.3 test RPM repo disabled remi-php74 Remi's PHP 7.4 RPM repositor disabled remi-php74-debuginfo/x86_64 Remi's PHP 7.4 RPM repositor disabled remi-php74-test Remi's PHP 7.4 test RPM repo disabled remi-php74-test-debuginfo/x86_64 Remi's PHP 7.4 test RPM repo disabled remi-php80 Remi's PHP 8.0 RPM repositor disabled remi-php80-debuginfo/x86_64 Remi's PHP 8.0 RPM repositor disabled remi-php80-test Remi's PHP 8.0 test RPM repo disabled remi-php80-test-debuginfo/x86_64 Remi's PHP 8.0 test RPM repo disabled
先查询下可以安装的PHP版本
$ yum-config-manager --enable remi-php72 # 注意 如果提示 yum-config-manager 找不到的话需要先安装下 yum-utils,在来执行上面的配置 $ yum -y install yum-utils # 最后选择自己想安装的PHP版本即可 $ yum -y install php $ php -v $ php -m
设置默认安装的版本,这里我选择了php7.2
# 查找php对应版本的扩展,我这里是7.2就写的php72-php $ yum search php72-php * base: mirrors.cloud.aliyuncs.com * extras: mirrors.cloud.aliyuncs.com * remi-php72: mirror.innosol.asia * remi-safe: mirror.innosol.asia * updates: mirrors.cloud.aliyuncs.com============================================================================================================= N/S matched: php72-php ==============================================================================================================php72-php-pecl-handlebars-devel.x86_64 : php72-php-pecl-handlebars developer files (header)php72-php-pecl-http-message-devel.x86_64 : php72-php-pecl-http-message developer files (headers)php72-php-pecl-propro-devel.x86_64 : php72-php-pecl-propro developer files (header)php72-php-pecl-psr-devel.x86_64 : php72-php-pecl-psr developer files (header)php72-php-pecl-raphf-devel.x86_64 : php72-php-pecl-raphf developer files (header)php72-php-pecl-swoole-devel.x86_64 : php72-php-pecl-swoole developer files (header)...# 安装扩展,注意扩展名不需要带上PHP的版本号,下面是我在Laravel里需要的一些扩展 $ yum -y install php-fpm php-bcmath php-mbstring php-mysqli php-mysqlnd php-pdo php-pdo_mysql php-posix php-shmop php-simplexml php-sodium php-xml php-xmlreader php-xmlwriter php-xsl php-zip php-opcache # 然后查看扩展是否安装成功 $ php -m
# 启动 $ systemctl start php-fpm # 停止or重启 $ systemctl stop php-fpm $ systemctl restart php-fpm # 重载 $ systemctl reload php-fpm # 设置开机启动 $ systemctl enable php-fpm # 禁止开机启动 $ systemctl disable php-pfm
$ ps aux | grep php root 1728 0.0 0.1 455280 12780 ? Ss Sep07 0:01 php-fpm: master process (/etc/php-fpm.conf)apache 1998 0.0 0.6 558512 48084 ? S Sep07 0:15 php-fpm: pool www apache 2873 0.0 0.4 542200 36012 ? S Sep07 0:19 php-fpm: pool www apache 2874 0.0 0.3 536164 29212 ? S Sep07 0:19 php-fpm: pool www apache 2875 0.0 0.4 542200 34832 ? S Sep07 0:21 php-fpm: pool www
最后查看下PHP-FPM的进程
# 安装Nginx最新源 $ yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm $ yum repolist enabled | grep "nginx*"# 安装nginx $ yum -y install nginx # 启动nginx $ service nginx start # 测试nginx配置文件是否正常 $ nginx -t # 平滑加载 $ nginx -s reload # 设置nginx服务器开机自启动 $ systemctl enable nginx.service # 检查开机自动是否设置成功 $ systemctl list-dependencies | grep nginx
也可以通过 service php-fpm status
查看下启动状态
php-fpm.conf
文件默认在 /etc/php-fpm.conf
php.ini
文件默认在 /etc/php.ini
php.ini
文件里有一些参数需要修改,编辑进入搜索 max
带这个关键字的一些配置自己看描述修改吧,也就是一些限制内存啦,文件大小啦,执行时间啦之类的。
修改完 systemctl reload php-fpm
执行下即可。
server { # 这里做了Https的相关配置 listen 443 ssl http2; server_name your_server_name; # 项目访问根目录 root /xxx/www/public; # ssl证书相关 ssl_certificate /xxx/certs/xxx.pem; ssl_certificate_key /xxx/certs/xxx.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; # 添加几条有关安全的响应头;与 Google+ 的配置类似,详情参见文末。 add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; # 站点默认页面;可指定多个,将顺序查找。 # 例如,访问 http://example.com/ Nginx 将首先尝试「站点根目录/index.html」是否存在,不存在则继续尝试「站点根目录/index.htm」,以此类推... index index.html index.htm index.php; # 指定字符集为 UTF-8 charset utf-8; # Laravel 默认重写规则;删除将导致 Laravel 路由失效且 Nginx 响应 404。 location / { try_files $uri $uri/ /index.php?$query_string; } # 关闭 [/favicon.ico] 和 [/robots.txt] 的访问日志。 # 并且即使它们不存在,也不写入错误日志。 location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } # 将 [404] 错误交给 [/index.php] 处理,表示由 Laravel 渲染美观的错误页面。 error_page 404 /index.php; # URI 符合正则表达式 [\.php$] 的请求将进入此段配置 location ~ \.php$ { # 配置 FastCGI 服务地址,可以为 IP:端口,也可以为 Unix socket。 fastcgi_pass 127.0.0.1:9000; # 配置 FastCGI 的主页为 index.php。 fastcgi_index index.php; # 配置 FastCGI 参数 SCRIPT_FILENAME 为 $realpath_root$fastcgi_script_name。 fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; # 引用更多默认的 FastCGI 参数。 include fastcgi_params; } # 通俗地说,以上配置将所有 URI 以 .php 结尾的请求,全部交给 PHP-FPM 处理。 # 除符合正则表达式 [/\.(?!well-known).*] 之外的 URI,全部拒绝访问 # 也就是说,拒绝公开以 [.] 开头的目录,[.well-known] 除外 location ~ /\.(?!well-known).* { deny all; }}server { listen 80; server_name your_server_name; return 301 https://your_server_name$request_uri;}
如果遇到nginx重启之类提示说PID为空或者找不到的,可以看下是否有残留进行杀掉,然后 nginx -c /etc/nginx/nginx.conf
指定好配置文件。
可以通过 service nginx status
查看nginx的状态。
Nginx的默认配置目录都在 /etc/nginx/
下,默认错误日志在 /var/log/nginx/error.log
,主要服务器配置文件在 /etc/nginx/conf.d/*.conf
下面是一份简单的Server配置, 做了Https的301 跳转,不需要的话就把ssl相关部分去掉,301跳转去掉即可。
# 安装mysql源 $ yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm $ yum repolist enabled | grep "mysql.*-community.*"# 安装Mysql $ yum -y install mysql-community-server install mysql-community-devel # 启动mysql $ service mysqld start # 检查mysql启动是否正常 $ service mysqld status 或者 ps -ef | grep mysql # 设置mysqld服务开机自启动 $ systemctl enable mysqld.service # 使用yum安装Mysql,启动会系统会自动生成一个随机的数据库密码,需要修改下 # 查看mysql的随机密码 $ grep 'temporary password' /var/log/mysqld.log # 终端登录Mysql $ mysql -hlocalhost -u root -p xxx # 修改密码 $ ALTER USER 'root'@'localhost' IDENTIFIED BY 'Yourpassword';
最后重启下nginx让配置生效 nginx -s reload
, 如果中间有问题记得查看下nginx的错误日志文件,很有用,基本坑都会记录在里面 /var/log/nginx/error.log
。
因为朋友这边是使用的聚石塔的RDS,其实是不需要安装数据库的了,不过还是简单写下Mysql的安装把,这里使用Mysql5.7为例,想要安装Mysql8的自行换下。
$ ps aux | grep php-fpm root 1728 0.0 0.1 455280 12780 ? Ss Sep07 0:01 php-fpm: master process (/etc/php-fpm.conf)apache 1998 0.0 0.4 542128 31616 ? S Sep07 0:17 php-fpm: pool www apache 2873 0.0 0.5 552440 46508 ? S Sep07 0:22 php-fpm: pool www apache 2874 0.0 0.6 560740 52748 ? S Sep07 0:22 php-fpm: pool www...
安装完 Laravel 后,你可能需要给这两个文件配置读写权限:storage
目录和 bootstrap/cache
目录应该允许 Web 服务器写入。
这里需要给PHP-FPM运行角色的权限。
# 暴力一些 $ chown -R apache:apache /xxx/storage/$ chown -R apache:apache /xxx/bootstrap/cache/# 在给个755权限 $ chmod -R 755 /xxx/storage/$ chmod -R 755 /xxx/bootstrap/cache/
可以看到我这里子进程是一个 apache
用户在执行,所以需要把上面2个目录改成 apache
service php-fpm status
🎜🎜🎜🎜Konfigurationsdatei🎜🎜 Die Datei php-fpm.conf
befindet sich standardmäßig in /etc/php-fpm.conf
🎜🎜php.ini
Die Datei befindet sich in /etc/php standardmäßig. Es gibt einige Parameter in der ini
🎜🎜php.ini
-Datei, die geändert werden müssen und den Suchbegriff max, um die Beschreibung anzuzeigen und sie für einige Konfigurationen mit diesem Schlüsselwort zu ändern. Es gibt einige Einschränkungen hinsichtlich Speicher, Dateigröße, Ausführungszeit usw. 🎜🎜Führen Sie nach der Änderung einfach <code>systemctl reload php-fpm
aus. 🎜🎜... etc/nginx/nginx .conf gibt die Konfigurationsdatei an. 🎜🎜Sie können den Status von Nginx über service nginx status
überprüfen. 🎜🎜Das Standardkonfigurationsverzeichnis von Nginx befindet sich unter /etc/nginx/
, das Standardfehlerprotokoll befindet sich unter /var/log/nginx/error.log
und das Hauptverzeichnis Die Serverkonfigurationsdatei befindet sich unter /etc/nginx/conf.d/*.conf
🎜🎜Das Folgende ist eine einfache Serverkonfiguration, die einen 301-Sprung für HTTPS durchführt. Wenn dies nicht erforderlich ist, entfernen Sie die SSL-bezogene Teile und machen Sie einen 301-Sprung. 🎜rrreee🎜 Starten Sie schließlich Nginx neu, damit die Konfiguration wirksam wird. Wenn es irgendwelche Probleme gibt, denken Sie daran, die Nginx-Fehlerprotokolldatei zu überprüfen aufgezeichnet in /var/log/nginx/error.log
. 🎜🎜🎜🎜Installieren Sie Mysql🎜🎜Da mein Freund RDS von Jushita verwendet, ist es nicht nötig, die Datenbank zu installieren, aber ich schreibe trotzdem einfach die Installation von Mysql auf. Hier verwende ich Mysql5.7 als Beispiel Die Installation von Mysql8 kann durch sich selbst ersetzt werden. 🎜rrreee🎜🎜🎜Laravel-Berechtigungen🎜🎜Nach der Installation von Laravel müssen Sie möglicherweise Lese- und Schreibberechtigungen für diese beiden Dateien konfigurieren: das Verzeichnis storage
und das Verzeichnis bootstrap/cache
Es sollten Webserver-Schreibvorgänge zulässig sein. 🎜🎜Hier müssen Sie PHP-FPM die Berechtigung erteilen, die Rolle auszuführen. 🎜rrreee🎜Sie können sehen, dass der untergeordnete Prozess hier von einem Apache
-Benutzer ausgeführt wird, daher muss ich die beiden oben genannten Verzeichnisse in Apache
ändern (ich weiß nicht, wo). Dieser Geisterbenutzer wird erstellt, möglicherweise erstellt, wenn PHP-FPM standardmäßig installiert ist ...). 🎜🎜Suchen Sie das entsprechende Verzeichnis🎜# 暴力一些 $ chown -R apache:apache /xxx/storage/$ chown -R apache:apache /xxx/bootstrap/cache/# 在给个755权限 $ chmod -R 755 /xxx/storage/$ chmod -R 755 /xxx/bootstrap/cache/
相关推荐:最新的五个Laravel视频教程
Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine Laravel-Umgebung unter Centos7 (nicht Docker). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!