Heim  >  Artikel  >  PHP-Framework  >  So erstellen Sie eine Laravel-Umgebung unter Centos7 (nicht Docker)

So erstellen Sie eine Laravel-Umgebung unter Centos7 (nicht Docker)

藏色散人
藏色散人nach vorne
2021-07-08 09:12:342288Durchsuche

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.

Vorbereitung

Ersetzen Sie die Alibaba-Quelle.Das auf dem Server installierte Centos7-System ersetzt zunächst die Alibaba-Quelle.

$ 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

EPEL installierenEPEL (Extra Packages for Enterprise Linux) ist ein von der Fedora-Community erstelltes Projekt zur Bereitstellung hochwertiger Softwarepakete für RHEL und abgeleitete Distributionen wie CentOS. Es handelt sich um eine hochwertige kostenlose Prostitutionssoftwarequelle.

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

安装REMI源

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

安装PHP7+

选择PHP版本

先查询下可以安装的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

安装PHP扩展

# 启动
$ 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

PHP-FPM

$ 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 执行下即可。

安装Nginx

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

安装Mysql

因为朋友这边是使用的聚石塔的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权限

安装完 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

Installieren Sie die REMI-Quelle

Zusätzlich zur EPEL-Quelle gibt es auch die REMI-Quelle unter CentOS. Die REMI-Quelle garantiert die neueste Version der Software, garantiert jedoch nicht, dass die Software eine stabile Version ist. Wird hauptsächlich zur Installation der neuesten PHP-Version verwendet. 🎜rrreee🎜🎜🎜Installieren Sie PHP7+🎜🎜🎜🎜Wählen Sie die PHP-Version.🎜🎜Überprüfen Sie zunächst die PHP-Version, die installiert werden kann reee 🎜🎜🎜PHP-FPM🎜rrreee🎜Überprüfen Sie abschließend den Prozess von PHP-FPM🎜rrreee🎜Sie können den Startstatus auch über 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen