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 ...
随机推荐
- lumen 路由访问路径
项目目录/public/index.php/接你设置的路由 比如设置了 $app->get('/test', function () use ($app) { return $app-&g ...
- Flink 源码解析 —— Standalone Session Cluster 启动流程深度分析之 Task Manager 启动
Task Manager 启动 https://t.zsxq.com/qjEUFau 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Ma ...
- python小白手册之字符串的私有方法和公用方法
#字符串方法. name=input('1111') if name.isalnum(): print(是否由数字字母) isdigit isdecimal判断数字 strip去空格或者其他 name ...
- C语言编程入门之--第五章C语言基本运算和表达式-part4
5.3.5 和二进制极为密切的运算符 本小节的运算符需要借助二进制概念来理解. 二进制数据中,比如一个字节的数据,它的十进制为228,二进制就为11100100,如图5.11, 注意:如果不懂怎么转换 ...
- Windows 10“数字权利激活”永久性激活!!!
直接运行软件即可自动激活,等出现"激活成功"即可关闭软件. 注意事项: 激活软件不会帮你打开Windows update服务,如关闭系统自动更细服务的需要先启动服务. 可以在小娜搜 ...
- 亲,麻烦给个五星好评!—RatingBar
引言 上一篇的CheckBox已经让大家越来越接近实战演练了,本章我们继续分享干货给大家,今天介绍一个实用的UI控件RatingBar(星级评分条),对于使用过电商APP(某东,某宝等)的小伙伴们来说 ...
- unity_UGUI养成之路01
1.UGUI_UI之音量设计 2.控制音量音效的开关 实现开和关的互斥点击 实现开与关画面的显示 注意,上图并未选择分组.具体原因博主尚不清楚如果有知道的可以告知一二,谢谢各位!!! 代码: usi ...
- eShopOnContainers部署在docker的坑
把eShopOnContainers(.net core 的版本是2.1)下载之后,部署到docker上,查看容器eShopOnContainers的项目都部署上去了. 用http://localho ...
- Codeforces 1009E
题意略. 思路: 比如现在n = 11.那么我们观察a[1.....n]的出现次数: a[1]:2 ^ 10 + 10 * 2 ^ 9 a[2]:2 ^ 9 + 9 * 2 ^ 8 a[3]:2 ^ ...
- Oracle数据库测试和优化最佳实践: OTest介绍 (转)
当前Oracle数据库最佳测试工具OTest * Otest是用于Oracle数据库测试.优化.监控软件. * Otest是免费提供给Oracle客户和广大DBA工程师使用的软件.由原厂技术专家王 ...