LNMP软件包上传:
yum install lrzsz -y

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: 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:
- 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
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
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、浏览器访问验证

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; #查看当前已有的数据库
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
- phpinfo();
- ?>
-
- systemctl restart httpd.service
-
- 浏览器访问
- http://192.168.119.20

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、网站访问

上传软件包:

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防火墙没有关闭。

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。

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,root@192.168.10.129
① 执行授权命令
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