Rumah >pembangunan bahagian belakang >tutorial php >Sangat terperinci! Bina persekitaran LNMP menggunakan kod sumber

Sangat terperinci! Bina persekitaran LNMP menggunakan kod sumber

藏色散人
藏色散人ke hadapan
2023-03-29 16:56:283071semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang PHP terutamanya cara menggunakan kod sumber untuk membina persekitaran LNMP. Rakan-rakan yang berminat boleh lihat di bawah.

Sangat terperinci! Bina persekitaran LNMP menggunakan kod sumber

Bina persekitaran LNMP menggunakan kod sumber

1 Pasang RedHat8

Centos8 , Atau apa-apa lagi. Mesin maya ialah VMware Terdapat tutorial pemasangan dalam talian, jadi saya tidak akan menerangkan butiran di sini.

2. Konfigurasikan repositori perisian tempatan

// 把系统镜像挂载到/media/cdrom目录。
mkdir -p /media/cdrom
mount /dev/cdrom /media/cdrom
// mount: /media/cdrom: WARNING: device write-protected, mounted read-only.


// 创建软件仓库的配置文件
 ~]# vi /etc/yum.repos.d/rhel8.repo
[BaseOS]
name=BaseOS
baseurl=file:///media/cdrom/BaseOS
enabled=1
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///media/cdrom/AppStream
enabled=1
gpgcheck=0

Uji pemasangan vim, wget

dnf install vim wget -y

3 Alat yang diperlukan

dnf -y install apr* autoconf automake numactl bison bzip2-devel cpp curl-devel fontconfig-devel freetype-devel gcc gcc-c++ gd-devel gettext-devel kernel-headers keyutils-libs-devel krb5-devel libcom_err-devel  libpng-devel  libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libxml2-devel libXpm* libxml* libXaw-devel libXmu-devel libtiff* make openssl-devel patch pcre-devel perl php-common php-gd telnet zlib-devel libtirpc-devel gtk* ntpstat na* bison* lrzsz cmake ncurses-devel libzip-devel libxslt-devel gdbm-devel readline-devel gmp-devel

4. Muat turun pakej kod sumber perisian yang diperlukan

dan simpannya dalam direktori /lnmp.

mkdir /lnmp
cd /lnmp

wget https://www.linuxprobe.com/Software/rpcsvc-proto-1.4.tar.gz

wget https://www.linuxprobe.com/Software/nginx-1.16.0.tar.gz

wget https://www.linuxprobe.com/Software/mysql-8.0.18.tar.xz

wget https://www.linuxprobe.com/Software/php-7.3.5.tar.gz

wget https://www.linuxprobe.com/Software/wordpress.tar.gz

5. Pasang rpcsvc-proto

rpcsvc-proto ialah nama pakej perisian yang mengandungi sokongan fail rcpsvc Protokol rcpsvc akan digunakan dalam Nginx dan MySQL seterusnya Program perkhidmatan perlu dipanggil semasa proses penempatan.

tar xzvf rpcsvc-proto-1.4.tar.gz
cd rpcsvc-proto-1.4/
./configure
make
make install
cd ..

6. Pasang Nginx

Buat akaun untuk pengendalian Nginx

Atur cara dijalankan oleh seorang pengguna. Sudah tentu ia tidak boleh menjadi akar.

Dan ia tidak memerlukan direktori rumah atau log masuk, ia hanya digunakan untuk menjalankan Nginx.

useradd nginx -M -s /sbin/nologin // -M 不创建家目录,-s 指定 shell
id nginx // 查询是否创建成功了
uid=1000(nginx) gid=1000(nginx) 组=1000(nginx)

Pasang Nginx

lnmp]# tar zxvf nginx-1.16.0.tar.gz
lnmp]# cd nginx-1.16.0/
nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module  // --prefix指定安装目录, --with-开启http_ssl_module模块
nginx-1.16.0]# make
nginx-1.16.0]# make install
nginx-1.16.0]# cd ..

Konfigurasikan Nginx

Gunakan parameter awalan untuk menentukan laluan pemasangan, kemudian fail konfigurasi Nginx berada di bawah /usr/local/ nginx.

Sediakan pemilik pengguna yang menjalankan program dan kumpulan kumpulan

vim /usr/local/nginx/conf/nginx.conf
// 打开文件后,我们在英文模式下,按下 shift + 冒号,输入2,回车,定位到第2行。
// 连按两次 ESC,取消当前使用模式
// 再次 shift + 冒号,输入 set nu,回车,我们可以显示行号

1 
2 user  nginx nginx; // 第二行,修改为这样

Dalam baris 45, tambahkan index.php pada konfigurasi indeks (fail yang boleh digunakan sebagai laman utama lalai).

 43         location / {
 44             root   html;
 45             index  index.php index.html index.htm;
 46         }

Padamkan aksara ulasan # di hadapan baris 65 hingga 71 untuk mendayakan fungsi hos maya, dan kemudian tukar direktori akar tapak web yang sepadan selepas baris 69 kepada /usr/local/nginx/html, di mana Parameter fastcgi_script_name digunakan untuk merujuk kepada nama skrip, iaitu URL yang diminta oleh pengguna. Hanya apabila maklumat diisi dengan betul boleh Nginx menghuraikan permintaan pengguna dengan betul Jika tidak, halaman yang dilawati akan menggesa ralat "404 Tidak Ditemui".

63         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 64         #
 65         location ~ \.php$ {
 66             root           html;
 67             fastcgi_pass   127.0.0.1:9000;
 68             fastcgi_index  index.php;
 69             fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
 70             include        fastcgi_params;
 71         }

Perisian yang disusun dan dipasang daripada kod sumber tidak boleh diuruskan oleh systemctl secara lalai Kami boleh menggunakan /usr/local/nginx/sbin/nginx sendiri untuk mengurusnya. Adalah disyorkan untuk menambah laluan /usr/local/nginx/sbin kepada pembolehubah persekitaran PATH, supaya kita boleh terus memasuki nginx tanpa menambah laluan.

Kemudian gunakan arahan sumber untuk membuat pengubahsuaian ini berkuat kuasa serta-merta.

lnmp]# vim ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin // 这里加上 Nginx 的 sbin 路径

export PATH

lnmp]# source ~/.bash_profile // 让修改立即生效
lnmp]# nginx // 启动 nginx 服务

Buka penyemak imbas untuk mengakses 192.168.89.128 (alamat mesin maya saya), akses gagal

Tutup tembok api

systemctl status firewalld.service // 查看是否在运行
systemctl stop firewalld.service // 临时停止
systemctl disable firewalld.service // 永久关闭

Lawati sekali lagi dan cari bahawa ia berfungsi.

7. Pasang MySQL

Buat pengguna mysql yang bertanggungjawab untuk menjalankan pangkalan data MySQL. Pengguna ini juga tidak perlu log masuk.

lnmp]# useradd mysql -M -s /sbin/nologin

Pemasangan

// 解压MySQL安装软件包
lnmp]# tar xvf mysql-8.0.18.tar.xz

// 将解压出的程序目录改名并移动到/usr/local目录下
lnmp]# mv mysql-8.0.18-linux-glibc2.12-x86_64 mysql
lnmp]# mv mysql /usr/local

/usr/local/mysql ialah laluan untuk menyimpan fail program MySQL, /usr/local/mysql/data ialah tempat data disimpan , setiap pangkalan data Ia adalah direktori di bawahnya. Kita juga perlu menciptanya secara manual.

lnmp]# cd /usr/local/mysql
mysql]# mkdir data

Memulakan MySQL, membenarkan direktori, dan memastikan bahawa data boleh diakses oleh pengguna mysql Sebelum memulakan, gunakan arahan mysqld untuk mengesahkan nama pengguna untuk mengurus perkhidmatan MySQL, storan data direktori, dan maklumat pengekodan Selepas maklumat betul , mulakan permulaan. Selepas permulaan, sistem akan memberikan kata laluan sementara awal kepada pengguna. Ingat untuk menyimpannya.

Kata laluan yang diberikan dalam contoh di bawah ialah qfroRs,Ei4Ls.

[root@linuxprobe mysql]# chown -R mysql:mysql /usr/local/mysql
[root@linuxprobe mysql]# cd bin
[root@linuxprobe bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2021-05-06T07:07:06.243270Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.18) initializing of server in progress as process 7606
2021-05-06T07:07:08.116268Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qfroRs,Ei4Ls

Sama seperti nginx, beberapa perintah boleh laku binari MySQL disimpan dalam /usr/local/mysql/bin dalam direktori programnya sendiri Kami juga boleh menambahkannya pada pembolehubah persekitaran PATH untuk akses mudah.

[root@linuxprobe bin]# vim ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin

export PATH
[root@linuxprobe bin]# source ~/.bash_profile

Letakkan skrip permulaan mysql.server ke dalam /etc/init.d supaya pangkalan data boleh dimulakan secara automatik setiap kali pelayan dimulakan semula. dan berikan kebenaran boleh laku.

Fail libtinfo.so.5 ialah fail perpustakaan fungsi penting yang baru ditambah selepas versi MySQL 8.0, tetapi ia tidak wujud secara lalai Anda perlu menyalin fail libtinfo.so.6.1 atau menggunakannya sebagai a fail pautan untuk dimulakan seperti biasa:

[root@linuxprobe bin]# cd /usr/local/mysql
[root@linuxprobe mysql]# cp -a support-files/mysql.server /etc/init.d/
[root@linuxprobe mysql]# chmod a+x /etc/init.d/mysql.server
[root@linuxprobe mysql]# ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

Laksanakan fail permulaan perkhidmatan pangkalan data MySQL dan lakukan kerja pemula. Atas sebab keselamatan, MySQL tidak lagi membenarkan pengguna menggunakan kata laluan sementara untuk mengurus kandungan pangkalan data sejak versi 8.0, dan juga tidak boleh dikawal dari jauh Pengguna mesti menukar kata laluan permulaan sebelum mereka boleh menggunakan pangkalan data MySQL. Memandangkan pangkalan data adalah perkhidmatan komponen penting sistem, adalah disyorkan bahawa bilangan kata laluan tidak kurang daripada 20 aksara. Sebagai contoh, yang berikut menukar kata laluan kepada "PObejCBeDzTRCncXwgBy".

[root@linuxprobe mysql]# /etc/init.d/mysql.server start 
Starting MySQL.Logging to '/usr/local/mysql/data/linuxprobe.com.err'.
. SUCCESS! 
[root@linuxprobe mysql]# mysql -u root -p
Enter password: 输入初始化时给的原始密码
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.18

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> alter user 'root'@'localhost' identified by 'PObejCBeDzTRCncXwgBy'; 
Query OK, 0 rows affected (0.01 sec)

mysql>

Tetapi ini masih tidak berfungsi Anda perlu terus beralih ke pangkalan data mysql dan mengubah suai nilai kata laluan borang pengguna. Ini juga merupakan keperluan keselamatan baharu sejak pangkalan data MySQL versi 8.0.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
| …………省略部分输出信息…………  |
+---------------------------+
33 rows in set (0.00 sec)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PObejCBeDzTRCncXwgBy';
Query OK, 0 rows affected (0.01 sec)

// 创建一个数据库
create database linuxcool;

8. Pasang PHP

Nyahzip pakej kod sumber php, dan susun dan pasang fail konfigurasi php.ini yang akan dijana oleh

[root@linuxprobe mysql]# cd /lnmp
[root@linuxprobe lnmp]# tar xvf php-7.3.5.tar.gz
[root@linuxprobe lnmp]# cd php-7.3.5/
[root@linuxprobe php-7.3.5]# ./configure --prefix=/usr/local/php --enable-fpm --with-mysqli --with-curl --with-pdo_mysql --with-pdo_sqlite --enable-mysqlnd --enable-mbstring --with-gd
[root@linuxprobe php-7.3.5]# make
[root@linuxprobe php-7.3.5]# make install

Salin ke direktori pemasangan (/usr/local/php/) dan biarkan ia berkuat kuasa. Memandangkan fail konfigurasi utama tersedia, fail konfigurasi php-fpm juga diperlukan. Nasib baik, ia juga disediakan dalam direktori /usr/local/php/etc/ Anda hanya perlu menyalin templat:

[root@linuxprobe php-7.3.5]# cp php.ini-development /usr/local/php/lib/php.ini
[root@linuxprobe php-7.3.5]# cd /usr/local/php/etc/
[root@linuxprobe etc]# mv php-fpm.conf.default php-fpm.conf

// 复制一个模板文件到php-fpm.d的目录中,用于后续控制网站的连接性能:
[root@linuxprobe etc]# mv php-fpm.d/www.conf.default php-fpm.d/www.conf

Tambah perkhidmatan php pada item permulaan supaya ia masih akan berkuat kuasa selepas dimulakan semula

[root@linuxprobe etc]# cd /lnmp/php-7.3.5
[root@linuxprobe php-7.3.5]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@linuxprobe php-7.3.5]# chmod 755 /etc/init.d/php-fpm

Lumpuhkan beberapa fungsi

[root@linuxprobe php-7.3.5]# vim /usr/local/php/lib/php.ini
307 ; This directive allows you to disable certain functions for security reasons.
308 ; It receives a comma-delimited list of function names.
309 ; http://php.net/disable-functions
310 disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server

Dayakan proses php-fpm

[root@linuxprobe php-7.3.5]# /etc/init.d/php-fpm start
Starting php-fpm done

Kami mencipta fail index.php di bawah /usr/local/nginx/html untuk menguji

<?php
phpinfo();

浏览器访问地址即可。

9、搭建一个 WordPress

把 Nginx 服务程序根目录的内容清空后,将 WordPress 解压后的网站文件复制进去:

[root@linuxprobe php-7.3.5]# cd ..
[root@linuxprobe lnmp]# rm -f /usr/local/nginx/html/*
[root@linuxprobe lnmp]# tar xzvf wordpress.tar.gz 
[root@linuxprobe lnmp]# mv wordpress/* /usr/local/nginx/html/

为了能够让网站文件被 Nginx 服务程序顺利读取,应设置目录所有权的身份及可读写的权限:

[root@linuxprobe lnmp]# chown -Rf nginx:nginx /usr/local/nginx/html 
[root@linuxprobe lnmp]# chmod -Rf 777 /usr/local/nginx/html

输入虚拟机 IP 地址访问 WordPress 网站的首页面。

Sangat terperinci! Bina persekitaran LNMP menggunakan kod sumber

后面按说明一步步操作下去即可。

Atas ialah kandungan terperinci Sangat terperinci! Bina persekitaran LNMP menggunakan kod sumber. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam