Linux 笔记 - 第十六章 LNMP 之(一) 环境搭建
一、前言
LNMP 中的 N 指 Nginx,在静态页面的处理上,Nginx 较 Apache 更胜一筹;但在动态页面的处理上,Nginx 并不比 Apache 有优势,目前有很多爱好者对 Nginx 比较热衷。
二、安装 LNMP
LNMP 中 MySQL 的安装步骤和 LAMP 中的一样,前面的文章已经介绍,此处只讲解 PHP 和 Nginx 的安装。
2.1 安装 PHP
下载 PHP 的源码包 php-7.2.8.tar.gz 到 /usr/local/src 目录下,解压得到 php-7.2.8。
预编译
[root@ryan ~]# cd /usr/local/src/php-7.2.
[root@ryan php-7.2.]# useradd -s /sbin/nologin php-fpm
[root@ryan php-7.2.]# ./configure --prefix=/usr/local/lnmp/php7 --with-config-file-path=/usr/local/lnmp/php7/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --enable-soap --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --without-pear --with-curl --with-openssl
[root@ryan php-7.2.]# echo $?
其实此处预编译参数中还应该添加上 --with-mysqli,表示添加 MySQL 模块支持,以前版本可以添加的 --with-mysql 参数在 PHP7 中已经过期失效。如果在预编译时没有添加参数 --with-mysqli,则需要按照下面的 2.2 所示的步骤来安装 mysqli 动态扩展 。
PHP7 相对与 PHP5 的最大变化之一是移除了mysql 扩展,推荐使用 mysqli 或者 pdo_mysql,实际上在 PHP5.5 开始,PHP 就着手开始准备弃用 mysql 扩展,如果你使用 mysql 扩展,可能看到过这样的提示 "Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in"。所以在以后的程序中,为了保持兼容性,要尽量减少使用 mysql 扩展用于数据库连接。
编译
[root@ryan php-7.2.]# make
[root@ryan php-7.2.]# echo $?
安装
[root@ryan php-7.2.]# make install
[root@ryan php-7.2.]# echo $?
修改配置文件
[root@ryan php-7.2.]# cp php.ini-production /usr/local/lnmp/php7/etc/php.ini
[root@ryan php-7.2.]# cp /usr/local/lnmp/php7/etc/php-fpm.conf.default /usr/local/lnmp/php7/etc/php-fpm.conf
将以下内容写入 php-fpm.conf 文件,如下:
[root@ryan php-7.2.]# vim /usr/local/lnmp/php7/etc/php-fpm.conf
[global]
pid = /usr/local/lnmp/php7/var/run/php-fpm.pid
error_log = /usr/local/lnmp/php7/var/log/php-fpm.log
[www]
listen = 127.0.0.1:9000
listen.mode =
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children =
pm.start_servers =
pm.min_spare_servers =
pm.max_spare_servers =
pm.max_requests =
rlimit_files =
验证配置文件
[root@ryan php-7.2.]# /usr/local/lnmp/php7/sbin/php-fpm -t
[-Aug- ::] NOTICE: configuration file /usr/local/lnmp/php7/etc/php-fpm.conf test is successful
如果显示 "test is successful" 则说明配置没有问题;否则就要根据提示检查配置文件。
复制服务启动脚本
[root@ryan php-7.2.]# cp /usr/local/src/php-7.2./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@ryan php-7.2.]# chmod /etc/init.d/php-fpm
启动 php-fpm 服务
[root@ryan php-7.2.]# service php-fpm start
Starting php-fpm done
查看进程
[root@ryan php-7.2.]# ps aux |grep php-fpm
root 0.0 0.3 ? Ss : : php-fpm: master process (/usr/local/lnmp/php7/etc/php-fpm.conf)
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
php-fpm 0.0 0.2 ? S : : php-fpm: pool www
root 0.0 0.0 pts/ S+ : : grep php-fpm
可以看到启动了很多进程,大约有二十多个。
也可以使用 php-fpm -m 查看模块和 php-fpm -i 查看phpinfo,如下:
[root@ryan conf]# /usr/local/lnmp/php7/sbin/php-fpm -m
[PHP Modules]
cgi-fcgi
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
openssl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib [Zend Modules] [root@ryan conf]# /usr/local/lnmp/php7/sbin/php-fpm -i
phpinfo()
PHP Version => 7.2. System => Linux ryan 2.6.-.el6.x86_64 # SMP Tue May :: UTC x86_64
Build Date => Aug ::
Configure Command => './configure' '--prefix=/usr/local/lnmp/php7' '--with-config-file-path=/usr/local/lnmp/php7/etc' '--enable-fpm' '--with-fpm-user=php-fpm' '--with-fpm-group=php-fpm' '--with-libxml-dir' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-iconv-dir' '--with-zlib-dir' '--enable-soap' '--enable-ftp' '--enable-mbstring' '--enable-exif' '--disable-ipv6' '--without-pear' '--with-curl' '--with-openssl'
Server API => FPM/FastCGI
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /usr/local/lnmp/php7/etc
Loaded Configuration File => /usr/local/lnmp/php7/etc/php.ini
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)
PHP API =>
PHP Extension =>
Zend Extension =>
Zend Extension Build => API320170718,NTS
PHP Extension Build => API20170718,NTS
Debug Build => no
Thread Safety => disabled
Zend Signal Handling => enabled
Zend Memory Manager => enabled
Zend Multibyte Support => provided by mbstring
IPv6 Support => disabled
DTrace Support => disabled
……
2.2 PHP 动态扩展模块安装
由于在上面安装 PHP 的时候,没有安装 MySQL 的支持模块 mysqli,这会导致后面访问系统时,有可能出现如下错误提示:Oops!System file lost class/class_mysqli.php

所以此处讲解如何给已经安装完成的 PHP 安装动态扩展模块。
进入 PHP 扩展模块目录:/usr/local/src/php-7.2.8/ext
[root@ryan ~]# cd /usr/local/src/php-7.2./ext
[root@ryan ext]# ll
total
drwxrwxr-x root root Jul : bcmath
drwxrwxr-x root root Jul : bz2
drwxrwxr-x root root Jul : calendar
drwxrwxr-x root root Jul : com_dotnet
drwxrwxr-x root root Aug : ctype
drwxrwxr-x root root Aug : curl
drwxrwxr-x root root Aug : date
drwxrwxr-x root root Jul : dba
drwxrwxr-x root root Aug : dom
drwxrwxr-x root root Jul : enchant
drwxrwxr-x root root Aug : exif
-rwxrwxr-x root root Jul : ext_skel
-rw-rw-r-- root root Jul : ext_skel_win32.php
drwxrwxr-x root root Aug : fileinfo
drwxrwxr-x root root Aug : filter
drwxrwxr-x root root Aug : ftp
drwxrwxr-x root root Aug : gd
drwxrwxr-x root root Jul : gettext
drwxrwxr-x root root Jul : gmp
drwxrwxr-x root root Aug : hash
drwxrwxr-x root root Aug : iconv
drwxrwxr-x root root Jul : imap
drwxrwxr-x root root Jul : interbase
drwxrwxr-x root root Jul : intl
drwxrwxr-x root root Aug : json
drwxrwxr-x root root Jul : ldap
drwxrwxr-x root root Aug : libxml
drwxrwxr-x root root Aug : mbstring
drwxrwxr-x root root Jul : mysqli
drwxrwxr-x root root Jul : mysqlnd
drwxrwxr-x root root Jul : oci8
drwxrwxr-x root root Jul : odbc
drwxrwxr-x root root Aug : opcache
drwxrwxr-x root root Aug : openssl
drwxrwxr-x root root Jul : pcntl
drwxrwxr-x root root Aug : pcre
drwxrwxr-x root root Aug : pdo
drwxrwxr-x root root Jul : pdo_dblib
drwxrwxr-x root root Jul : pdo_firebird
drwxrwxr-x root root Jul : pdo_mysql
drwxrwxr-x root root Jul : pdo_oci
drwxrwxr-x root root Jul : pdo_odbc
drwxrwxr-x root root Jul : pdo_pgsql
drwxrwxr-x root root Aug : pdo_sqlite
drwxrwxr-x root root Jul : pgsql
drwxrwxr-x root root Aug : phar
drwxrwxr-x root root Aug : posix
drwxrwxr-x root root Jul : pspell
drwxrwxr-x root root Jul : readline
drwxrwxr-x root root Jul : recode
drwxrwxr-x root root Aug : reflection
drwxrwxr-x root root Aug : session
drwxrwxr-x root root Jul : shmop
drwxrwxr-x root root Aug : simplexml
drwxrwxr-x root root Jul : skeleton
drwxrwxr-x root root Jul : snmp
drwxrwxr-x root root Aug : soap
drwxrwxr-x root root Jul : sockets
drwxrwxr-x root root Jul : sodium
drwxrwxr-x root root Aug : spl
drwxrwxr-x root root Aug : sqlite3
drwxrwxr-x root root Aug : standard
drwxrwxr-x root root Jul : sysvmsg
drwxrwxr-x root root Jul : sysvsem
drwxrwxr-x root root Jul : sysvshm
drwxrwxr-x root root Jul : tidy
drwxrwxr-x root root Aug : tokenizer
drwxrwxr-x root root Jul : wddx
drwxrwxr-x root root Aug : xml
drwxrwxr-x root root Aug : xmlreader
drwxrwxr-x root root Jul : xmlrpc
drwxrwxr-x root root Aug : xmlwriter
drwxrwxr-x root root Jul : xsl
drwxrwxr-x root root Jul : zend_test
drwxrwxr-x root root Jul : zip
drwxrwxr-x root root Aug : zlib
[root@ryan ext]# cd mysqli
[root@ryan mysqli]# ll
total
-rw-rw-r-- root root Jul : config.m4
-rw-rw-r-- root root Jul : config.w32
-rw-rw-r-- root root Jul : CREDITS
-rw-rw-r-- root root Jul : mysqli_api.c
-rw-rw-r-- root root Jul : mysqli.c
-rw-rw-r-- root root Jul : mysqli_driver.c
-rw-rw-r-- root root Jul : mysqli_embedded.c
-rw-rw-r-- root root Jul : mysqli_exception.c
-rw-rw-r-- root root Jul : mysqli_fe.c
-rw-rw-r-- root root Jul : mysqli_fe.h
-rw-rw-r-- root root Jul : mysqli_libmysql.h
-rw-rw-r-- root root Jul : mysqli_mysqlnd.h
-rw-rw-r-- root root Jul : mysqli_nonapi.c
-rw-rw-r-- root root Jul : mysqli_priv.h
-rw-rw-r-- root root Jul : mysqli_prop.c
-rw-rw-r-- root root Jul : mysqli_report.c
-rw-rw-r-- root root Jul : mysqli_result_iterator.c
-rw-rw-r-- root root Jul : mysqli_warning.c
-rw-rw-r-- root root Jul : package.xml
-rw-rw-r-- root root Jul : php_mysqli.h
-rw-rw-r-- root root Jul : php_mysqli_structs.h
drwxrwxr-x root root Jul : tests
-rw-rw-r-- root root Jul : TODO
进入你要安装的模块目录,执行命令:/usr/local/lnmp/php7/bin/phpize,如下
[root@ryan mysqli]# /usr/local/lnmp/php7/bin/phpize
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
[root@ryan mysqli]# ll
total
-rw-r--r-- root root Aug : acinclude.m4
-rw-r--r-- root root Aug : aclocal.m4
drwxr-xr-x root root Aug : autom4te.cache
drwxr-xr-x root root Aug : build
-rwxr-xr-x root root Aug : config.guess
-rw-r--r-- root root Aug : config.h.in
-rw-rw-r-- root root Jul : config.m4
-rwxr-xr-x root root Aug : config.sub
-rwxr-xr-x root root Aug : configure
-rw-r--r-- root root Aug : configure.ac
-rw-rw-r-- root root Jul : config.w32
-rw-rw-r-- root root Jul : CREDITS
-rw-r--r-- root root Aug : install-sh
-rw-r--r-- root root Aug : ltmain.sh
-rw-r--r-- root root Aug : Makefile.global
-rw-r--r-- root root Aug : missing
-rw-r--r-- root root Aug : mkinstalldirs
-rw-rw-r-- root root Jul : mysqli_api.c
-rw-rw-r-- root root Jul : mysqli.c
-rw-rw-r-- root root Jul : mysqli_driver.c
-rw-rw-r-- root root Jul : mysqli_embedded.c
-rw-rw-r-- root root Jul : mysqli_exception.c
-rw-rw-r-- root root Jul : mysqli_fe.c
-rw-rw-r-- root root Jul : mysqli_fe.h
-rw-rw-r-- root root Jul : mysqli_libmysql.h
-rw-rw-r-- root root Jul : mysqli_mysqlnd.h
-rw-rw-r-- root root Jul : mysqli_nonapi.c
-rw-rw-r-- root root Jul : mysqli_priv.h
-rw-rw-r-- root root Jul : mysqli_prop.c
-rw-rw-r-- root root Jul : mysqli_report.c
-rw-rw-r-- root root Jul : mysqli_result_iterator.c
-rw-rw-r-- root root Jul : mysqli_warning.c
-rw-rw-r-- root root Jul : package.xml
-rw-rw-r-- root root Jul : php_mysqli.h
-rw-rw-r-- root root Jul : php_mysqli_structs.h
-rw-r--r-- root root Aug : run-tests.php
drwxrwxr-x root root Jul : tests
-rw-rw-r-- root root Jul : TODO
发现会多创建出来一些文件。
在预编译之前先将 mysqlnd 扩展复制到 mysqli 目录下,因为 mysqli 需要依赖 mysqlnd,如下:
[root@ryan mysqli]# mkdir ext
[root@ryan mysqli]# cd ../
[root@ryan ext]# cp -r mysqlnd mysqli/ext
[root@ryan ext]# cd mysqli
预编译
[root@ryan mysqli]# ./configure --with-php-config=/usr/local/lnmp/php7/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config
[root@ryan mysqli]# echo $?
在此安装中,--with-php-config=/usr/local/lnmp/php7/bin/php-config 参数是固定的。可以 find 来搜索使用 php-config 和 mysql_config。
编译
[root@ryan mysqli]# make
[root@ryan mysqli]# echo $?
安装
[root@ryan mysqli]# make install
……
----------------------------------------------------------------------
Installing shared extensions: /usr/local/lnmp/php7/lib/php/extensions/no-debug-non-zts-/
Installing header files: /usr/local/lnmp/php7/include/php/
[root@ryan mysqli]# echo $?
查看动态模块文件
[root@ryan mysqli]# ll /usr/local/lnmp/php7/lib/php/extensions/no-debug-non-zts-/
total
-rwxr-xr-x root root Aug : mysqli.so
-rwxr-xr-x root root Aug : opcache.a
-rwxr-xr-x root root Aug : opcache.so
可以看到已经生成 mysqli.so 模块文件,此目录为 PHP 的动态扩展模块目录,这与查看phpinfo中动态扩展模块得到的目录一致,如下:
[root@ryan mysqli]# /usr/local/lnmp/php7/bin/php -i |grep -i extension_dir
extension_dir => /usr/local/lnmp/php7/lib/php/extensions/no-debug-non-zts- => /usr/local/lnmp/php7/lib/php/extensions/no-debug-non-zts-
sqlite3.extension_dir => no value => no value
添加扩展的模块
[root@ryan mysqli]# vim /usr/local/lnmp/php7/etc/php.ini
extension=mysqli.so
php.ini 里面的分号;是注释符。
查看 PHP 加载的模块
[root@ryan mysqli]# /usr/local/lnmp/php7/sbin/php-fpm -m
[PHP Modules]
cgi-fcgi
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
mysqli
openssl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib [Zend Modules]
发现 mysqli 动态扩展模块已经添加完成。只要是使用 extension 手动添加的模块,均属于动态(shared)扩展模块,否则即为静态(static)模块。
2.3 安装 Nginx
访问 Nginx 官方网站:http://nginx.org,可以发现其更新速度很快,此处我们选择下载当前最新文档版,stable 1.14.0,如下:

下载和解压 Nginx
[root@ryan php-7.2.]# cd /usr/local/src
[root@ryan src]# wget http://nginx.org/download/nginx-1.14.0.tar.gz
[root@ryan src]# tar zxvf nginx-1.14..tar.gz
预编译
[root@ryan src]# cd nginx-1.14.
[root@ryan nginx-1.14.]# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module
[root@ryan nginx-1.14.]# echo $?
编译
[root@ryan nginx-1.14.]# make
[root@ryan nginx-1.14.]# echo $?
安装
[root@ryan nginx-1.14.]# make install
[root@ryan nginx-1.14.]# echo $?
启动 Nginx
[root@ryan nginx-1.14.]# ll /usr/local/lnmp/nginx/sbin
total
-rwxr-xr-x root root Aug : nginx
[root@ryan nginx-1.14.]# /usr/local/lnmp/nginx/sbin/nginx
[root@ryan nginx-1.14.]# ps aux |grep nginx
root 0.0 0.0 ? Ss : : nginx: master process /usr/local/lnmp/nginx/sbin/nginx
nobody 0.0 0.0 ? S : : nginx: worker process
root 0.0 0.0 pts/ S+ : : grep nginx
看到 Nginx 默认使用系统自带的 nobody 用户。
配置解析 php
找到 /usr/local/lnmp/nginx/conf/nginx.conf,将如下内容前面的 # 删掉,如下:
[root@ryan nginx-1.14.]# cd /usr/local/lnmp/nginx/conf
[root@ryan conf]# vim /usr/local/lnmp/nginx/conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
并将其修改为:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www/DiscuzX$fastcgi_script_name;
include fastcgi_params;
}
将 root 网站根目录 /data/www/DiscuzX; 放在上层,作为全局配置,并将 location / 中的 root he error_page 中的 root 注释掉。
验证 nginx 配置文件
[root@ryan conf]# /usr/local/lnmp/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful
启动 Nginx 的命令
[root@ryan mysqli]# /usr/local/lnmp/nginx/sbin/nginx
重新加载
[root@ryan conf]# /usr/local/lnmp/nginx/sbin/nginx -s reload
测试是否正常解析

添加 index.php 到 index 索引页后,访问如下:

综上:
php 的配置文件为:/usr/local/lnmp/php7/etc/php.ini
php-fpm 的配置文件为:/usr/local/lnmp/php7/etc/php-fpm.conf
启动 MySQL 的命令:
# service mysqld start
启动 php-fpm 的命令:
# service php-fpm start
启动 nginx 的命令:
# /usr/local/lnmp/nginx/sbin/nginx
停止 nginx 的命令:
# /usr/local/lnmp/nginx/sbin/nginx -s stop
重新加载 nginx 配置文件的命令:
# /usr/local/lnmp/nginx/sbin/nginx -s reload
其中 -s signal:给一个 nginx 主进程发送信号:stop(停止), quit(退出), reopen(重启), reload(重新加载配置文件)
ldd命令用于打印程序或者库文件所依赖的共享库列表。如下:
[root@ryan ~]# which ls
alias ls='ls --color=auto'
/bin/ls
[root@ryan ~]# ldd /bin/ls
linux-vdso.so. => (0x00007ffc292e1000)
libselinux.so. => /lib64/libselinux.so. (0x00007f5b47388000)
librt.so. => /lib64/librt.so. (0x00007f5b47180000)
libcap.so. => /lib64/libcap.so. (0x00007f5b46f7b000)
libacl.so. => /lib64/libacl.so. (0x00007f5b46d73000)
libc.so. => /lib64/libc.so. (0x00007f5b469df000)
libdl.so. => /lib64/libdl.so. (0x00007f5b467da000)
/lib64/ld-linux-x86-.so. (0x00007f5b475b3000)
libpthread.so. => /lib64/libpthread.so. (0x00007f5b465bd000)
libattr.so. => /lib64/libattr.so. (0x00007f5b463b8000)
注意:在 ldd 命令打印的结果中,"=>"左边的表示该程序需要连接的共享库之 so 名称,右边表示由 Linux 的共享库系统找到的对应的共享库在文件系统中的具体位置。默认情况下,/etc/ld.so.conf 文件中包含有默认的共享库搜索路径。
附录
LNMP架构的搭建(Linux+Nginx+MySQL+PHP源码安装 )+Discuz论坛的搭建
centos php7 安装mysqli扩展心得:https://www.cnblogs.com/fengxuezhiyi/p/6896702.html
LNMP 一键安装包:https://lnmp.org/install.html
php-fpm 启动后没有监听端口9000:https://blog.csdn.net/bujidexinq/article/details/70209625
nginx命令详解:https://www.cnblogs.com/linux-centos/p/5790506.html
linux下php添加mysqli扩展mysqli_api.lo错误:https://jingyan.baidu.com/article/a3f121e4cb684afc9152bb73.html
Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用
Linux 笔记 - 第十六章 LNMP 之(一) 环境搭建的更多相关文章
- 《HTTP 权威指南》笔记:第十六章&第十七章 国际化、内容协商与转码
<HTTP 权威指南>笔记:第十六章 国际化 客户端通过在请求报文中的 Accept-Language 首部和 Accept-Charset 首部来告知服务器:“我理解这些语言.”服务器通 ...
- Linux 笔记 - 第十四章 LAMP 之(二) 环境配置
博客地址:http://www.moonxy.com 一.前言 LAMP 环境搭建好之后,其实仅仅是安装上了软件,我们还需要掌握 httpd 和 PHP 的配置. 二.httpd 配置 2.1 创建虚 ...
- Programming In Scala笔记-第十六章、Scala中的List
本章主要分析Scala中List的用法,List上可进行的操作,以及需要注意的地方. 一.List字面量 首先看几个List的示例. val fruit = List("apples&quo ...
- Linux 笔记 - 第十五章 MySQL 常用操作和 phpMyAdmin
博客地址:http://www.moonxy.com 一.前言 前面几章介绍了 MySQL 的安装和简单的配置,只会这些还不够,作为 Linux 系统管理员,我们还需要掌握一些基本的操作,以满足日常管 ...
- Linux 笔记 - 第十四章 LAMP 之(一) 环境搭建
博客地址:http://www.moonxy.com 一.前言 LAMP 是 Linux Apache MySQL PHP 的简写,即把 Apache.MySQL 以及 PHP 安装在 Linux 系 ...
- Linux 笔记 - 第十二章 Shell 脚本
博客地址:http://www.moonxy.com 一.前言 常见的编程语言分为两类:一类是编译型语言,如:C.C++ 和 Java等,它们远行前要经过编译器的编译.另一类是解释型语言,不需要编译, ...
- Linux 笔记 - 第二十四章 配置 Tomcat
一.前言 Tomcat 是 Apache 软件基金会(Apache Software Foundation)Jakarta 项目中的核心项目,由 Apache.Sun 和其他一些公司及个人共同开发.使 ...
- Linux 笔记 - 第二十二章 Nginx 配置 SSL
一.前言 基础知识 1.1 公钥密码体制(public-key cryptography) 公钥密码体制分为三个部分,公钥.私钥.加密解密算法,它的加密解密过程如下: 加密:通过加密算法和公钥对内容( ...
- JavaScript笔记 第十六章 匿名函数和闭包
1.匿名函数 2.闭包 匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数. 一.匿名函数 //普通函数 function getName() { return 'name'; } a ...
随机推荐
- Code signing is required for product type 'Unit Test Bundle' in SDK 'iOS 11.0.1'
Code signing is required for product type 'Unit Test Bundle' in SDK 'iOS 11.0.1' 进入 projects and lis ...
- egret项目发布为微信小程序
1.更改游戏的缩放模式 因为微信小游戏不支持showAll,如果你使用了showAll模式.可以改成fixedWidth或fixedHeight.在index.html里修改,如下图 但这个又涉及到了 ...
- Linux系统@根目录下各目录作用归纳图
- 简单架构:反射实现抽象工厂+IDAL接口完全独立DAL
一.普通架构中存在的问题 StudentDB数据库,包含一张StudentInfoTB表,结构如下: s_id int primary key identity(1,1), s_name Nvarch ...
- Flink集群Standalone启动脚本(源码分析)
整个Flink集群的角色分为Jobmanager和TaskManager 以Standalone为例来看一下脚本里面是怎样启动集群的 找到源码的dist这里面包含了启动的脚本文件 standalone ...
- Spring Cloud Zuul的动态路由怎样做?集成Nacos实现很简单
一.说明 网关的核心概念就是路由配置和路由规则,而作为所有请求流量的入口,在实际生产环境中为了保证高可靠和高可用,是尽量要避免重启的,所以实现动态路由是非常有必要的:本文主要介绍实现的思路,并且以Na ...
- Unity进阶:用AssetBundle和Json做了一个玩家登陆界面
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- java杨辉三角
public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println( ...
- GCN和GCN在文本分类中应用
1.GCN的概念 传统CNN卷积可以处理图片等欧式结构的数据,却很难处理社交网络.信息网络等非欧式结构的数据.一般图片是由c个通道h行w列的矩阵组成的,结构非常规整.而社交网络.信息网络 ...
- 【Leetcode】【简单】【217. 存在重复元素】【JavaScript】
题目描述 217. 存在重复元素 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: 输入: [ ...