目录
- 1 准备
- 2 编译安装MySQL 5.7
- 3 编译安装Apache
- 4 编译安装PHP
- 5 PHP安装遇到的问题
- 6 apache和php结合(配置httpd支持php)
- 7 编译安装Nginx
- 8 编译安装sun java
- 9 安装Tomcat
- 10 编译安装Redis
- 11 Git安装
- 12 Composer安装
- 13 安装Python3
- 14 问题汇总
准备
设备
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的时候,一定要有这几个配置参数:
1 2 3 4 5 |
[root@localhost php-7.3.2]#./configure \ --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --with-mysql-sock=/usr/local/mysql/mysql.sock \ --with-apxs2=/usr/local/apache/bin/apxs |
在PHP编译过程中如果报错:
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可不可以输出版本号。如果不能联网,可以下载最新的源码包进行编译安装。
1 2 3 4 5 6 |
# wget http://www.cpan.org/src/5.0/perl-5.24.1.tar.gz # tar -xzf perl-5.24.1.tar.gz # cd perl-5.24.1 # ./Configure -des -Dprefix=$HOME/localperl # make # make install |
(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
做完这些就只需要耐心等待编译完成!!!
临时增加交换空间 ( 虚拟内存 )
1 2 3 4 5 6 7 8 9 10 |
[root@iZ2864f6btwZ mysql-5.7.19]# dd if=/dev/zero of=/swapfile bs=1k count=2048000 2048000+0 records in 2048000+0 records out 2097152000 bytes (2.1 GB) copied, 34.6782 s, 60.5 MB/s [root@iZ2864f6btwZ mysql-5.7.19]# mkswap /swapfile Setting up swapspace version 1, size = 2047996 KiB no label, UUID=56026239-26e6-40d9-b080-b95acd9db058 [root@iZ2864f6btwZ mysql-5.7.19]# swapon /swapfile swapon: /swapfile: insecure permissions 0644, 0600 suggested. [root@iZ2864f6btwZ mysql-5.7.19]# chmod 600 /swapfile |
查看创建的交换空间
1 2 3 4 |
[root@iZ2864f6btwZ mysql-5.7.19]# free -m total used free shared buff/cache available Mem: 992 51 70 0 869 789 Swap: 1999 0 1999 |
继续执行make命令
1 2 |
[root@iZ2864f6btwZ mysql-5.7.19]# make clean [root@iZ2864f6btwZ mysql-5.7.19]# make |
如果你编译完成后不再想要此交换空间,你可以执行如下命令:
1 2 |
[root@iZ2864f6btwZ mysql-5.7.19]# swapoff /swapfile [root@iZ2864f6btwZ mysql-5.7.19]# rm /swapfile |
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
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并加入开机自动启动:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[root@iZ2864f6btwZ mysql-5.7.19]# chkconfig --add mysqld [root@iZ2864f6btwZ mysql-5.7.19]# chkconfig mysqld on [root@iZ2864f6btwZ mysql-5.7.19]# chkconfig --list | grep mysqld Note: This output shows SysV services only and does not include native systemd services. SysV configuration data might be overridden by native systemd configuration. If you want to list systemd services use 'systemctl list-unit-files'. To see services enabled on particular target use 'systemctl list-dependencies [target]'. mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
(8)修改MySQL的配置文件/etc/my.cnf文件
vi /etc/my.cnf
文件内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[mysqld] datadir=/usr/local/mysql/data socket=/usr/local/mysql/mysql.sock [mysqld_safe] log-error=/usr/local/mysql/logs/mysqld.log pid-file=/usr/local/mysql/pids/mysqld.pid # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [client] default-character-set=utf8 socket=/usr/local/mysql/mysql.sock [mysql] default-character-set=utf8 socket=/usr/local/mysql/mysql.sock # # include all files from the config directory # !includedir /etc/my.cnf.d |
(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
1 2 3 |
[root@iZ2864f6btwZ local]# rm -f /var/lock/subsys/mysql [root@iZ2864f6btwZ local]# service mysqld start Starting MySQL. [ OK ] |
(11)连接MySQL
MySQL数据库启动成功后,连接MySQL并修改密码,如果初始化时配置生成了初始密码,则需要参数 -p
来说明使用密码链接。
没生成密码的:
mysql -u root
生成密码的:
mysql -u root -p
进入MySQL。
查看数据库,如果看到以下几个数据库说明数据库初始化成功
1 2 3 4 5 6 7 8 9 10 11 12 |
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec) mysql> |
进入mysql库,查看用户表信息
1 2 3 4 5 6 7 8 |
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> select host,user,password from user; ERROR 1054 (42S22): Unknown column 'password' in 'field list' mysql> |
ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’
解决方案:
由于MySQL 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string,查询时使用authentication_string字段即可
1 2 3 4 5 6 7 8 9 |
mysql> select host,user,authentication_string from user; +-----------+---------------+-------------------------------------------+ | host | user | authentication_string | +-----------+---------------+-------------------------------------------+ | localhost | root | | | localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | +-----------+---------------+-------------------------------------------+ 3 rows in set (0.00 sec) |
设置密码(推荐),注意此方法必须使用flush privileges命令刷新一下权限才能生效
1 2 3 4 5 6 7 8 9 |
mysql> UPDATE user SET authentication_string=PASSWORD('newpassword') WHERE user='root'; Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1 mysql> mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> |
设置密码命令: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所需要的依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
yum -y install gcc yum -y install libxml2 libxml2-devel yum -y install openssl openssl-devel yum -y install curl-devel yum -y install libjpeg libpng freetype libjpeg-devel libpng-devel freetype-devel yum -y install bzip2-devel yum -y install libXpm-devel yum -y install gmp-devel yum -y install icu libicu libicu-devel yum -y install php-mcrypt libmcrypt libmcrypt-devel yum -y install postgresql-devel yum -y install libxslt-devel yum -y install enchant enchant-devel yum -y install libwebp libwebp-devel yum -y install openldap openldap-devel yum -y install readline readline-devel |
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安装缺失的库就好了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
./configure \ --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --with-config-file-scan-dir=/usr/local/php/lib/php.d \ --with-mysql-sock=/usr/local/mysql/mysql.sock \ --with-apxs2=/usr/local/apache/bin/apxs \ --with-mcrypt=/usr/include \ --with-sqlite3 \ --with-pdo-sqlite \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --enable-posix \ --enable-pcntl \ --enable-maintainer-zts \ --enable-shmop \ --enable-sysvshm \ --enable-sysvsem \ --enable-sysvmsg \ --enable-phar \ --enable-zip \ --with-zlib \ --with-zlib-dir \ --with-bz2 \ --with-gd \ --enable-gd-native-ttf \ --enable-gd-jis-conv \ --with-webp-dir \ --with-jpeg-dir \ --with-png-dir \ --with-xpm-dir \ --with-freetype-dir \ --enable-exif \ --enable-json \ --enable-libxml \ --with-libxml-dir \ --enable-xml \ --enable-xmlreader \ --enable-xmlwriter \ --enable-simplexml \ --with-pear \ --with-xsl \ --enable-dom \ --enable-soap \ --enable-wddx \ --with-xmlrpc \ --enable-ctype \ --enable-filter \ --with-pcre-regex \ --with-pcre-jit \ --with-enchant \ --enable-fileinfo \ --enable-mbstring \ --with-iconv \ --enable-hash \ --with-openssl \ --with-mcrypt \ --enable-bcmath \ --with-gmp \ --enable-session \ --enable-sockets \ --enable-ftp \ --with-curl \ --with-ldap=shared \ --with-ldap-sasl \ --with-kerberos \ --enable-calendar \ --with-gettext \ --with-readline \ --enable-tokenizer \ --enable-opcache \ --enable-cli \ --enable-cgi \ --enable-fpm \ --enable-phpdbg |
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
1 2 3 4 5 6 7 |
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf cp /home/benz/download/php-7.3.1/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm |
新建www-data 用户组:
1 2 |
groupadd www-data useradd -g www-data 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],设置为:
1 2 3 4 5 6 7 8 9 10 11 |
[opcache] ; 开关打开 opcache.enable=1 ; 设置共享内存大小, 单位为:Mb opcache.memory_consumption=128 ;如果启用,那么 OPcache 会每隔 opcache.revalidate_freq 设定的秒数 检查脚本是否更新。 如果禁用此选项,你必须使用 opcache_reset() 或者 opcache_invalidate() 函数来手动重置 OPcache,也可以 通过重启 Web 服务器来使文件系统更改生效。 opcache.validate_timestamps=60 #提示:在opcache使用软连接的情况下,会存在opcache没有被清除的情况.可以使用重启fastcgi来解决这个问题. |
3. 添加opcache.so
在php.ini最后一行添加opcache.so 主要作用是用来引用opcache
1 2 |
[root@abcdocker ~]# tail /etc/php.ini zend_extension="opcache.so" |
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/cmake
cmake的可执行路径,如果配置了全局环境变量,可以直接使用cmake。
报错:configure: error: off_t undefined; check your library configuration
解决方法:
1 2 3 4 |
echo '/usr/local/lib64 /usr/local/lib /usr/lib /usr/lib64' >> /etc/ld.so.conf&&ldconfig -v |
编译错误 /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
安装完成之后,出现下面的安装路径:
1 2 |
[root@localhost phpredis-4.3.0RC1]# make install Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20180731/ |
配置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
安装完成之后,出现下面的安装路径:
1 2 |
[root@localhost swoole-src-4.2.13]# make install Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20180731/ |
配置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
1 2 3 4 |
<Directory /> AllowOverride none Require all granted </Directory> |
第三步:
增加一行AddType application/x-httpd-php .php
1 2 3 |
AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php |
第四步:
增加索引页index.php
在DirectoryIndex index.html后面 增加索引页index.php
1 |
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配置文件中是否加载
1 |
LoadModule php7_module modules/libphp7.so |
2.检查是否增加php
1 |
AddType application/x-httpd-php .php |
3.检查是否增加索引页index.php
1 |
DirectoryIndex index.html index.php |
踩坑记录
最好先装Apache,然后装mysql,最后装php,原因如下:
回到编译安装php,配置参数的时候(只列出个人觉得需要注意的)
–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(只列出个人觉得需要注意的)
//修改前最好备份
/* 找到
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 (只列出个人觉得需要注意的)
你配置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.自定义配置(不推荐)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
./configure \ --prefix=/usr/local/nginx \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --pid-path=/usr/local/nginx/conf/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi |
注:将临时文件目录指定为/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部分配置内容为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; # 修改1:这里新增了index.php index index.html index.htm index.php; # 修改2:这里新增url重写(path) try_files $uri $uri/ /index.php$is_args$args; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #修改3:解开php支持的注释 location ~ \.php$ { root html; #默认就使用php-fpm fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; #修改4:修改fastcig的路径 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } |
保存配置文件。
9.设置nginx开机自启动
设置nginx开机自启动
创建nginx启动命令脚本
vi /etc/init.d/nginx
插入以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
#!/bin/sh # # 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: /usr/local/nginx/conf/nginx.conf # pidfile: /usr/local/nginx/logs/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # 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:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -n "$user" ]; then 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 fi } 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 |
这个脚本来自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,发现报错信息为:
解决方案:
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 文件末尾:
1 2 3 4 |
CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.14 CATALINA_BASE=/usr/local/tomcat/apache-tomcat-9.0.14 PATH=$PATH:$CATALINA_BASE/bin export PATH CATALINA_BASE |
记得把路径修改为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
找到如下代码:
1 |
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> |
将其中的 8080 改成 HTTP 协议的默认端口 80,改后的代码如下:
1 |
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> |
(3)增加 manager-gui 图形化管理界面的访问权限(不需要的话,此步骤可忽略):
打开 tomcat 的用户配置文件 tomcat-users.xml:
vi /usr/local/tomcat/apache-tomcat-9.0.14/conf/tomcat-users.xml
在 </ tomcat-users>标签前加入如下代码:
1 |
<user username="tomcat" password="tomcat" roles="manager-gui"/> |
这里设置的 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. 前面加入如下代码:
1 2 |
JAVA_HOME=/usr/local/java/jdk1.8.0_201 JRE_HOME=$JAVA_HOME/jre |
键入 Esc 并输入“:wq!”保持并退出。
5. 启动Tomcat
(1)启动 tomcat 服务:
cd /usr/local/tomcat/apache-tomcat-9.0.14/bin/
./startup.sh
打印如下信息则表明启动 Tomcat 服务成功:
1 2 3 4 5 6 7 |
[root@localhost bin]# ./startup.sh Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat-9.0.16 Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat-9.0.16 Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-9.0.16/temp Using JRE_HOME: /usr/local/java/jdk1.8.0_201/jre Using CLASSPATH: /usr/local/tomcat/apache-tomcat-9.0.16/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-9.0.16/bin/tomcat-juli.jar Tomcat started. |
打开浏览器输入:http://localhost:8080 看看吧!如果出现了我们的可爱的“小黄猫”则表明我们的 Tomcat 已提供服务啦!
(2)关闭 tomcat 服务:
cd /usr/local/tomcat/apache-tomcat-9.0.14/bin/
./shutdown.sh
打印如下信息则表明关闭 Tomcat 服务成功:
1 2 3 4 5 6 |
[root@localhost bin]# ./shutdown.sh Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat-9.0.16 Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat-9.0.16 Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-9.0.16/temp Using JRE_HOME: /usr/local/java/jdk1.8.0_201/jre Using CLASSPATH: /usr/local/tomcat/apache-tomcat-9.0.16/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-9.0.16/bin/tomcat-juli.jar |
注意:不可连续执行多次 ./shutdown.sh 命令,多次后报如下错误:
6、将 tomcat 加入到系统服务列表中
(1)进入到 /etc/init.d 目录中:
cd /etc/init.d
创建 tomcat9 服务配置文件:
vi tomcat9
将如下代码加入写入到 tomcat9 配置文件中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/bash # description: Tomcat Start Stop Restart # processname: tomcat # chkconfig: 2345 20 80 JAVA_HOME=/usr/local/java/jdk1.8.0_201/ export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.16/ case $1 in start) sh $CATALINA_HOME/bin/startup.sh ;; stop) sh $CATALINA_HOME/bin/shutdown.sh ;; restart) sh $CATALINA_HOME/bin/shutdown.sh sh $CATALINA_HOME/bin/startup.sh ;; esac exit 0 |
键入 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>标签前,写入如下配置,密码账号根据自己爱好改,来获得页面的访问权限。
1 2 3 4 5 6 7 8 |
<role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="admin"/> <role rolename="admin-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager,manager-script,manager-jmx,manager-status"/> |
最后重启一下Tomcat。
配置好用户后重新启动tomcat ,发现:8080可以访问,但是进入:8080/manager/html页面还是报403访问受限,那可能是访问远程服务器Tomcat 9的管理页面,只需修改/usr/local/tomcat/apache-tomcat-9.0.16/webapps/manager/META_INF/context.xml文件,将文件中对访问的来源受限设置注释:
1 2 3 4 5 6 |
<Context antiResourceLocking="false" privileged="true" > <!--注释这里,去除对访问权限的设置--> <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />--> <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context> |
然后直接刷新页面就行了,无需重启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初始化脚本文件头部第四行的位置,追加下面两句
1 2 |
# chkconfig: 2345 90 10 # description: Redis is a persistent key-value database |
追加后效果如下:
上图红色框中就是追加的两行注释,添加完毕后进行保存,即可通过下面的命令将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.接下来就是解压,配置,安装
1 2 3 4 |
[root@vmqs88zm]# tar -zxvf git* [root@vmqs88zm]# cd git* [root@vmqs88zm]# ./configure --prefix=/usr/local/git [root@vmqs88zm]# make && make install |
4.配置全局环境变量
1 2 3 4 5 6 7 8 9 10 11 12 |
# 删除已有的 git yum remove git # 配置环境变量 vi /etc/profile # GIT_HOME GIT_HOME=/usr/local/git export PATH=$PATH:$GIT_HOME/bin # 刷新 source /etc/profile |
5.查看git版本
git --version
Composer安装
1 2 3 4 5 6 7 8 9 |
1、使用命令下载 curl -sS https://getcomposer.org/installer | php 2、下载之后设置环境变量 mv composer.phar /usr/local/bin/composer 3、(可选)修改权限,否则执行会出错 chmod -R 777 /usr/local/bin/composer |
安装Python3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# 安装依赖 yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum install -y libffi-devel zlib1g-dev yum install zlib* -y yum install wget -y # 下载Python3源码 wget https://www.python.org/ftp/python/3.8.6/Python-3.8.6.tar.xz tar -xvJf Python-3.8.6.tar.xz cd Python-3.8.6 # 编译安装 ./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl #第一个指定安装的路径,不指定的话,安装过程中可能软件所需要的文件复制到其他不同目录,删除软件很不方便,复制软件也不方便. #第二个可以提高python10%-20%代码运行速度. #第三个是为了安装pip需要用到ssl,后面报错会有提到. make && make install # 建立软连 ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3 # 更新pip版本 python3 -m pip install --upgrade pip # 验证 python3 -V pip3 -V |
修改pip安装源
修改系统pip安装源
在家目录下新建.pip
文件夹,进入文件夹新建文件pip.conf
之后写入相应镜像网站地址
1 2 3 4 5 6 7 8 |
cd ~ mkdir .pip cd .pip vim pip.conf #进入后添加以下内容,保存退出. [global] index-url = https://mirrors.aliyun.com/pypi/simple |
修改pipenv安装源
在自己的虚拟环境中找到Pipfile
文件,将其中的url = "https://pypi.org/simple"
修改为你需要的国内镜像,如https://mirrors.aliyun.com/pypi/simple/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@localhost myproject]# vim Pipfile [[source]] name = "pypi" url = "https://pypi.org/simple" # 改为url = "https://mirrors.aliyun.com/pypi/simple/" verify_ssl = true [dev-packages] #这里是开发环境专属包,使用pipenv install --dev package来安装专属开发环境的包 [packages] # 全部环境的通用包,安装在这里. [requires] python_version = "3.8" |
问题汇总
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