源码编译安装LAMP和LNMP

一、源码编译安装LNMP

LNMP软件包上传:

yum install lrzsz -y

Nginx编译安装

nginx用编译安装,依赖的gcc用yum安装,编译安装安装位置二进制文件都可以指定,yum默认安装不知道文件目录在哪,所有默认安装在/usr/local/目录下:

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

1、下载Nginx:

cd /usr/local/src
yum install lrzsz -y
wget 'http://nginx.org/download/nginx-1.14.2.tar.gz'
tar -zxvf nginx-1.14.2.tar.gz
cd nginx-1.14.2

2、检查系统环境是否满足编译环境:

./configure --prefix=/usr/local/nginx

3、编译安装 

make && make install

4、手动启动和关闭Nginx

/usr/local/nginx/sbin/nginx -V

5、nginx安装完毕后增加额外模块支持:

出现如图所示错误:

去nginx解压目录下执行:

./configure --with-http_ssl_module

如果报错 ./configure: error: SSL modules require the OpenSSL library.则执行:

yum -y install openssl openssl-devel
./configure
./configure --with-http_ssl_module

执行 make(切记不能 make install 会覆盖安装目录)。

将原来 nginx 备份:

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

将新的 nginx 覆盖旧安装目录:

cp objs/nginx /usr/local/nginx/sbin/nginx

如果报错,执行:

cp -rfp objs/nginx /usr/local/nginx/sbin/nginx

测试 nginx 是否正确:

/usr/local/nginx/sbin/nginx -t

6、配置环境变量

vim /etc/profile 
export PATH=$PATH:/usr/local/nginx/sbin/  //把下面粘贴到最后
source /etc/profile

检查Nginx配置:

nginx -t

启动Nginx:

nginx

关闭Nginx:

nginx -s stop
pkill nginx

7、使用systemctl管理Nginx

vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
[Install]
WantedBy=multi-user.target
---
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl start nginx

PHP编译安装

Php官网:PHP: Hypertext Preprocessor

1、yum配置

linux很多扩展包在epel仓库中:

yum -y install epel-release
yum -y install  gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel openldap openldap-devel libmcrypt libmcrypt-devel

2、下载编译php 

cd /usr/local/src/
wget 'http://hk1.php.net/distributions/php-5.6.40.tar.gz'
tar -zxf php-5.6.40.tar.gz
cd php-5.6.40
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-ctype --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-fpm

 

3、安装php

4、mcrypt.h not found. Please reinstall libmcrypt” 问题处理

有两种方法解决,一种是使用第三方源,这样还可以使用yum来安装,简单方便,坏处是第三方源多少有中不可靠的感觉。

解决办法一:

wget http://www.atomicorp.com/installers/atomic
sh ./atomic
yum  install  php-mcrypt  libmcrypt  libmcrypt-devel 

 解决办法二:

使用php mcrypt 前必须先安装Libmcrypt,libmcrypt源码安装方法:

cd /usr/local/src
wget http://softlayer.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
tar -zxvf libmcrypt-2.5.8.tar.gz
cd /usr/local/src/libmcrypt-2.5.8
./configure --prefix=/usr/local
make
make install

5、configure: error: Don’t know how to define struct flock on this system, set –enable-opcache=no

yum groupinstall "Development Tools"

6、如果想重新安装php,请先清除缓存:

make clean
make clean all
# make distclean
make && make install

 7、复制配置文件

cp php.ini-production /usr/local/php/etc/php.ini
准确的应该是: /usr/local/php/php.ini

8、配置环境变量:

vim /etc/profile
export PATH=$PATH:/usr/local/php/sbin/:/usr/local/php/bin/

source /etc/profile

 9、查看php加载模块

mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
检查配置文件:php-fpm -t
php --ini

 10、使用systemctl管理php-fpm

vim /usr/lib/systemd/system/php-fpm.service

[Unit]
Description=php
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
ExecStop=/bin/pkill -9 php-fpm
PrivateTmp=true
[Install]
WantedBy=multi-user.target


systemctl start php-fpm

11、php-fpm自启动

systemctl enable php.service

将php服务添加至开机启动。执行enable命令后,会自动创建一个软接/etc/systemd/system/multi-user.target.wants/php.service指向此文件。

查看php是否已设置为开机启动:
 

systemctl is-enabled php.service

12、nginx+php-fpm结合的配置

 nginx的默认配置无法处理php程序,修改nginx配置文件:

vim /usr/local/nginx/conf/nginx.conf

location / {
            root   html;
            index  index.html index.htm index.php;
        }
location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }


php -m 

php程序/usr/local/nginx/html/test.php:

<?php
  echo "taobao zabbix";
?>

额外补充:

PHP 源码的 ext 目录中,有大量的扩展:

[root@VM_139_38_centos php-7.2.12]# ls
acinclude.m4      configure.ac     libtool             modules                   README.NEW-OUTPUT-API             scripts
aclocal.m4        CONTRIBUTING.md  LICENSE             NEWS                      README.PARAMETER_PARSING_API      server-tests-config.php
appveyor          CREDITS          ltmain.sh           pear                      README.REDIST.BINS                server-tests.php
build             ext              main                php7.spec                 README.RELEASE_PROCESS            snapshot
buildconf         EXTENSIONS       makedist            php7.spec.in              README.SELF-CONTAINED-EXTENSIONS  stamp-h.in
buildconf.bat     footer           Makefile            php.gif                   README.STREAMS                    tests
CODING_STANDARDS  generated_lists  Makefile.frag       php.ini-development       README.SUBMITTING_PATCH           travis
config.guess      genfiles         Makefile.fragments  php.ini-production        README.TESTING                    TSRM
config.log        header           Makefile.gcov       README.EXT_SKEL           README.TESTING2                   UPGRADING
config.nice       include          Makefile.global     README.GIT-RULES          README.UNIX-BUILD-SYSTEM          UPGRADING.INTERNALS
config.status     INSTALL          Makefile.objects    README.input_filter       README.WIN32-BUILD-SYSTEM         vcsclean
config.sub        install-sh       missing             README.MAILINGLIST_RULES  run-tests.php                     win32
configure         libs             mkinstalldirs       README.md                 sapi                              Zend
[root@VM_139_38_centos php-7.2.12]# ls ext/
bcmath      dba                 filter   imap       mysqli   pcre          pdo_pgsql   recode      soap      sysvsem    xmlrpc
bz2         dom                 ftp      interbase  mysqlnd  pdo           pdo_sqlite  reflection  sockets   sysvshm    xmlwriter
calendar    enchant             gd       intl       oci8     pdo_dblib     pgsql       session     sodium    tidy       xsl
com_dotnet  exif                gettext  json       odbc     pdo_firebird  phar        shmop       spl       tokenizer  zend_test
ctype       ext_skel            gmp      ldap       opcache  pdo_mysql     posix       simplexml   sqlite3   wddx       zip
curl        ext_skel_win32.php  hash     libxml     openssl  pdo_oci       pspell      skeleton    standard  xml        zlib
date        fileinfo            iconv    mbstring   pcntl    pdo_odbc      readline    snmp        sysvmsg   xmlreader

php常用的配置选项:

–prefix[=PREFIX]:安装路径的前缀,可以自定义,例如 /tdata/soft/php。指定prefix,可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share,很凌乱。指定 prefix,直接删掉一个文件夹就够了。
–with-config-file-path=PATH:设置 php.ini 的搜索路径。默认为 PREFIX/lib。
–disable-short-tags:默认禁用短形式的开始标签

--prefix指定php的安装目录
--with-config-file-path指定php的配置文件位置
--with-mysql、--with-mysqli让php可以操作mysql
--enable-fpm主要是nginx要来调用php语言得使用php-fpm

PHP 扩展:

每个扩展对应的选项,需要在具体的扩展文档里找。大部分可以安装 PHP 之后再安装。

–enable-mbstring:开启 mbstring 多字节扩展
–with-gd[=DIR]:激活 GD 支持,可以指定扩展位置。编译 GD 库需要libpng 和 libjpeg。建议通过 sudo apt-get install php7.2-gd 或 yum install php72w-gt 安装。
–with-pear:安装 PEAR 扩展。
–with-zip[=DIR]:提供 zip 支持,[DIR]是 ZZIPlib 库安装路径。建议通过 通过 PECL 安装。

进程控制扩展:
–enable-pcntl:开启 PCNTL 进程控制扩展,只能编译安装。

网络相关扩展:
–with-openssl[=DIR]:开启 OpenSSL 扩展,可以指定扩展位置
–enable-ftp:开启 FTP 扩展
–with-curl:支持 cURL
–enable-sockets:开启 socket 扩展
–enable-soap:支持 SOAP
–enable-fpm:激活 FPM 支持

数据库扩展:
–with-mysql=mysqlnd
–with-mysqli=mysqlnd
–with-pdo-mysql=mysqlnd

–with-mysql=/usr/bin/mysql_config 
–with-mysqli=mysqlnd 
–with-pdo-mysql=mysqlnd

MySQL编译安装

MySQL官网:MySQL

1、安装依赖

yum install -y gcc gcc-c++ make tar openssl openssl-devel cmake ncurses ncurses-devel

2、创建MySQL用户

useradd -s /sbin/nologin mysql /useradd -g www -s /sbin/nologin -M www
cd /usr/local/src

3、编译MySQL

tar -zxvf mysql-5.7.19.tar.gz
cd mysql-5.7.19

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mysqldata/ -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost_1_59_0

注意:编译出错, 重新编译前要删除编译失败的文件,重新编译时,需要清除旧的对象文件和缓存信息。

make clean
rm -f CMakeCache.txt
rm -rf /etc/my.cnf #删除系统默认的配置文件

4、MySQL安装

make && make install

 

 5、MySQL数据库初始化

cd /usr/local/src/mysql-5.7.19 也可以是usr/local下的mysql
cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
vim /etc/my.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
datadir=/data/mysql
user=mysql
skip-name-resolve
long_query_time=2
slow_query_log_file=/data/mysql/mysql-slow.log
expire_logs_days=2
innodb-file-per-table=1
innodb_flush_log_at_trx_commit = 2
log_warnings = 1
max_allowed_packet      = 512M
connect_timeout = 60
net_read_timeout = 120

[mysqld_safe]
log-error=/data/mysql/mysqld.log
pid-file=/data/mysql/mysqld.pid

cd /usr/local/mysql/
chown -R mysql:mysql /usr/local/mysql /data/mysql/

​​mysqld --initialize --user=mysql

6、配置环境变量

vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin/
source /etc/profile
mysql --version
或者做个软链
ln -s /usr/local/mysql/bin/* /usr/sbin/
ln -s /usr/local/mysql/bin/* /usr/bin/

7、systemctl管理mysql

vim /usr/lib/systemd/system/mysqld.service

[Unit]
Description=mysqld
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/mysqld start
[Install]
WantedBy=multi-user.target

systemctl start mysqld

 安装的时候软件自动生成的mysqld.service文件:

[Unit]
Description=MySQL Community ServerAfter=network.target
After=syslog.target
[Install]
WantedBy=multi-user.targetAlias=mysql.service
[Service]
User=mysql
Group=mysql
#systemctl status就是根据pid来判断服务的运行状态的
PIDFile=/var/run/mysqld/mysqld.pid
# 以root权限来启动程序
PermissionsStartOnly=true
# 设置程序启动前的必要操作。例如初始化相关目录等等
ExecStartPre=/usr/bin/mysql-systemd-start pre
# 启动服务
ExecStart=/usr/bin/mysqld_safe
# Don't signal startup success before a ping works
ExecStartPost=/usr/bin/mysql-systemd-start post
# Give up if ping don't get an answer
TimeoutSec=600
#Restart配置可以在进程被kill掉之后,让systemctl产生新的进程,避免服务挂掉
Restart=always
PrivateTmp=false

8、验证Mysql是否启动

查看进程 ps auxf|grep mysql
查看监听 netstat -tulnp|grep mysql

9、mysql的安全认证

mysql能限制ip访问、访问需要用户名密码、mysql权限还能再细分。

默认让127.0.0.1访问,用户名root,不需要密码:

mysql -uroot -h 127.0.0.1 -A

mysql加密码:

mysqladmin -h 127.0.0.1 -u root password 'pwd'
mysql -h 127.0.0.1 -uroot -ppwd -A

mysql授权某ip登录:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.237.%' IDENTIFIED BY 'zabbixpwd' WITH GRANT OPTION;

flush privileges;

网络登录mysql:

mysql -h 192.168.237.49 -uroot -ppwd -A

10、crud项目整合

crud项目:GitHub - rorystandley/mysql-crud-php-oop: a CRUD class for MySQL using OOP in PHP

mysql -h 127.0.0.1 -uroot -ppwd -A
//不要用这方式,直接grant all insert into mysql.user(Host,User,Password) values("127.0.0.1","ccattackuser",password("ccattackuser123"));
//flush privileges;
mysql -h localhost -uccattackuser -pccattackuser123 -A;
mysql -h 127.0.0.1 -uccattackuser -pccattackuser123 -A;
create database ccattack character set utf8 collate utf8_bin;
grant all privileges on ccattack.* to ccattackuser@'127.0.0.1' identified by 'ccattackuser123';
flush privileges;
set names utf8;
use ccattack;
source /usr/local/src/zabbix-4.0.3/database/mysql/data.sql;
show databases;
use ccattack;
show tables;
show columns from users;
select * from users
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
source不管用直接复制CREATE TABLE `users` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(100) NOT NULL,
  `age` int(3) NOT NULL,
  `email` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`)
);
到mysql>中
修改config.php
$databaseHost = '127.0.0.1';
$databaseName = 'ccattack';
$databaseUsername = 'ccattackuser';
$databasePassword = 'ccattackuser123';
$mysqli = mysqli_connect($databaseHost, $databaseUsername, $databasePassword, $databaseName);

http://192.73.1.47/ccattack/index.php
nginx
php-fpm
nginx
nginx -s stop
php-fpm
service mysqld start
service mysqld stop
iptables -I INPUT -p tcp --dport 80 -j ACCEPT

 

 

 11、卸载mysql

 首先需要检查MySQL的状态:

systemctl status mysqld

 关闭MySQL服务并设置开机不自启:

systemctl stop mysqld
systemctl disable mysqld

 搜索相关配置文件并删除:

find / -name mysql

rm -rf /etc/selinux/targeted/active/modules/100/mysql /usr/lib64/mysql /usr/local/mysql /var/lib/mysql
# 以下删除的内容,如果存在的话,删除
rm -rf /etc/my.cnf*
rm -rf /etc/init.d/mysqld 

删除mysql用户:

id mysql
userdel mysql

二、源码编译安装LAMP

编译安装Apache

httpd服务主要目录和文件:

服务目录:/usr/local/httpd/
主配置文件:/usr/local/httpd/conf/httpd.conf
网页目录:/usr/local/httpd/htdocs/
服务脚本:/usr/local/httpd/bin/apachectl
执行程序:/usr/local/httpd/bin/httpd
访问日志:/usr/local/httpd/log/access_log
错误日志:/usr/local/httpd/log/error_log

httpd.conf配置文件参数:

ServerRoot:服务目录
Listen:监听的IP地址、端口号 
User:运行服务的用户身份 
Group:运行服务的组身份 
ServerAdmin:管理员邮箱
ServerName:网站服务器的域名 
DocumentRoot:网页文档的根目录 
Directorylndex:默认的索引页文件 
ErrorLog:设置错误日志文件的路径
LogLevel:记录日志的级别,默认为warn
CustomLog:访问日志文件的位置 
PidFile:保存httpd进程PID号的文件
·AddDefaultCharset:设置站点中网页默认的字符集编码 
Timeout:网络连接超时,默认为300秒 KeepAlive:是否保持连接,可选On或Off
MaxKeepAliveRequests:每次连接最多请求文件数 KeepAliveTimeout:保持连接状态时的超时时间 
Include:需要包含进来的其他配置文件

1、关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2、安装环境依赖包

yum -y install \
gcc \                           #C语言的编译器
gcc-c++ \                       #C++的编译器
make \                          #源代码编译器(源代码转换成二进制文件)
pcre \                          #pcre是一个Perl函数库,包括perl 兼容的正则表达式库
pcre-devel \                    #perl的接口开发包
expat-devel \                   #用于支持网站解析HTML、XML文件
perl                            #perl语言编译
 
或
yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl

3、配置软件模块

cd /opt/
tar zxvf apr-1.6.2.tar.gz
tar zxvf apr-util-1.6.0.tar.gz
tar jxvf httpd-2.4.29.tar.bz2
 
mv apr-1.6.2 /opt/httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 /opt/httpd-2.4.29/srclib/apr-util
 
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \ #指定将 httpd 服务程序的安装路径
--enable-so \               #启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力
--enable-rewrite \          #启用网页地址重写功能,用于网站优化、防盗链及目录迁移维护
--enable-charset-lite \     #启动字符集支持,以便支持使用各种字符集编码的页面
--enable-cgi                #启用CGI(通用网关接口)脚本程序支持,便于网站的外部扩展应用访问能力
 或
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

4、编译安装:

make -j3 && make install          #make -j3  表示开3核同时进行编译

5、优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别:

ln -s /usr/local/httpd/conf/httpd.conf /etc/
ln -s /usr/local/httpd/bin/* /usr/local/bin/

6、 添加httpd系统服务:

方法1:
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd   #用于service服务管理
chmod +x /etc/init.d/httpd
vi /etc/init.d/httpd                  #在第一行后插入新行,添加此三行内容
# chkconfig: 35 85 21                 #35级别自动运行  第85个启动 第21个关闭
# description: Apache is a World Wide Web server
 
chkconfig --add httpd                 #将httpd服务加入到service管理器
 
systemctl start httpd.service
或
service httpd start
 
方法2:
 
vim /lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server              #描述
After=network.target                            #描述服务类别
[Service]
Type=forking                                    #后台运行方式
PIDFile=/usr/local/httpd/logs/httpd.pid         #PID文件位置
ExecStart=/usr/local/bin/apachectl $OPTIONS     #启动服务
ExecReload=/bin/kill -HUP $MAINPID              #根据PID重载配置
[Install]
WantedBy=multi-user.target
 
systemctl start httpd.service
systemctl enable httpd.service

7、修改httpd 服务配置文件

vim /etc/httpd.conf
--52行--修改
Listen 192.168.223.10:80
--201行--取消注释,修改
ServerName 192.168.223.10:80
 
--225行--默认首页存放路径
DocumentRoot "/usr/local/httpd/htdocs"
--259行--默认首页文件名设置
DirectoryIndex index.html
 
httpd -t  或 apachectl -t      #检查配置文件的配置项是否有误
cat /usr/local/httpd/htdocs/index.html
systemctl restart httpd.service

8、浏览器访问验证

编译安装MySQL

1、安装环境依赖包

yum -y install \
gcc \
gcc-c++ \
ncurses \           #字符终端下图形互动功能的动态库
ncurses-devel \     #ncurses开发包
bison \             #语法分析器
cmake               #mysql需要用cmake编译安装
 
或
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake

2、配置软件模块

tar zxvf mysql-5.7.17.tar.gz
tar zxvf boost_1_59_0.tar.gz
 
cd /opt
mv boost_1_59_0 /usr/local/boost    #重命名
 
cd /opt/mysql-5.7.17/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \           #指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \     #指定mysql进程监听套接字文件(数据库连接文件)的存储路径           
-DSYSCONFDIR=/etc \                                 #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \                #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \                           #指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \               #指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \                         #指定支持其他字符集编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \                  #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \                   #安装ARCHIVE存储引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \                 #安装BLACKHOLE存储引擎 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \                #安装FEDERATED存储引擎 
-DMYSQL_DATADIR=/usr/local/mysql/data \             #指定数据库文件的存储路径
-DWITH_BOOST=/usr/local/boost \                     #指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1                                    #生成便于systemctl管理的文件

3、编译及安装

make -j 2 && make install

4、创建mysql用户

useradd -M -s /sbin/nologin  mysql

5 修改mysql 配置文件

vim /etc/my.cnf                           #删除原配置项,再重新添加下面内容
[client]                                  #客户端设置
port = 3306
socket=/usr/local/mysql/mysql.sock      
 
[mysqld]                                  #服务全局设置
user = mysql                              #设置管理用户
basedir=/usr/local/mysql                  #指定数据库的安装目录
datadir=/usr/local/mysql/data             #指定数据库文件的存储路径
port = 3306                               #指定端口
character-set-server=utf8                 #设置服务器字符集编码格式为utf8
pid-file = /usr/local/mysql/mysqld.pid    #指定pid 进程文件路径
socket=/usr/local/mysql/mysql.sock        #指定数据库连接文件
bind-address = 0.0.0.0                    #设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
skip-name-resolve                         #禁用DNS解析
max_connections=2048                      #设置mysql的最大连接数
default-storage-engine=INNODB             #指定默认存储引擎
max_allowed_packet=16M                    #设置数据库接收的数据包大小的最大值
server-id = 1                             #指定服务ID号
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

6、更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql    #赋值
chown mysql:mysql /etc/my.cnf   #更改属组和属主
ll /usr/local/mysql

7、设置路径环境变量

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile	
#设置路径环境变量,追加到全局环境变量中
 
source /etc/profile   #刷新全局变量

8、初始化数据库

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \				#生成初始化密码为空
--user=mysql \                      #指定管理用户
--basedir=/usr/local/mysql \        #指定数据库的安装目录
--datadir=/usr/local/mysql/data		#指定数据库文件的存储路径

9、添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/		#用于systemctl服务管理
systemctl daemon-reload         #刷新识别     
systemctl start mysqld.service  #开启服务
systemctl enable mysqld         #开机自启动
netstat -anpt | grep 3306       #查看端口

10、修改mysql 的登录密码

mysqladmin -u root -p password "123456" 	#给root账号设置密码为123456,提示输入的是原始密码(为空)

11、授权远程登录,然后quit退出

mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
#授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限
 
show databases;			#查看当前已有的数据库

编译安装PHP

1、安装GD库和GD库关联程序,用来处理和生成图片

yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

2、配置软件模块

cd /opt
tar zxvf php-7.1.24.tar.gz
 
cd /opt/php-7.1.24/
./configure \
--prefix=/usr/local/php7 \							#指定将 PHP 程序的安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \			#指定Apache httpd服务提供的apxs 模块支持程序的文件位置
--with-mysql-sock=/usr/local/mysql/mysql.sock \		#指定mysql 数据库连接文件的存储路径
--with-config-file-path=/usr/local/php7				#设置 PHP 的配置文件 php.ini 将要存放的位置
--with-mysqli \										#添加 MySQL 扩展支持 #mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定
--with-zlib \										#支持zlib功能,提供数据压缩
--with-curl \										#开启curl扩展功能,实现HTTP的Get下载和Post请求的方法
--with-gd \											#激活gd 库的支持
--with-jpeg-dir \									#激活jpeg 的支持
--with-png-dir \									#激活png 的支持
--with-freetype-dir \
--with-openssl \
--enable-mbstring \									#启用多字节字符串功能,以便支持中文等代码
--enable-xml \										#开启扩展性标记语言模块
--enable-session \									#会话
--enable-ftp \										#文本传输协议
--enable-pdo \										#函数库
--enable-tokenizer \								#令牌解释器
--enable-zip										#ZIP压缩格式

3、 编译及安装

make -j2 && make install

4、复制模版文件作为PHP 的主配置文件,并进行修改

cp /opt/php-7.1.24/php.ini-development /usr/local/php7/php.ini	
#在测试环境时使用php.ini-development文件,而在生产环境时使用php.ini-production文件
 
vim /usr/local/php7/php.ini
--939行--取消注释,修改
date.timezone = Asia/Shanghai
 
--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock

5、优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别

ln -s /usr/local/php7/bin/* /usr/local/bin/
php -m 			#查看PHP 加载了哪些模块

6、修改httpd服务的配置文件,让apache支持PHP

vim /etc/httpd.conf 
--397行--插入以下内容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
 
--260行--修改首页文件名设置
DirectoryIndex index.html index.php
 
---160行检查支持php7的模块是否存在------
LoadModule php7_module        modules/libphp7.so

7、验证PHP测试页

rm -rf /usr/local/httpd/htdocs/index.html
vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>
 
systemctl restart httpd.service
 
浏览器访问
http://192.168.119.20

整合crud项目 

1、创建一个数据库

mysql -u root -p
 
mysql> CREATE DATABASE bbs;
#把bbs数据库里面所有表的权限授予给bbsuser,并设置密码
 
mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY '123456';
 
#刷新数据库
mysql>flush privileges;

2、解压论坛压缩包

#解压论坛压缩包
unzip Discuz_X2.5_SC_UTF8.zip -d /opt/dis

3、上传站点更新包

cd /opt/dis/dis_SC_UTF8/
#上传站点更新包
cp -r upload/ /usr/local/httpd/htdocs/bbs

4、 更改论坛目录属主

#切换论坛目录
cd /usr/local/httpd/htdocs/bbs
 
#更改论坛目录属主(httpd安装若改配置文件为apache,则下方命令将daemon改为apache,并创建apache用户)
chown -R daemon ./config
chown -R daemon ./data
chown -R daemon ./uc_client
chown -R daemon ./uc_server/data

5、网站访问

三、源码编译安装JDK和MySQL、Tomcat

上传软件包:

源码编译安装JDK

1、解压jdk

tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/qinTools

 2、配置环境变量

vim /etc/profile
export JAVA_HOME=/usr/qinTools/jdk1.8.0_121
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar

source  /etc/profile 

注意:

当出现bash: source: 未找到命令...

可能是linux防火墙没有关闭。

源码编译安装tomcat

1、解压缩:

tar  -zxvf  apache-tomcat-8.5.16.tar.gz  -C  /usr/qinSoft/

2、启动/关闭Tomcat

tomcat解压缩后就可以使用了,用cd命令切换到tomcat主目录下的bin目录。

tomcat目录结构:

bin的目录结构: 

① 启动方式,执行tomcat安装目录/bin/startup.sh

在tomcat安装目录/bin下执行:

./startup.sh 

② 关闭tomcat:执行tomcat安装目录/bin/shutdown.sh

在tomcat安装目录/bin下执行:

./shutdown.sh

关闭tomcat命令也可以用:kill -9 端口号。 

3、日志 

控制台输出的日志文件(在eclippse中的console窗口的内容),查看此文件。可以使用cat , more , less , grep , 常用查看日志:

tail  -f  catalina.out

用户浏览器访问tomcat端口号:http://192.168.xx.zz:8080/)tomcat接收到的http请求日志。tomcat服务器上运行的web应用接收的请求,请求方式(get,post),请求地址,请求参数(get请求),处理是否成功都在此文件记录。

文件命名:localhost_access_log_yyyy-MM-dd.log。 

源码编译安装MySQL

1、检查系统是否安装了mariadb数据库

检查linux是否安装了mariadb数据库,mariadb数据库是mysql的分支。是免费开源的。mariadb和msyql会有冲突。首先要检查安装了mariadb, 卸载掉。

检查命令:

yum list installed | grep mariadb

 2、卸载mariadb

若linux中安装了mariadb数据库,先卸载掉,mariadb数据库可能与安装mysql发生冲突。

其中mariadb-libs.x86_64是上一步搜索出来的mariadb软件包,不同机器可能不一样, -y参数确认删除。

执行命令:

yum -y remove mariadb-libs.x86_64

3、解压Mysql

解压下载的mysql软件压缩包。

在压缩包所在qinSoft目录下执行命令:

tar  -zxvf  mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz  -C  /usr/qinTools/

data文件夹是mysql用来存放数据库文件的,数据库的表数据都放在data目录。

默认没有data目录,可以手工创建data目录,在mysql-5.7.18文件夹目录下创建一个data文件夹,切换到mysql-5.7.18目录,执行创建文件夹命令。

 

4、 创建用户并初始化MySQL

创建mysql用户,用来执行MySQL的命令mysqld ,此命令用来初始化msyql基础信息。

执行命令:

useradd  mysql

使用mysql的 mysqld 命令初始化数据库的基本信息。

切换到mysql-5.7.18/bin目录下执行命令(注意下面的命令是在一行执行的):

./mysqld --initialize --user=mysql --datadir=/usr/qinTools/mysql-5.7.18/data --basedir=/usr/qinTools/mysql-5.7.18

参数说明:

--initialize 初始化mysql,创建mysql的root, 随机生成密码。记住密码,登录msyql使用
--user 执行msyqld 命令的linux用户名
--datadir : mysql数据文件的存放位置,目录位置参照本机的设置
--basedir : msyql安装程序的目录,目录位置参照本机的设置

该命令执行后,会生成一个临时的mysql数据库root用户的密码,请先拷贝出来记住,后续第一次登录mysql需要使用执行初始化命令(一行执行)。

5、 启用安全功能

在服务器与客户机之间来回传输的所有数据进行加密。通过证书提供了身份验证机制,mysql命令程序,mysql_ssl_rsa_setup提供了开启数据加密功能,生成数字证书。

在mysql-5.7.18/bin目录下执行命令:

./mysql_ssl_rsa_setup --datadir=/usr/qinTools/mysql-5.7.18/data

6、修改mysql安装目录的权限

mysql安装后,需要更改mysql-5.7.18整个文件夹目录权限,更改所属的用户和组(之前创建的mysql用户):

chown  -R  mysql:mysql  /usr/qinTools/mysql-5.7.18/

7、 启动MySQL

启动MySQL服务,mysql-5.7.18/bin目录下执行命令:./mysqld_safe &(其中 & 符号表示后台启动),输入命令后按Enter。

mysqld_safe程序会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它。用mysqld_safe程序来启动MySQL服务器的做法在unix/linux系统上很常见。

 

8、 使用mysql客户端进入mysql

登录进入mysql,mysql-5.7.18/bin目录下执行命令:

./mysql -uroot -p
-u 表示使用root用户登录系统,使用第8步生成的密码。
-p 表示使用密码登录

例如:mysql-5.7.18/bin下执行 ./mysql -uroot -p 然后Enter, 在提示符下输入密码。

异常案例:

./mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

解决后重新执行上面的登录mysql命令./mysql -uroot -p

如果还是报该错误,执行find / -name 'libncurses*'

在/usr/lib、/lib、/usr/lib64中寻找一个大于或者等于该依赖版本的依赖文件,我的是在/usr/lib中找到一个libncurses.so.5和在/usr/lin64中找到了一个libncurses.so.6.1。

 

然后建立一个软链接(相当于快捷方式):ln -s 文件路径  快捷方式路径:

ln -s  /usr/lib/libncurses.so.5
Or
ln -s /usr/lib64/libncurses.so.6.1 /usr/lib64/libncurses.so.5

这样就在/usr/lib64下建立了一个libncurses.so.5的快捷方式。mysql在启动时就会寻找libncurses.so.5依赖的快捷方式,最后实际链接到了libncurses.so.6.1依赖再次执行./mysql -uroot -p  这下OK了,可以正常登录MySQL了。

9、修改root密码

root用户密码是临时的,我们得完成修改密码才能使用MySQL。

执行sql语句 show databases; 第一次使用将会提示修改mysql的root用户密码:

修改mysql的密码,命令语法:

alter user '用户名'@'主机域名或ip' identified by '新密码'

10、 授权远程访问

授权远程访问,在没有授权之前只能在本机访问msyql, 远程授权就是让其他计算机通过网络访问mysql(这样远程客户端才能访问)。

语法:

grant all privileges on *.* to root@'%' identified by '你的密码';

参数:

其中*.* 的第一个*表示所有数据库名,第二个*表示所有的数据库表;
root@'%' 中的root表示用户名,%表示ip地址,%也可以指定具体的ip地址,比如root@localhost,[email protected]

① 执行授权命令

grant all privileges on *.* to root@'%' identified by '你的密码';

②更新权限信息,执行flush刷新权限

flush  privileges;

11、 关闭MySQL服务

① 在msyql客户端,执行exit退出msyql自己的客户端:

 ②关闭,停止mysql服务器

mysql-5.7.18/bin目录下执行: 

./mysqladmin -uroot -p shutdown

 回车,输入密码关闭。

查看mysql进程,已经没有mysqld_safe:

12、 乱码问题

jdbc.url=jdbc:mysql://linux:3306/crm?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/126251825