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.
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 网站的首页面。
后面按说明一步步操作下去即可。
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!