如果没有yum,可以用rpm安装软件。
rpm软件包管理器。源码+安装规则
安装步骤:
1.下载和解压。
2.1收集系统信息 执行./configure 或 ./config
2.2编译(根据系统进行分析,定制可以安装的方案)
3.生成(源代码+安装方案)= 二进制可执行文件 make 命令
4.正式安装二进制文件 make install命令
5.垃圾文件的清理 make clean
因此请先配置妥当Yum软件仓库,然后把下面列出的这些软件包都统统安装上
具备C语言、C++语言、Perl语言的编译器,以及各种常见的编译支持函数库程序。
yum install -y apr* autoconf automake bison bzip2 bzip2* compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libtiff libtiff* make mpfr ncurses* ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils telnet t1lib t1lib* nasm nasm* wget zlib-devel
/usr/local/src 这里面放17个的源码程序
tar xzvf cmake-2.8.11.2.tar.gz 解压 cmake是编译器
cd /cmake-2.8.11.2
./configure
make
make install
make clean
cmake是用cmake编译其他文件
useradd mysql -s /sbin/nologin
id mysql
mkdir /usr/local/mysql/var /usr/local/mysql是用来放mysql的程序 var用来放数据文件
chown -Rf mysql:mysql /usr/local/mysql
tar xzvf mysql-5.6.19.tar.gz
cd mysql-5.6.19
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc 在编译数据库时使用的是cmake命令,其中,-DCMAKE_INSTALL_PREFIX参数用于定义数据库服务程序的保存目录,-DMYSQL_DATADIR参数用于定义真实数据库文件的目录,-DSYSCONFDIR则是定义MySQL数据库配置文件的保存目录。
为了让MySQL数据库程序正常运转起来,需要先删除/etc目录中的默认配置文件,然后在MySQL数据库程序的保存目录scripts内找到一个名为mysql_install_db的脚本程序,执行这个脚本程序并使用--user参数指定MySQL服务的对应账号名称(在前面步骤已经创建),使用--basedir参数指定MySQL服务程序的保存目录,使用--datadir参数指定MySQL真实数据库的文件保存目录,这样即可生成系统数据库文件,也会生成出新的MySQL服务配置文件。
[root@linuxprobe mysql-5.6.19]# rm -rf /etc/my.cnf [root@linuxprobe mysql-5.6.19]# cd /usr/local/mysql [root@linuxprobe mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var
把系统新生成的MySQL数据库配置文件链接到/etc目录中,然后把程序目录中的开机程序文件复制到/etc/rc.d/init.d目录中,以便通过service命令来管理MySQL数据库服务程序。记得把数据库脚本文件的权限修改成755以便于让用户有执行该脚本的权限:
[root@linuxprobe mysql]# ln -s my.cnf /etc/my.cnf [root@linuxprobe mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld [root@linuxprobe mysql]# chmod 755 /etc/rc.d/init.d/mysqld
编辑刚复制的MySQL数据库脚本文件,把第46、47行的basedir与datadir参数分别修改为MySQL数据库程序的保存目录和真实数据库的文件内容。
[root@linuxprobe mysql]# vim /etc/rc.d/init.d/mysqld ………………省略部分输出信息……………… 39 # 40 # If you want to affect other MySQL variables, you should make your changes 41 # in the /etc/my.cnf, ~/.my.cnf or other MySQL configuration files. 42 43 # If you change base dir, you must also change datadir. These may get 44 # overwritten by settings in the MySQL configuration files. 45 46 basedir=/usr/local/mysql 47 datadir=/usr/local/mysql/var 48 ………………省略部分输出信息………………
配置好脚本文件后便可以用service命令启动mysqld数据库服务了。mysqld是MySQL数据库程序的服务名称,注意不要写错。顺带再使用chkconfig命令把mysqld服务程序加入到开机启动项中。
[root@Linuxprobe mysql]# service mysqld start Starting MySQL. SUCCESS! [root@linuxprobe mysql]# chkconfig mysqld on
MySQL数据库程序自带了许多命令,但是Bash终端的PATH变量并不会包含这些命令所存放的目录,因此我们也无法顺利地对MySQL数据库进行初始化,也就不能使用MySQL数据库自带的命令了。想要把命令所保存的目录永久性地定义到PATH变量中,需要编辑/etc/profile文件并写入追加的命令目录,这样当物理设备在下一次重启时就会永久生效了。如果不想通过重启设备的方式来生效,也可以使用source命令加载一下/ect/profile文件,此时新的PATH变量也可以立即生效了。
[root@linuxprobe mysql]# vim /etc/profile ………………省略部分输出信息……………… 64 65 for i in /etc/profile.d/*.sh ; do 66 if [ -r "$i" ]; then 67 if [ "${-#*i}" != "$-" ]; then 68 . "$i" 69 else 70 . "$i" >/dev/null 71 fi 72 fi 73 done 74 export PATH=$PATH:/usr/local/mysql/bin 75 unset i 76 unset -f pathmunge [root@linuxprobe mysql]# source /etc/profile
MySQL数据库服务程序还会调用到一些程序文件和函数库文件。由于当前是通过源码包方式安装MySQL数据库,因此现在也必须以手动方式把这些文件链接过来。
[root@linuxprobe mysql]# mkdir /var/lib/mysql [root@linuxprobe mysql]# ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql [root@linuxprobe mysql]# ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock [root@linuxprobe mysql]# ln -s /usr/local/mysql/include/mysql /usr/include/mysql
现在,MySQL数据库服务程序已经启动,调用的各个函数文件已经就位,PATH环境变量中也加入了MySQL数据库命令的所在目录。接下来准备对MySQL数据库进行初始化,这个初始化的配置过程与MariaDB数据库是一样的,只是最后变成了Thanks for using MySQL!
[root@linuxprobe mysql]# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MySQL to secure it, we'll need the current password for the root user. If you've just installed MySQL, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): 此处只需按下回车键 OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MySQL root user without the proper authorisation. Set root password? [Y/n] y (要为root管理员设置数据库的密码) New password: 输入要为root管理员设置的数据库密码 Re-enter new password: 再输入一次密码 Password updated successfully! Reloading privilege tables.. ... Success! By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y (删除匿名账户) ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y (禁止root管理员从远程登录) ... Success! By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y (删除test数据库并取消对其的访问权限) - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y (刷新授权表,让初始化后的设定立即生效) ... Success! All done! If you've completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL! Cleaning up...
Nginx安装
在正式安装Nginx服务程序之前,我们还需要为其解决相关的软件依赖关系,例如用于提供Perl语言兼容的正则表达式库的软件包pcre,就是Nginx服务程序用于实现伪静态功能必不可少的依赖包。下面来解压、编译、生成、安装Nginx服务程序的源码文件:
[root@linuxprobe ~]# cd /usr/local/src [root@linuxprobe src]# tar xzvf pcre-8.35.tar.gz [root@linuxprobe src]# cd pcre-8.35 [root@linuxprobe pcre-8.35]# ./configure --prefix=/usr/local/pcre [root@linuxprobe pcre-8.35]# make [root@linuxprobe pcre-8.35]# make install
openssl软件包是用于提供网站加密证书服务的程序文件,在安装该程序时需要自定义服务程序的安装目录,以便于稍后调用它们的时候更可控。
[root@linuxprobe pcre-8.35]# cd /usr/local/src [root@linuxprobe src]# tar xzvf openssl-1.0.1h.tar.gz [root@linuxprobe src]# cd openssl-1.0.1h [root@linuxprobe openssl-1.0.1h]# ./config --prefix=/usr/local/openssl [root@linuxprobe openssl-1.0.1h]# make [root@linuxprobe openssl-1.0.1h]# make install
openssl软件包安装后默认会在/usr/local/openssl/bin目录中提供很多的可用命令,我们需要像前面的操作那样,将这个目录添加到PATH环境变量中,并写入到配置文件中,最后执行source命令以便让新的PATH环境变量内容可以立即生效:
[root@linuxprobe pcre-8.35]# vim /etc/profile ………………省略部分输出信息……………… 64 65 for i in /etc/profile.d/*.sh ; do 66 if [ -r "$i" ]; then 67 if [ "${-#*i}" != "$-" ]; then 68 . "$i" 69 else 70 . "$i" >/dev/null 71 fi 72 fi 73 done 74 export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin 75 unset i 76 unset -f pathmunge [root@linuxprobe pcre-8.35]# source /etc/profile
zlib软件包是用于提供压缩功能的函数库文件。其实Nginx服务程序调用的这些服务程序无需深入了解,只要大致了解其作用就已经足够了:
[root@linuxprobe pcre-8.35]# cd /usr/local/src [root@linuxprobe src]# tar xzvf zlib-1.2.8.tar.gz [root@linuxprobe src]# cd zlib-1.2.8 [root@linuxprobe zlib-1.2.8]# ./configure --prefix=/usr/local/zlib [root@linuxprobe zlib-1.2.8]# make [root@linuxprobe zlib-1.2.8]# make install
在安装部署好具有依赖关系的软件包之后,创建一个用于执行Nginx服务程序的账户。账户名称可以自定义,但一定别忘记,因为在后续需要调用:
[root@linuxprobe zlib-1.2.8]# cd .. [root@linuxprobe src]# useradd www -s /sbin/nologin
在使用命令编译Nginx服务程序时,需要设置特别多的参数,其中,--prefix参数用于定义服务程序稍后安装到的位置,--user与--group参数用于指定执行Nginx服务程序的用户名和用户组。在使用参数调用openssl、zlib、pcre软件包时,请写出软件源码包的解压路径,而不是程序的安装路径:
[root@linuxprobe src]# tar xzvf nginx-1.6.0.tar.gz [root@linuxprobe src]# cd nginx-1.6.0/ [root@linuxprobe nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.1h --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.35 [root@linuxprobe nginx-1.6.0]# make [root@linuxprobe nginx-1.6.0]# make install
没有通过rpc安装所以没法使用systemctl enable命令来安装启动。下面是刘遄写的脚本可以
[root@linuxprobe nginx-1.6.0]# vim /etc/rc.d/init.d/nginx #!/bin/bash # nginx - this script starts and stops the nginx daemon # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /etc/nginx/nginx.conf # config: /usr/local/nginx/conf/nginx.conf # pidfile: /usr/local/nginx/logs/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/nginx/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() { # make required directories user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -z "`grep $user /etc/passwd`" ]; then useradd -M -s /bin/nologin $user fi options=`$nginx -V 2>&1 | grep 'configure arguments:'` for opt in $options; do if [ `echo $opt | grep '.*-temp-path'` ]; then value=`echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then # echo "creating" $value mkdir -p $value && chown -R $user $value fi fi done } start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { #configtest || return $? stop sleep 1 start } reload() { #configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac
保存脚本文件后记得为其赋予755权限,以便能够执行这个脚本。然后以绝对路径的方式执行这个脚本,通过restart参数重启Nginx服务程序,最后再使用chkconfig命令将Nginx服务程序添加至开机启动项中。大功告成!
[root@linuxprobe nginx-1.6.0]# chmod 755 /etc/rc.d/init.d/nginx [root@linuxprobe nginx-1.6.0]# /etc/rc.d/init.d/nginx restart Restarting nginx (via systemctl): [ OK ] [root@linuxprobe nginx-1.6.0]# chkconfig nginx on
192.168.10.10就可以访问nginx了
PHP
PHP(Hypertxt Preprocessor,超文本预处理器)是一种通用的开源脚本语言,发明于1995年,它吸取了C语言、Java语言及Perl语言的很多优点,具有开源、免费、快捷、跨平台性强、效率高等优良特性,是目前Web开发领域最常用的语言之一。本书的配套站点就是基于PHP语言编写的。
使用源码包的方式编译安装PHP语言环境其实并不复杂,难点在于解决PHP的程序包和其他软件的依赖关系。为此需要先安装部署将近十个用于搭建网站页面的软件程序包,然后才能正式安装PHP程序。
yasm源码包是一款常见的开源汇编器,其解压、编译、安装过程中生成的输出信息均已省略:
[root@linuxprobe nginx-1.6.0]# cd .. [root@linuxprobe src]# tar zxvf yasm-1.2.0.tar.gz [root@linuxprobe src]# cd yasm-1.2.0 [root@linuxprobe yasm-1.2.0]# ./configure [root@linuxprobe yasm-1.2.0]# make [root@linuxprobe yasm-1.2.0]# make install
libmcrypt源码包是用于加密算法的扩展库程序,其解压、编译、安装过程中生成的输出信息均已省略:
[root@linuxprobe yasm-1.2.0]# cd .. [root@linuxprobe src]# tar zxvf libmcrypt-2.5.8.tar.gz [root@linuxprobe src]# cd libmcrypt-2.5.8 [root@linuxprobe libmcrypt-2.5.8]# ./configure [root@linuxprobe libmcrypt-2.5.8]# make [root@linuxprobe libmcrypt-2.5.8]# make install
libvpx源码包是用于提供视频编码器的服务程序,其解压、编译、安装过程中生成的输出信息均已省略。相信会有很多粗心的读者顺手使用了tar命令的xzvf参数,但如果仔细观察就会发现libvpx源码包的后缀是.tar.bz2,即表示使用bzip2格式进行的压缩,因此正确的解压参数应该是xjvf:
[root@linuxprobe libmcrypt-2.5.8]# cd .. [root@linuxprobe src]# tar xjvf libvpx-v1.3.0.tar.bz2 [root@linuxprobe src]# cd libvpx-v1.3.0 [root@linuxprobe libvpx-v1.3.0]# ./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9 [root@linuxprobe libvpx-v1.3.0]# make [root@linuxprobe libvpx-v1.3.0]# make install
tiff源码包是用于提供标签图像文件格式的服务程序,其解压、编译、安装过程中生成的输出信息均已省略:
[root@linuxprobe libvpx-v1.3.0]# cd .. [root@linuxprobe src]# tar zxvf tiff-4.0.3.tar.gz [root@linuxprobe src]# cd tiff-4.0.3 [root@linuxprobe tiff-4.0.3]# ./configure --prefix=/usr/local/tiff --enable-shared [root@linuxprobe tiff-4.0.3]# make [root@linuxprobe tiff-4.0.3]# make install
libpng源码包是用于提供png图片格式支持函数库的服务程序,其解压、编译、安装过程中生成的输出信息均已省略:
[root@linuxprobe tiff-4.0.3]# cd .. [root@linuxprobe src]# tar zxvf libpng-1.6.12.tar.gz [root@linuxprobe src]# cd libpng-1.6.12 [root@linuxprobe libpng-1.6.12]# ./configure --prefix=/usr/local/libpng --enable-shared [root@linuxprobe libpng-1.6.12]# make [root@linuxprobe libpng-1.6.12]# make install
freetype源码包是用于提供字体支持引擎的服务程序,其解压、编译、安装过程中生成的输出信息均已省略:
[root@linuxprobe libpng-1.6.12]# cd .. [root@linuxprobe src]# tar zxvf freetype-2.5.3.tar.gz [root@linuxprobe src]# cd freetype-2.5.3 [root@linuxprobe freetype-2.5.3]# ./configure --prefix=/usr/local/freetype --enable-shared [root@linuxprobe freetype-2.5.3]# make [root@linuxprobe freetype-2.5.3]# make install
jpeg源码包是用于提供jpeg图片格式支持函数库的服务程序,其解压、编译、安装过程中生成的输出信息均已省略:
[root@linuxprobe freetype-2.5.3]# cd .. [root@linuxprobe src]# tar zxvf jpegsrc.v9a.tar.gz [root@linuxprobe src]# cd jpeg-9a [root@linuxprobe jpeg-9a]# ./configure --prefix=/usr/local/jpeg --enable-shared [root@linuxprobe jpeg-9a]# make [root@linuxprobe jpeg-9a]# make install
libgd源码包是用于提供图形处理的服务程序,其解压、编译、安装过程中生成的输出信息均已省略。在编译libgd源码包时,请记得写入的是jpeg、libpng、freetype、tiff、libvpx等服务程序在系统中的安装路径,即在上面安装过程中使用--prefix参数指定的目录路径:
[root@linuxprobe jpeg-9a]# cd .. [root@linuxprobe src]# tar zxvf libgd-2.1.0.tar.gz [root@linuxprobe src]# cd libgd-2.1.0 [root@linuxprobe libgd-2.1.0]# ./configure --prefix=/usr/local/libgd --enable-shared --with-jpeg=/usr/local/jpeg --with-png=/usr/local/libpng --with-freetype=/usr/local/freetype --with-fontconfig=/usr/local/freetype --with-xpm=/usr/ --with-tiff=/usr/local/tiff --with-vpx=/usr/local/libvpx [root@linuxprobe libgd-2.1.0]# make [root@linuxprobe libgd-2.1.0]# make install
t1lib源码包是用于提供图片生成函数库的服务程序,其解压、编译、安装过程中生成的输出信息均已省略。安装后把/usr/lib64目录中的函数文件链接到/usr/lib目录中,以便系统能够顺利调取到函数文件:
[root@linuxprobe cd libgd-2.1.0]# cd .. [root@linuxprobe src]# tar zxvf t1lib-5.1.2.tar.gz [root@linuxprobe src]# cd t1lib-5.1.2 [root@linuxprobe t1lib-5.1.2]# ./configure --prefix=/usr/local/t1lib --enable-shared [root@linuxprobe t1lib-5.1.2]# make [root@linuxprobe t1lib-5.1.2]# make install [root@linuxprobe t1lib-5.1.2]# ln -s /usr/lib64/libltdl.so /usr/lib/libltdl.so [root@linuxprobe t1lib-5.1.2]# cp -frp /usr/lib64/libXpm.so* /usr/lib/
此时终于把编译php服务源码包的相关软件包都已经安装部署妥当了。在开始编译php源码包之前,先定义一个名为LD_LIBRARY_PATH的全局环境变量,该环境变量的作用是帮助系统找到指定的动态链接库文件,这些文件是编译php服务源码包的必须元素之一。编译php服务源码包时,除了定义要安装到的目录以外,还需要依次定义配置php服务程序配置文件的保存目录、MySQL数据库服务程序所在目录、MySQL数据库服务程序配置文件所在目录,以及libpng、jpeg、freetype、libvpx、zlib、t1lib等服务程序的安装目录路径,并通过参数启动php服务程序的诸多默认功能:
[root@linuxprobe t1lib-5.1.2]# cd .. [root@linuxprobe src]# tar -zvxf php-5.5.14.tar.gz [root@linuxprobe src]# cd php-5.5.14 [root@linuxprobe php-5.5.14]# export LD_LIBRARY_PATH=/usr/local/libgd/lib [root@linuxprobe php-5.5.14]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-pdo-mysql=/usr/local/mysql --with-gd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/ --with-vpx-dir=/usr/local/libvpx/ --with-zlib-dir=/usr/local/zlib --with-t1lib=/usr/local/t1lib --with-iconv --enable-libxml --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-opcache --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --enable-ctype [root@linuxprobe php-5.5.14]# make [root@linuxprobe php-5.5.14]# make install
在php源码包程序安装完成后,需要删除当前默认的配置文件,然后将php服务程序目录中相应的配置文件复制过来:
[root@linuxprobe php-5.5.14]# rm -rf /etc/php.ini [root@linuxprobe php-5.5.14]# ln -s /usr/local/php/etc/php.ini /etc/php.ini [root@linuxprobe php-5.5.14]# cp php.ini-production /usr/local/php/etc/php.ini [root@linuxprobe php-5.5.14]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf [root@linuxprobe php-5.5.14]# ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf
php-fpm.conf是php服务程序重要的配置文件之一,我们需要启用该配置文件中第25行左右的pid文件保存目录,然后分别将第148和149行的user与group参数分别修改为www账户和用户组名称:
[root@linuxprobe php-5.5.14]# vim /usr/local/php/etc/php-fpm.conf 1 ;;;;;;;;;;;;;;;;;;;;; 2 ; FPM Configuration ; 3 ;;;;;;;;;;;;;;;;;;;;; 4 5 ; All relative paths in this configuration file are relative to PHP's instal l 6 ; prefix (/usr/local/php). This prefix can be dynamically changed by using t he 7 ; '-p' argument from the command line. 8 9 ; Include one or more files. If glob(3) exists, it is used to include a bunc h of 10 ; files from a glob(3) pattern. This directive can be used everywhere in the 11 ; file. 12 ; Relative path can also be used. They will be prefixed by: 13 ; - the global prefix if it's been set (-p argument) 14 ; - /usr/local/php otherwise 15 ;include=etc/fpm.d/*.conf 16 17 ;;;;;;;;;;;;;;;;;; 18 ; Global Options ; 19 ;;;;;;;;;;;;;;;;;; 20 21 [global] 22 ; Pid file 23 ; Note: the default prefix is /usr/local/php/var 24 ; Default Value: none 25 pid = run/php-fpm.pid 26 ………………省略部分输出信息……………… 145 ; Unix user/group of processes 146 ; Note: The user is mandatory. If the group is not set, the default user's g roup 147 ; will be used. 148 user = www 149 group = www 150 ………………省略部分输出信息………………
配置妥当后便可把用于管理php服务的脚本文件复制到/etc/rc.d/init.d中了。为了能够执行脚本,请记得为脚本赋予755权限。最后把php-fpm服务程序加入到开机启动项中:
[root@linuxprobe php-5.5.14]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm [root@linuxprobe php-5.5.14]# chmod 755 /etc/rc.d/init.d/php-fpm [root@linuxprobe php-5.5.14]# chkconfig php-fpm on
由于php服务程序的配置参数直接会影响到Web服务服务的运行环境,因此,如果默认开启了一些不必要且高危的功能(如允许用户在网页中执行Linux命令),则会降低网站被入侵的难度,入侵人员甚至可以拿到整台Web服务器的管理权限。因此我们需要编辑php.ini配置文件,在305行的disable_functions参数后面追加上要禁止的功能。下面的禁用功能名单是刘遄老师依据网站运行的经验而定制的,不见得适合每个生产环境,建议大家在此基础上根据自身工作需求酌情删减:
[root@linuxprobe php-5.5.14]# vim /usr/local/php/etc/php.ini ………………省略部分输出信息……………… 300 301 ; This directive allows you to disable certain functions for security reasons. 302 ; It receives a comma-delimited list of function names. This directive is 303 ; *NOT* affected by whether Safe Mode is turned On or Off. 304 ; http://php.net/disable-functions 305 disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restor e,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,g etservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,po six_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_ getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_ setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname 306 ………………省略部分输出信息………………
这样就把php服务程序配置妥当了。最后,还需要编辑Nginx服务程序的主配置文件,把第2行的井号(#)删除,然后在后面写上负责运行Nginx服务程序的账户名称和用户组名称;在第45行的index参数后面写上网站的首页名称。最后是将第65~71行参数前的井号(#)删除来启用参数,主要是修改第69行的脚本名称路径参数,其中$document_root变量即为网站信息存储的根目录路径,若没有设置该变量,则Nginx服务程序无法找到网站信息,因此会提示“404页面未找到”的报错信息。在确认参数信息填写正确后便可重启Nginx服务与php-fpm服务。
[root@linuxprobe php-5.5.14]# vim /usr/local/nginx/conf/nginx.conf 1 2 user www www; 3 worker_processes 1; 4 5 #error_log logs/error.log; 6 #error_log logs/error.log notice; 7 #error_log logs/error.log info; 8 9 #pid logs/nginx.pid; 10 11 ………………省略部分输出信息……………… 40 41 #access_log logs/host.access.log main; 42 43 location / { 44 root html; 45 index index.html index.htm index.php; 46 } 47 ………………省略部分输出信息……………… 62 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 $document_root$fastcgi_script_name; 70 include fastcgi_params; 71 } 72 ………………省略部分输出信息……………… [root@linuxprobe php-5.5.14]# systemctl restart nginx [root@linuxprobe php-5.5.14]# systemctl restart php-fpm
至此,LNMP动态网站环境架构的配置实验全部结束。
相关推荐
"Linux I2C总线分析(主要是probe的方式)" Linux I2C总线分析是指Linux操作系统中I2C总线的工作机制和结构。I2C总线是串行总线,它可以实现多个设备之间的数据交换。Linux I2C总线分析可以分为三个组成部分:I2C...
在嵌入式Linux系统中,`probe`是一个关键机制,用于连接硬件设备(device)与驱动程序(device_driver)。在Linux内核加载过程中,probe机制允许内核发现并初始化硬件设备,确保驱动程序能正确地识别和管理这些设备...
6. **跨平台**:ucProbe支持Windows、Linux和Mac OS操作系统,满足不同开发环境的需求。 7. **源码级调试**:通过集成的GDB调试服务器,ucProbe能实现源码级别的调试,这对于理解代码执行流程和查找错误至关重要。 ...
在Linux驱动程序中,`probe`函数是设备驱动的核心部分,用于初始化和配置硬件设备。这个函数的调用时机和过程是设备驱动模型中的关键环节。当我们在编写驱动时,通常会定义一个`probe`函数,该函数会在特定条件下被...
probe 是 I2C 设备驱动中非常重要的一个步骤,在 probe 中,我们需要根据设备的地址等信息来探测设备,并注册设备驱动。这一步骤非常重要,因为它决定了设备驱动的生命周期。 在 Linux 中,I2C 设备驱动的实现主要...
文献资料安装开发安装QtPyVCP使用文档资源 (#hazzy)(隔离) (#qtpyvcp:matrix.org)(桥接) (桥接) (桥接)依存关系 Python 2.7 PyQt5或PySide2 Probe Basic是使用LinuxCNC Debian 9 x64(拉伸) 和Ubuntu ...
在这个文件中,你会看到函数如`ov7725_probe`用于设备探测,`ov7725_remove`用于设备移除,以及`ov7725_video_init`和`ov7725_video_cleanup`用于视频流的开启和关闭。此外,还有处理I2C通信的代码,以读写传感器的...
Linux 设备驱动程序浅谈 Linux 设备驱动程序是指用于操作系统和硬件设备之间的交互接口。它是一个小程序,包含有关硬件设备的信息,用于管理计算机的硬件资源。 Linux 设备驱动程序扮演沟通的角色,把硬件的功能...
在Qt与GStreamer结合开发图像处理应用时,`probe`是一个强大的工具,它允许我们对数据流进行实时分析和操作。...在Linux环境下,这样的技术可以广泛应用于各种图像处理和计算机视觉任务,如视频分析、对象检测等。
util-linux-ng-2.17.2/shlibs/blkid/src/probe.c [code] util-linux-ng-2.17.2/shlibs/blkid/src/read.c [code] util-linux-ng-2.17.2/shlibs/blkid/src/resolve.c [code] util-linux-ng-2.17.2/shlibs/blkid/src...
- 编写识别设备的`probe`函数,通过比较设备ID(Vendor ID和Device ID)来确定是否支持该设备。 - 注册中断处理程序,处理来自PCIe设备的中断。 - 初始化设备,包括分配资源、设置寄存器、加载固件等。 - 实现...
当内核启动并加载驱动后,会扫描设备树,寻找匹配的平台设备,并调用驱动的probe方法(即初始化函数)。驱动程序在接收到探测请求后,可以通过I²C总线的`i2c_transfer()`函数进行读写操作,实现对AT24C02的访问。 ...
在Linux操作系统中,为了与硬件进行交互,需要适配相应的驱动程序。本篇文章将深入探讨RX8025在STM和Linux环境下的驱动实现以及常见问题。 首先,STM32系列微控制器是意法半导体公司推出的一种基于ARM Cortex-M内核...
在Linux系统中,USB(通用串行总线)驱动是连接外部设备,如键盘、鼠标、打印机、手机、存储设备等的关键组件。USB驱动程序属于内核的一部分,它负责管理和控制USB设备,使得操作系统能够识别并正确地与这些设备交互...
标题中的"qmi_wwan.rar_V2_linux lte_linux qmi_qmi_qmi_wwan"揭示了这个压缩包是关于Linux系统下用于3G和4G(LTE)无线广域网(WWAN)设备的驱动程序。这里的关键词"V2"表示这是驱动的第二个版本,通常意味着比之前...
"Linux系统下MTD/CFI驱动介绍" 在Linux系统下,MTD/CFI驱动是Flash存储器的驱动程序。MTD是Memory Technology Device的缩写,是Linux系统下的Flash存储器驱动接口。CFI是Common Flash Interface的缩写,是一个工业...
硬件探针1.6测试版硬件探针工具(hw-probe)-借助Linux硬件数据库来检测硬件,检查可操作性并查找驱动程序的工具: : 对于BSD用户: : 内容存货离线检视ACPI转储可操作性禁用日志隐私执照 关于探针—是计算机的硬件...
- 在NorFlash芯片被正确识别之后,Linux内核会通过调用`cfi_probe()`函数来初始化芯片。这一步通常发生在驱动加载的过程中。 - `cfi_probe()`函数会根据NorFlash的具体规格配置相应的参数,并设置好读写等操作接口...
《IBM Corporation Linux驱动程序探索——以xenbus_probe为例》 在开源的世界里,IBM Corporation以其深厚的技术底蕴和对Linux的贡献而闻名。本篇将深入探讨IBM为Linux内核提供的一个关键组件——xenbus_probe,这...