• 欢迎来到本博客,希望可以y一起学习与分享

LinuxDeploy(ARM平台)编译安装各种服务器软件

教程&其他 benz 3年前 (2019-02-04) 246次浏览 0个评论 扫描二维码

目录

文章目录[隐藏]

准备

设备

Nubia Z7 MAX (NX505j)

 

Basic Spec Sheet
CPU Quad-core 2.5 GHz Krait 400
CPU架构 ARMv7l
CHIPSET Qualcomm MSM8974AC Snapdragon 801
GPU Adreno 330
内核版本 3.4.0-perf-g10be798
运行内存 2GB RAM
Android 版本 5.1.1
手机存储 32GB

环境

在手机上安装好以下软件:

1.Busy Box安卓软件

软件简介:BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android 系统的自带的shell。(摘自:百度百科)

在本实验中Busy Box作为Linux Deploy最主要的依赖软件软件地址:https://github.com/meefik/busybox/releases (本文使用最新版)

2.Linux Deploy安卓软件

软件简介:安卓平台虚拟机(chroot运行linux的容器)

软件地址:https://github.com/meefik/linuxdeploy/releases (本文使用最新版)

完成上面步骤,打开Linux Deploy,安装CentOS 7 (安装教程此处省略)
所以,实验环境是ARM平台的CentOS7系统

教程开始之前

CentOS 系统下,
执行命令:yum update更新系统,
执行命令:yum -y install wget安装wget命令,作为下载工具,
在所在的用户路径下,执行命令:mkdir download新建名为download的文件夹,用来存放下载的文件
完成后,开始下面的教程。

警告:搭建Apache+PHP+MySQL看这里

最好先装Apache,然后装mysql,最后装php,原因如下:
回到编译安装php,配置参数的时候(只列出个人觉得需要注意的)
./configure \
–prefix=/usr/local/php7 \ //这是php7安装目录..

–with-config-file-path=/usr/local/php7/etc \
/*这是配置目录,就是在自己的php7安装目录下的etc/,编译的时候会自动新建的,到时候php.ini、php-fpm.conf什么的都放在这里,在httpd.conf就不用指定什么PHPIniDir啦 */

–with-mysql-sock=/var/run/mysql/mysql.sock \
/*这个指定PHP7的Unix socket通信文件,所以说为什么要先安装mysql,可以用find / -name mysql.sock找到它的位置*/

–with-apxs2=/usr/local/apache2/bin/apxs \
/* 这个注意了,这个就是先装Apache的原因,是指定Apache安装目录下的bin/apxs文件,所安装东西也要留意自己的安装目录,然后这个参数是用来生成libphp7.so的动态库,有了这个动态库服务器才可以解析php */
所以,在最后编译安装PHP的时候,一定要有这几个配置参数:

在PHP编译过程中如果报错:

checking for Apache 2.0 handler-module support via DSO through APXS…

Sorry, I cannot run apxs. Possible reasons follow:

1. Perl is not installed
2. apxs was not found. Try to pass the path using –with-apxs2=/path/to/apxs
3. Apache was not built using –enable-so (the apxs usage page is displayed)

The output of /usr/local/apache/bin/apxs follows:
./configure: /usr/local/apache/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
configure: error: Aborting


就按提示排除:
(1)执行命令: perl -v,如果没有显示版本号,那就说明perl没有安装。
执行命令: yum -y install perl*安装perl,安装完后,再检查perl可不可以输出版本号。
如果不能联网,可以下载最新的源码包进行编译安装。

(2)查看Apache安装目录的bin文件夹:ll /usr/local/apache/bin/,看一下有没有apxs这个文件,没有的话,那么请重新安装Apache。
(3)apache编译参数在:(Apache安装目录/build/config.nice文件中),执行命令:
cat /usr/local/apache/build/config.nice|grep "enable-so",如果没有输出:(”–enable-so” \),那么请加上”–enable-so”编译参数,重新编译Apache。
(4)在执行完上面三个步骤,没有异常,那么,打开Apache安装目录的bin文件夹:cd /usr/local/apache/bin/,运行apxs文件:./apxs,如果报错:
bash: ./apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
解决方法:
其实问题处在 /usr/local/apache/apxs 中的perl位置声明不对。
在已安装perl的前提下,使用命令:whereis perl,查看perl的安装目录,我这里显示的安装目录为;/usr/bin/perl。
编辑apxs文件:vi /usr/local/apache/bin/apxs,找到
#!/replace/with/path/to/perl/interpreter -w
把这一行更改为perl的正确路径”#!/usr/bin/perl -w”。
再运行php的configure, 一切正常!

编译安装MySQL 5.7

来源:ARM服务器上源码编译安装MySQL5.7.21过程
参考:MySQL 5.7.19 编译安装与配置

步骤

(1)下载MySQL源码

下载MySQL源码包编译安装
(1)MySQL下载地址(带boost):https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.25.tar.gz

MySQL下载地址(不带boost):https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25.tar.gz
注意:想下载那个版本的MySQL,手动改一下版本号就好了。我这里选择的是带boost的MySQL,解压后,里面会有一个boost目录的。

(2)编译前的一些准备

1、新建MySQL安装所需要目录
mkdir /usr/local/mysql:这是我的MySQL的安装路径
mkdir /usr/local/mysql/{data,logs,pids}:MySQL还需要data存放数据库,logs存放日志,pids存放MySQL进程句柄
2、创建mysql用户组和用户,用来运行mysql服务器, -g指定用户组, -r创建系统用户
groupadd mysql
useradd -r -g mysql -s /bin/false -M mysql
3、修改 /usr/local/mysql 目录所有者权限
useradd mysql:为mysql单独创建一个用户
chown -R mysql:mysql /usr/local/mysql/:修改 /usr/local/mysql 目录所有者权限为mysql
4、创建 mysqld.log 和 mysqld.pid 文件
touch /usr/local/mysql/logs/mysqld.log
touch /usr/local/mysql/pids/mysqld.pid
修改 /usr/local/mysql 的权限
chown mysql.mysql -R /usr/local/mysql/

(3)安装MySQL编译所依赖的环境

yum install make cmake gcc gcc-c++ bison bison-devel ncurses ncurses-devel autoconf automake
yum -y install ncurses-devel libaio-devel bison perl-Time-HiRes
yum install libatomic

(4)编译MySQL

tar -xzvf mysql-5.7.25.tar.gz
cd mysql-5.7.25
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DWITHOUT_PARTITION_STORAGE_ENGINE=1 -DWITH_BOOST=/usr/local/boost
注意:关于-DWITH_BOOST=boost
如果带boost编译MySQL,需要这一个代码,不需要的把这个代码删除掉;还有,等号的值是boost的安装路径
make
make install
做完这些就只需要耐心等待编译完成!!!

问题错误:
编译出现错误,查询得知可能是由于内存不足导致的

解决方案:
临时增加交换空间 ( 虚拟内存 )

查看创建的交换空间

继续执行make命令

如果你编译完成后不再想要此交换空间,你可以执行如下命令:


温馨提示:
MySQL编译过程等待时间会比较久,有时都以为是“卡”住了,你可以使用top命令查看资源状态,看看cc1plus、make等进程是否在跳动,如果有跳动说明安装还在继续,由于我的 ecs 配置较低,此过程大约经历了几个小时,特别是在29%和74%的时候,几乎都要快放弃了, 如果有经济的能力的话,建议服务器配置还是尽量买高一点。
[root@iZ2864f6btwZ mysql-5.7.19]# top

(5)将mysql添加到环境变量

修改/etc/profile文件,在文件最末尾添加:
export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
更新配置文件:
source /etc/profile

(6)初始化数据库

初始化数据库, –initialize 表示默认生成一个安全的密码,–initialize-insecure 表示不生成密码:
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US

如果选择的是:–initialize 默认生成一个安全的密码,可以在输出的信息中找到生成的密码:
2018-07-24T08:38:54.111578Z 0 [Warning] Gtid table is not ready to be used. Table ‘mysq.gtid_executed’ cannot be opened.
2018-07-24T08:38:54.113556Z 1 [Note] A temporary password is generated for root@localhot: 4Mzoz<pRa90e
标红的就是初次启动数据库的初始密码。

(7)将MySQL并加入开机自动启动

到MySQL源码目录,找到support-files文件夹,将mysql服务文件:mysql.server拷贝到/etc/init.d/目录,并给出执行权限:
cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
将MySQL并加入开机自动启动:

(8)修改MySQL的配置文件/etc/my.cnf文件

vi /etc/my.cnf
文件内容:

(9)启动MySQL

service mysqld start

报错:
Starting MySQL.2017-09-23T16:13:16.049373Z mysqld_safe error: log-error set to ‘/usr/local/mysql/logs/mysqld.log’, however file don’t exists. Create writable for user ‘mysql’.
The server quit without updating PID file (/usr/local/mysql[FAILED]2864f6btwZ.pid).
问题错误:
由于缺少 mysqld.log 和 mysqld.pid 文件导致无法正常启动

解决方案:
创建 mysqld.log 和 mysqld.pid 文件
touch /usr/local/mysql/logs/mysqld.log
touch /usr/local/mysql/pids/mysqld.pid

修改 /usr/local/mysql 的权限
chown mysql.mysql -R /usr/local/mysql/
再次启动MySQL
service mysqld start

如果启动报错
Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
或者
Starting MySQL… ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.pid).

是因为Android使用了一个激活的特殊内核补丁CONFIG_ANDROID_PARANOID_NETWORK。此修补程序允许网络访问属于具有硬编码ID的特定特殊组的系统用户。

这是因为Android通常仅在特定应用具有网络权限时才将用户(即应用)添加到这些组

说是Android内核已使用CONFIG_ANDROID_PARANOID_NETWORK进行编译。可以通过将mysql用户添加到aid_inet和aid_net_raw组来修复它。
执行以下代码:
usermod -a -G aid_inet,aid_net_raw mysql

(10)查看MySQL运行状态

service mysqld status
问题错误:
MySQL is not running, but lock file (/var/lock/subsys/mysql[FAILED]

解决方案:
删除/var/lock/subsys/mysql文件,重新启动MySQL

(11)连接MySQL

MySQL数据库启动成功后,连接MySQL并修改密码,如果初始化时配置生成了初始密码,则需要参数 -p来说明使用密码链接。
没生成密码的:
mysql -u root
生成密码的:
mysql -u root -p
进入MySQL。
查看数据库,如果看到以下几个数据库说明数据库初始化成功

进入mysql库,查看用户表信息

问题错误:
ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’

解决方案:
由于MySQL 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string,查询时使用authentication_string字段即可

设置密码(推荐),注意此方法必须使用flush privileges命令刷新一下权限才能生效

设置密码命令:UPDATE user SET authentication_string=PASSWORD('newpassword') WHERE user='root';
记得把PASSWORD('newpassword')的newpassword换成你想要的密码。user='root'是针对root账号改的密码。

(12)赋给用户远程权限

mysql> grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option;
mysql> flush privileges;

编译安装Apache

步骤

下载所需安装包:
apr、apr-util、pcre这三个包是httpd编译安装依赖的包
apr、apr-util可以到官网https://apr.apache.org/download.cgi选择版本,获取下载地址,这里获取到的下载地址是:
APR:http://mirrors.hust.edu.cn/apache//apr/apr-1.6.5.tar.gz
APR-util:http://mirrors.hust.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
pcre的下载地址可以访问官网:http://www.pcre.org/来获取,在Download下,点击ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/跳转到源码包列表,选择需要的版本下载,后缀为.tar.gz,这里获得的下载地址为:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre2-10.21.tar.gz
找个位置下载源码包:cd /home/benz/download/
执行下载命令:
wget http://mirrors.hust.edu.cn/apache//apr/apr-1.6.5.tar.gz
wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
安装APR:
tar -xzvf apr-1.6.5.tar.gz
cd apr-1.6.5/
./configure --prefix=/usr/local/apr
make && make install
ls /usr/local/apr #检测是否安装成功

安装apr-util:
yum -y install expat-devel #安装一个apr-util包需要的依赖

tar -xzvf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
ls /usr/local/apr-util #检测是否安装成功

关于pcre:
使用命令:rpm -qa pcre,如果已经安装了的,可以查看pcre的版本号。
我的服务器自带pcre-8.32版本,只需要yum安装devel版本就行,yum安装pcre-devel包:
yum -y install pcre-devel
所以我不需要再安装pcre,如果没有安装pcre通过以下命令
tar -xzvf pcre-8.38.tar.gz
cd pcre-8.38/
./configure --prefix=/usr/local/pcre
make && make install

在我的安装过程中没有这一步,所以如果执行这个步骤,在后面的安装过程中需要适当的调整。

1、获取源码下载地址

访问官网:http://httpd.apache.org/download.cgi,选择需要下载的Apache版本,获取到下载地址,这里获取到的下载地址为:http://mirrors.hust.edu.cn/apache//httpd/httpd-2.4.38.tar.gz

2、下载源码

打开下载位置:cd /home/benz/download/
执行命令,wget http://mirrors.hust.edu.cn/apache//httpd/httpd-2.4.38.tar.gz,下载源码。

3、解压&&编译

tar -xzvf httpd-2.4.38.tar.gz
cd httpd-2.4.38/
注意:如果需要结合php,编译参数必须有–enable-so

如果编译安装了pcre,那么指定一下pcre的路径:--with-pcre=/usr/local/pcre,否则,就不需要。

编译前还需要安装一些库:

yum install zlib zlib-devel -y

yum install openssl openssl-devel -y
./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre --enable-isapi --enable-file-cache --enable-cache --enable-mem-cach --enable-deflate --enable-expires --enable-headers --disable-version --enable-proxy --enable-proxy-balancer --enable-ssl --enable-static-rotatelogs --enable-static-htpasswd --enable-static-htdigest --enable-static-logresolve --enable-static-htdbm --enable-static-ab --enable-static-checkgid --enable-static-htcacheclean --enable-cgi --enable-vhost-alias --enable-rewrite --enable-so --enable-mime-magic --with-mpm=prefork
make && make install

修改监听端口

打开Apache配置文件:
vi /usr/local/apache/conf/httpd.conf
找到 Listen port=80 这一行, 把80改成在此服务器上没有用到的端口号,保存退出。

启动Apache:
/usr/local/apache/bin/apachectl start

报错:
AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using localhost.localdomain. Set the ‘ServerName’ directive globally to suppress this message
解决:
编辑httpd.conf文件:vi /usr/local/apache/conf/httpd.conf,搜索”#ServerName”,添加ServerName localhost:80,再重新启动apache 即可。

创建httpd启动脚本并加入启动列表开机启动

/usr/local/apache/bin/中的apachectl其实就是一个启动脚本,我们把他copy到/etc/init.d/去,并且重命名为httpd(这个名字随便取,你自己方便就行)
第一步:

cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

第二步:
vi /etc/init.d/httpd
在第一行#!/bin/sh下增加两行文字
# chkconfig: 35 70 30 这里的35指的是在3和5级别开启该服务 70:指的是开机启动服务在70位,30指的是关机关闭服务在30位,一般启动服务的顺序和关闭顺序的和100。
# description: Apache 描述信息 这里的#不再试注释符,而是服务列表中的特殊用法。
注意:这2行缺一不可,#号不能省略,一定要有
第三步:

然后保存退出,这样我们就可以用service来启动和关闭apache了
比如:
启动:service httpd start
停止:service httpd stop

加入开机启动
依次执行命令:
chkconfig --add httpd
chkconfig httpd on

编译安装PHP

编译安装PHP步骤

1.选择需要的php版本

从 php官网: http://cn2.php.net/downloads.php 选择需要的php版本,选择.tar.gz 的下载包,点击进入,选择中国的本地语言包,复制这个下载地址:http://cn2.php.net/get/php-7.3.1.tar.gz/from/this/mirror(参照这个方法就可以随时获取最新版本的PHP了)
选择一个位置存放文件
cd /home/benz/download(这是我创建的文件夹,下载文件专用)
下载刚刚选好的php压缩包
wget http://cn2.php.net/get/php-7.3.1.tar.gz/from/this/mirror
但是我们下载下来看到并不是我们要的php-7.3.1.tar.gz 类似的压缩文件,而是一个mirror的文件,很简单,我们给文件重命名就可以了
mv mirror php-7.3.1.tar.gz

2.安装php所需要的依赖

3.解压编译

tar -xzxvf php-7.3.1.tar.gz
cd php-7.3.1

4.php7编译安装全部自带扩展

注意:
如果要搭建Apache+PHP+MySQL,php编译参数要带下面这两个参数,如果不是的话,去掉这两个参数。
从这两个参数来看,一定是安装完Apache与MySQL才能指定对应的文件路径,所以PHP是最后才安装的。
--with-mysql-sock=/usr/local/mysql/mysql.sock \:防止php使用mysql函数去连接数据库,发生报错。
--with-apxs2=/usr/local/apache/bin/apxs \:产生Apache与PHP连接的模块文件:libphp7.so,这个文件很重要,在Apache配置中需要用到这个文件,如果先安装Apache再安装PHP,或者最后安装PHP不带这参数编译,是不会在Apache安装目录下的modules文件夹里生成这个文件的。
配置期间,会因为依赖的库缺失,而报错,自己yum安装缺失的库就好了。

PHP 默认并不支持多线程,要使用多线程需要安装 pthread 扩展,而要安装 pthread 扩展,必须使用 --enable-maintainer-zts 参数重新编译 PHP,这个参数是指定编译 PHP 时使用线程安全方式。

编译:
make && make install

5. 复制配置文件

cp php.ini-development /usr/local/php/etc/php.ini
注意:编译参数配置的时候,指定PHP配置文件路径是什么,就复制到那个路径去。

6. 设置全局的php命令

vi /etc/profile
在文件最后添加:
export PATH=$PATH:/usr/local/php/bin
或者使用追加命令:
echo 'export PATH=$PATH:/usr/local/php/bin' >> /etc/profile
然后执行 命令 source /etc/profile
此时php就是全局命令了,可以通过php -v 查看php版本信息或者php -m 看看刚刚编译加载的模块了

7.配置PHP-fpm

新建www-data 用户组:

启动php-fpm
/etc/init.d/php-fpm start

添加到开机启动项
chkconfig --add php-fpm

此时也可以使用service来启动php-fpm了
service php-fpm start
service php-fpm stop

性能加速 – 开启Opcache

开启opcache方法
PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速(默认是关闭的),PHP5.5之后opcache可以直接–enable-opcache 。

1. 打开php.ini文件

2. 找到:[opcache],设置为:

3. 添加opcache.so
在php.ini最后一行添加opcache.so 主要作用是用来引用opcache

4. 重启Nginx和php

PHP安装遇到的问题

安装C++编译器

安装cmake最新的版本,需要C++编译器。
执行命令安装:yum install gcc gcc-c++
gcc 是C编译器,gcc-c++是C++编译器。

安装cmake

安装libzip最新的版本,需要cmake来编译。

1.下载CMake源码

去CMake官网下载最新的源码包:https://cmake.org/download/,后缀为.tar.gz,获得的文件下载地址为:https://github.com/Kitware/CMake/releases/download/v3.13.3/cmake-3.13.3.tar.gz

2.选择一个位置存放文件

cd /home/benz/download/
下载刚刚选好的CMake源码包
wget https://cmake.org/files/v3.13/cmake-3.13.3.tar.gz

3.解压编译

tar -xzvf cmake-3.13.3.tar.gz
cd cmake-3.13.3
./bootstrap --prefix=/usr/local/cmake
gmake
gmake install

4.设置全局变量

用vi在文件/etc/profile文件中增加变量,使其永久有效:
vi /etc/profile // 修改环境变量

在文件末尾追加以下代码:
export PATH=/usr/local/cmake/bin:$PATH
或者追加到文件末尾:
echo 'export PATH=/usr/local/cmake/bin:$PATH' >> /etc/profile

然后执行以下操作,使修改生效:
source /etc/profile
echo $PATH //查看PATH值

5.检查cmake 安装

cmake --version
显示cmake版本号,说明安装成功。

安装libzip

1.下载libzip源码

去libzip官网下载最新的源码包:https://libzip.org/download/,后缀为.tar.gz,获得的文件下载地址为:https://libzip.org/download/libzip-1.5.1.tar.gz

2.选择一个位置存放文件

cd /home/benz/download/
下载刚刚选好的libzip源码包
wget https://libzip.org/download/libzip-1.5.1.tar.gz

3.解压编译

tar -xzvf libzip-1.5.1.tar.gz
cd libzip-1.5.1
mkdir build && cd build && /usr/local/bin/cmake .. && make && make install
注意:/usr/local/bin/cmakecmake的可执行路径,如果配置了全局环境变量,可以直接使用cmake。

报错:configure: error: off_t undefined; check your library configuration

解决方法:

编译错误 /lib64/liblber-2.4.so.2: could not read symbols: Invalid operation

以下的错误是:

/usr/bin/ld: ext/ldap/.libs/ldap.o: undefined reference to symbol ‘ber_scanf’

/usr/bin/ld: note: ‘ber_scanf’ is defined in DSO /lib64/liblber-2.4.so.2 so try adding it to the linker command line
/lib64/liblber-2.4.so.2: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1

解决方法:

./configure后

编辑MakeFile

找到 开头是 ‘EXTRA_LIBS =’ 这一行 在结尾加上 ‘-llber’ 然后执行 make && make install

/usr/bin/ld: ext/ldap/ldap.o: undefined reference to symbol ‘ber_strdup’

使 ./configure --with-ldap=shared ;

# ln -s /usr/lib64/liblber* /usr/lib/ ;

修改了php.ini,发现没生效

使用命令:php -i | grep php.ini,查看php.ini文件是要放到那个路径下,php才会读取。

php的扩展安装

php_redis

去GitHub上:https://github.com/phpredis/phpredis/releases,选择合适的php_redis版本下载,一般都是下载最新的。我这里最新版本是:4.3.0RC1
cd /home/benz/down
wget https://github.com/phpredis/phpredis/archive/4.3.0RC1.tar.gz
解压:
tar -xzvf 4.3.0RC1.tar.gz
使用phpize生成php_redis的configure文件:
cd phpredis-4.3.0RC1/
[root@localhost phpredis-4.3.0RC1]# phpize
编译:
./configure --with-php-config=/usr/local/php/bin/php-config
configure 是使用phpize生成的文件,–with-php-config必须有,它的值是PHP的配置文件路径,一定要是bin/目录下php-config文件。
make && make install
安装完成之后,出现下面的安装路径:

配置php支持:

vi /usr/local/php/etc/php.ini
编辑配置文件,在合适的位置添加以下内容,我在extension扩展列的最后一行添加了。
extension=”redis.so”
最后,执行命令:php -m,看有没有redis,有就安装成功。

swoole

去GitHub上:https://github.com/swoole/swoole-src/releases,选择合适的swoole版本下载,一般都是下载最新的。我这里最新版本是:v4.2.13
cd /home/benz/down
wget https://github.com/swoole/swoole-src/archive/v4.2.13.tar.gz
解压:
tar -xzvf v4.2.13.tar.gz
使用phpize生成swoole的configure文件:
cd swoole-src-4.2.13/
[root@localhost swoole-src-4.2.13]# phpize
编译:
./configure --with-php-config=/usr/local/php/bin/php-config
configure 是使用phpize生成的文件,–with-php-config必须有,它的值是PHP的配置文件路径,一定要是bin/目录下php-config文件。
make && make install
安装完成之后,出现下面的安装路径:

配置php支持:

vi /usr/local/php/etc/php.ini
编辑配置文件,在合适的位置添加以下内容,我在extension扩展列的最后一行添加了。
extension=”swoole.so”
最后,执行命令:php -m,看有没有swoole,有就安装成功。

apache和php结合(配置httpd支持php)

修改配置文档

vi /usr/local/apache/conf/httpd.conf

第一步:
取消注释

ServerName http://www.example.com:80
第二步:
将Require all denied 改为Require all granted

第三步:
增加一行AddType application/x-httpd-php .php

第四步:
增加索引页index.php
在DirectoryIndex index.html后面 增加索引页index.php

配置生效

检查配置文件httpd.cnf的语法是否正确
/usr/local/apache/bin/apachectl -t
重新加载配置文件
/usr/local/apache/bin/apachectl graceful

检测php是否正常解析

新建一个php文件

vi /usr/local/apache/htdocs/index.php

代码:
浏览器打开访问,
如果显示是图片表格文件则正常;
如果显示为代码为错误;

告错检查步骤

1、检查是否加载php的模块
/usr/local/apache/bin/apachectl -M
看看有没有php7_module (shared)

如果没有php7的模块,那么检查是否有php7模块的文件libphp7.so

ls /usr/local/apache/modules/libphp7.so
如果没有libphp7.so文件,那就是PHP编译时缺少了编译参数:–with-apxs2=/usr/local/apache/bin/apxs,具体看文章的第一节。
如果有libphp7.so文件,就检查httpd.cnf配置文件中是否加载

2.检查是否增加php

3.检查是否增加索引页index.php

踩坑记录

最好先装Apache,然后装mysql,最后装php,原因如下:

回到编译安装php,配置参数的时候(只列出个人觉得需要注意的)

./configure \
–prefix=/usr/local/php7 \ //这是php7安装目录..

–with-config-file-path=/usr/local/php7/etc \
/*这是配置目录,就是在自己的php7安装目录下的etc/,编译的时候会自动新建的,到时候php.ini、php-fpm.conf什么的都放在这里,在httpd.conf就不用指定什么PHPIniDir啦 */

–with-mysql-sock=/var/run/mysql/mysql.sock \
/*这个指定PHP7的Unix socket通信文件,所以说为什么要先安装mysql,可以用find / -name mysql.sock找到它的位置*/

–with-apxs2=/usr/local/apache2/bin/apxs \
/* 这个注意了,这个就是先装Apache的原因,是指定Apache安装目录下的bin/apxs文件,所安装东西也要留意自己的安装目录,然后这个参数是用来生成libphp7.so的动态库,有了这个动态库服务器才可以解析php */


然后说到httpd.conf(只列出个人觉得需要注意的)

//在Apache安装目录下的conf/httpd.conf
//修改前最好备份
/* 找到
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
然后再下面添加*/
AddType application/x-httpd-php .php

/*
然后找一下有没有
LoadModule php7_module modules/libphp7.so
这个是安装php7自动添加的 配置参数的时候有指定–with-apxs2参数才行的
这个就是加载php7的动态库,不加载的话是无法解析php的
*/


最后说到php.ini (只列出个人觉得需要注意的)
/*在你php7解压后的文件夹下复制php.ini-production文件到
你配置Php参数的时候–with-config-file-path=/usr/local/php7/etc \
的etc目录下
比如 cp php.ini-production /usr/local/php7/etc/php.ini
然后修改文件vim php.ini
指定动态库的位置
修改extension_dir = “/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/”
注意/usr/local/php7/是你的php安装目录
这个路径下会有自动生成的mysqli.so、pdo_mysql.so等等动态库
如果你要连接mysql的话
就要在这个文件添加extension=mysqli.so
如果没有添加的话,你用php使用new mysqli()等等函数连接mysql数据库会报错找不到
*/

弄完了之后重启Apache服务器啦,用php -v 看看有没有显示正常的信息,如果有显示无法加载动态库的话,试试把extension_dir目录里的后缀名带a的删掉比如删掉mysqli.a,然后再重启试试。

编译安装Nginx

步骤

1.安装依赖:

yum -y install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

2.选择需要的Nginx版本

从 Nginx官网: http://nginx.org/en/download.html 选择需要的Nginx版本,最后得到的下载的地址就是:http://nginx.org/download/nginx-1.14.2.tar.gz(参照这个方法就可以随时获取最新版本的Nginx了)

3.下载Nginx源码

选择一个位置存放文件
cd /usr/benz/download
下载刚刚选好的Nginx压缩包
wget http://nginx.org/download/nginx-1.14.2.tar.gz

4.解压

tar -xzxvf nginx-1.14.2.tar.gz
cd nginx-1.14.2

5.配置

1.使用默认配置
./configure --prefix=/usr/local/nginx
2.自定义配置(不推荐)

注:将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录

6.编译安装

make
make install

7.查找安装路径:

whereis nginx

8.修改配置文件以支持php

cd /usr/local/nginx/conf
vi nginx.conf
server里面的配置:
在location / 的中index增加index.php ,增加URL重写读取;
解开location ~ .php$的注释,修改fastcgi的路径,最终server部分配置内容为:

保存配置文件。

9.设置nginx开机自启动

设置nginx开机自启动
创建nginx启动命令脚本
vi /etc/init.d/nginx
插入以下内容:

这个脚本来自nginx官方,脚本地址:http://wiki.nginx.org/RedHatNginxInitScript ,不过要注意,如果你是自定义编译安装的nginx,需要根据您的安装路径修改下面这几个配置:
# config: /usr/local/nginx/conf/nginx.conf :nginx配置文件路径
# pidfile: /usr/local/nginx/logs/nginx.pid:nginx的pid文件路径
nginx=”/usr/local/nginx/sbin/nginx”:nginx二进制文件路径
NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf”:nginx配置文件路径

下面是另外个脚本:


设置执行权限
chmod a+x /etc/init.d/nginx
注册成服务
chkconfig --add nginx
设置开机启动
chkconfig nginx on
重启查看nginx服务是否自动启动(!!! 请确保重启不会影响现有业务,如不确定请不要执行,后果自负)
shutdown -h 0 -r
netstat -apn|grep nginx

配置nginx成服务还有一个好处就是可以直接通过systemctl或者service直接启动或停止nginx了,例如 systemctl stop nginx 或者 service nginx stop就可以停止nginx了
[/collapse]

报错

An error occurred.

访问html正常,访问php,报错:An error occurred. Sorry, the page you are looking for is currently unavailable. Please try again
查看Nginx日志:error.log,发现报错信息为:

socket() failed (13: Permission denied) while connecting to upstream, client: 192.168.123.113, server: localhost, request: “GET /index.php HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “192.168.123.97”

解决方案:
1 . 不是什么配置的问题,直接一句命令搞
Linux命令行输入:# setsebool -P httpd_can_network_connect 1,执行成功后就对了,如果不对参考第二个方法 。
2 .修改nginx.conf,将第一行修改为 user root :

编译安装sun java

步骤

1.查看系统是几位的

  • 1、执行命令:uname -a ,armv7l表明系统安装的是32位的,但是这个结果并不明显,对linux系统不熟的是无法分辨出是32位还是64位的。
  • 2、执行命令:getconf LONG_BIT(推荐使用),结果非常直观。

2.在/usr/local目录下创建一个文件夹,并进入

mkdir /usr/local/java

3.下载Java8源码包

访问官网:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
根据系统的位数选择下在ARM版本的Java8源码包,这里的系统是32位的,需要下载的源码包是:jdk-8u181-linux-arm32-vfp-hflt.tar.gz。
下载链接是:https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-arm32-vfp-hflt.tar.gz
cd /home/benz/download
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-arm32-vfp-hflt.tar.gz

4.解压JDK

tar -xzvf jdk-8u201-linux-arm32-vfp-hflt.tar.gz -C /usr/local/java :解压到/usr/local/java,java文件夹下会有解压后名为:jdk1.8.0_201 的文件夹。

5.配置JDK环境变量

1.在终端输入命令
vi /etc/profile
2.在文本最后加上下面的内容
export JAVA_HOME=/usr/local/java/jdk1.8.0_201/usr/local/java/jdk1.8.0_201 为Java安装路径
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
3.使配置生效
source /etc/profile

6.测试安装

运行命令:java -version显示Java信息则为安装成功

安装Tomcat

步骤

1.获取下载地址

访问Tomcat官网:https://tomcat.apache.org/download-90.cgi,选择需要下载的Tomcat的版本,在Binary Distributions下的Core选择tar.gz,获取下载地址,这里获取到的下载地址是:http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.14/bin/apache-tomcat-9.0.14.tar.gz

2.下载源码包

cd /home/benz/download/
wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.14/bin/apache-tomcat-9.0.14.tar.gz

3.解压

mkdir /usr/local/tomcat
tar -xzvf apache-tomcat-9.0.14.tar.gz -C /usr/local/tomcat/解压到/usr/local/tomcat/下

4. Tomcat配置

(1)打开文件 /etc 目录下的 profile 文件:
vi /etc/profile
将如下代码追加到 profile 文件末尾:

记得把路径修改为Tomcat的安装路径。
保存并推出:wq!

(2)修改 tomcat 的端口号和字符编码:
进入到 /usr/local/tomcat/apache-tomcat-9.0.14/conf 目录中:
cd /usr/local/tomcat/apache-tomcat-9.0.14/conf
打开 tomcat 服务的配置文件 server.xml:
vi server.xml
找到如下代码:

将其中的 8080 改成 HTTP 协议的默认端口 80,改后的代码如下:

(3)增加 manager-gui 图形化管理界面的访问权限(不需要的话,此步骤可忽略):
打开 tomcat 的用户配置文件 tomcat-users.xml:
vi /usr/local/tomcat/apache-tomcat-9.0.14/conf/tomcat-users.xml
在 </ tomcat-users>标签前加入如下代码:

这里设置的 username 和 password 都是 tomcat,角色为 manager-gui;
键入 Esc 并输入“:wq!”保持并退出。
(4)进入到 /usr/local/tomcat/apache-tomcat-9.0.14/bin 目录中:
cd /usr/local/tomcat/apache-tomcat-9.0.14/bin
打开 vi catalina.sh 文件:
在 # OS specific support. 前面加入如下代码:

键入 Esc 并输入“:wq!”保持并退出。

5. 启动Tomcat

(1)启动 tomcat 服务:
cd /usr/local/tomcat/apache-tomcat-9.0.14/bin/
./startup.sh
打印如下信息则表明启动 Tomcat 服务成功:

打开浏览器输入:http://localhost:8080 看看吧!如果出现了我们的可爱的“小黄猫”则表明我们的 Tomcat 已提供服务啦!
(2)关闭 tomcat 服务:
cd /usr/local/tomcat/apache-tomcat-9.0.14/bin/
./shutdown.sh
打印如下信息则表明关闭 Tomcat 服务成功:

注意:不可连续执行多次 ./shutdown.sh 命令,多次后报如下错误:

6、将 tomcat 加入到系统服务列表中

(1)进入到 /etc/init.d 目录中:
cd /etc/init.d
创建 tomcat9 服务配置文件:
vi tomcat9
将如下代码加入写入到 tomcat9 配置文件中:

键入 Esc 并输入“:wq!”保持并退出;
其中的注意点是将 JAVA_HOME 和 CATALINA_HOME 变量设置成与我们当前配置相一致的路径;
(2)为 tomcat9 分配可执行权限:
chmod +x tomcat9

(3)将 tomcat9 纳入到系统的服务列表中,即添加 tomcat9 为系统服务:
chkconfig --add tomcat9

(4)查看当前系统服务都有哪些:
chkconfig --list
也可以查看指定的系统服务,如这里我们指定 tomcat9 这个服务:
chkconfig --list tomcat9
打印如下信息:
tomcat9 0:off 1:off 2:on 3:on 4:on 5:on 6:off
则表明已将 tomcat9 设置为系统服务,2、3、4、5 都为 on 表示可随系统自动启动;

(5)我们可以在任意目录下执行关闭、启动、重启 Tomcat9 服务啦:
关闭 tomcat9 服务:
service tomcat9 stop
启动 tomcat9 服务:
service tomcat9 start
重启 tomcat9 服务:
service tomcat9 restart

7、开放8080端口

如果,404,那么可能是因为防火墙把8080端口给禁止了
firewall-cmd --zone=public --add-port=8080/tcp --permanent

说一下这一句的意思吧,因为centos7 已经更改了防火墙策略,所以使用这种方式来打开端口

–zone #作用域

–add-port=8080/tcp #添加端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效

重启防火墙:firewall-cmd --reload

8、其它说明

(1)访问Tomcat 9的管理页面报错
首先修改/usr/local/tomcat/apache-tomcat-9.0.16/conf/tomcat-users.xml:
在</ tomcat-users>标签前,写入如下配置,密码账号根据自己爱好改,来获得页面的访问权限。

最后重启一下Tomcat。
配置好用户后重新启动tomcat ,发现:8080可以访问,但是进入:8080/manager/html页面还是报403访问受限,那可能是访问远程服务器Tomcat 9的管理页面,只需修改/usr/local/tomcat/apache-tomcat-9.0.16/webapps/manager/META_INF/context.xml文件,将文件中对访问的来源受限设置注释:

然后直接刷新页面就行了,无需重启tomcat。

编译安装Redis

步骤

1、获取下链接

访问下载列表:http://download.redis.io/releases/,选择需要下载的版本,获取下载地址,这里获取到的下载地址是:http://download.redis.io/releases/redis-5.0.3.tar.gz

2、下载源码包:

cd /home/benz/download/
wget http://download.redis.io/releases/redis-5.0.3.tar.gz

3、解压&&编译安装

tar -xzvf redis-5.0.3.tar.gz
cd redis-5.0.3
make && make install
Redis没有其他外部依赖,安装过程很简单。编译后在Redis源代码目录的src文件夹中可以找到若干个可执行程序,安装完后,在/usr/local/bin目录中可以找到刚刚安装的redis可执行文件。
cd /usr/local/bin/ redis可执行文件存放于此

启动Redis

1、直接启动

直接运行redis-server即可启动Redis:
/usr/local/bin/redis-server

2、通过初始化脚本启动Redis

在Redis源代码目录的utils文件夹中有一个名为redis_init_script的初始化脚本文件。需要配置Redis的运行方式和持久化文件、日志文件的存储位置。步骤如下:

1、配置初始化脚本
首先将初始化脚本复制到/etc/init.d 目录中,文件名为 redis_端口号:
cp /home/benz/down/redis-5.0.3/utils/redis_init_script /etc/init.d/redis_6379

其中端口号表示要让Redis监听的端口号,客户端通过该端口连接Redis。然后修改脚本第6行的REDISPORT变量的值为同样的端口号。
2、建立以下需要的文件夹。

目录名 Value
/etc/redis 存放Redis的配置文件
/var/redis/端口号 存放Redis的持久化文件

mkdir /etc/redis
mkdir /var/redis/6379
3、修改配置文件

首先将Redis源码目录的配置文件:redis.conf,复制到/etc/redis 目录中,以端口号命名(如“6379.conf”),然后按照下表对其中的部分参数进行编辑。

cp /home/benz/down/redis-5.0.3/redis.conf /etc/redis/6379.conf
vi /etc/redis/6379.conf

参数 说明
daemonize yes 使Redis以守护进程模式运行
pidfile /var/run/redis_端口号.pid 设置Redis的PID文件位置
port 端口号 设置Redis监听的端口号
dir /var/redis/端口号 设置持久化文件存放位置

现在也可以使用下面的命令来启动和关闭Redis了
/etc/init.d/redis_6379 start
/etc/init.d/redis_6379 stop
【重中之重】让Redis随系统自动启动,这还需要对Redis初始化脚本进行简单修改,执行命令:

vi /etc/init.d/redis_6379
在打开的redis初始化脚本文件头部第四行的位置,追加下面两句

追加后效果如下:

上图红色框中就是追加的两行注释,添加完毕后进行保存,即可通过下面的命令将Redis加入系统启动项里了

设置开机执行redis脚本:
chkconfig --add /etc/init.d/redis_6379

通过上面的操作后,以后也可以直接用下面的命令对Redis进行启动和关闭了,如下
service redis_6379 start
service redis_6379 stop
经过上面的部署操作后,系统重启,Redis也会随着系统自动启动,并且上面的步骤里也配置了Redis持久化,下次启动系统或Redis时,有缓存数据不丢失的好处。

停止Redis

考虑到 Redis 有可能正在将内存中的数据同步到硬盘中,强行终止 Redis 进程可能会导致数据丢失。正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,方法为:

redis-cli SHUTDOWN
当Redis收到SHUTDOWN命令后,会先断开所有客户端连接,然后根据配置执行持久化,最后完成退出。
Redis可以妥善处理 SIGTERM信号,所以使用 kill Redis 进程的 PID也可以正常结束Redis,效果与发送SHUTDOWN命令一样。

Git安装

安装方法有两种:

一、yum命令安装:

yum install -y git
此方法简单,并且会自动安装依赖的包,而且会从源里安装最新的版本(不过不一定是最新的git)。

二、源码安装:

1.安装前要手动安装下依赖包(可使用rpm -qa | grep wget命令查看是否有安装包)
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
2.去官网下载最新版本的git源码包
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.24.1.tar.gz
3.接下来就是解压,配置,安装

4.配置全局环境变量

5.查看git版本
git --version

Composer安装

安装Python3

参考;centos7中安装python3

修改pip安装源

修改系统pip安装源
在家目录下新建.pip文件夹,进入文件夹新建文件pip.conf之后写入相应镜像网站地址

修改pipenv安装源
在自己的虚拟环境中找到Pipfile文件,将其中的url = "https://pypi.org/simple"修改为你需要的国内镜像,如https://mirrors.aliyun.com/pypi/simple/

问题汇总

Source /etc/profile不生效

在ubuntu下开发时,我们会经常安装很多环境,因为环境多,我们需要将其配置成全局命令,这样才好操作,配置成全局命令时,有一种方式是比较常用的:

vim /etc/profile  增加配置信息,然后source /etc/profile是之生效。的确当前终端环境下的确是生效了,但是打开新的终端会发现,怎么没有生效?是我配置没成功吗?不对呀,之前明明可以的。

这个时候,你只需要执行下面操作即可:

vi ~/.bashrc

然后最后一行添加 source /etc/profile

如何查看已经安装的nginx、apache、mysql和php的编译参数

1、nginx编译参数:

nginx -V(大写)
#注意:需保证nginx在环境变量中,或者使用这样的形式:/user/local/nginx/sbin/nginx -V

2、apache编译参数

cat your_apache_dir/build/config.nice
3、php编译参数:

php -i |grep configure
#或者 /user/local/php/bin/php -i |grep configure

4、mysql编译参数:

cat /user/local/mysql/bin/mysqlbug |grep configure

 

安装python-pip

如果默认没有安装 pip,可以使用如下的脚本来安装 pip。

安装方法很简单。

1. 下载 get-pip.py

https://bootstrap.pypa.io/get-pip.py
wget https://bootstrap.pypa.io/get-pip.py

2. 执行:

python get-pip.py


文章 LinuxDeploy(ARM平台)编译安装各种服务器软件 转载需要注明出处
喜欢 (0)

您必须 登录 才能发表评论!