• 源码编译安装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:

    1. cd /usr/local/src
    2. yum install lrzsz -y
    3. wget 'http://nginx.org/download/nginx-1.14.2.tar.gz'
    4. tar -zxvf nginx-1.14.2.tar.gz
    5. 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.则执行:

    1. yum -y install openssl openssl-devel
    2. ./configure
    3. ./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、配置环境变量

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

    检查Nginx配置:

    nginx -t

    启动Nginx:

    nginx

    关闭Nginx:

    1. nginx -s stop
    2. pkill nginx

    7、使用systemctl管理Nginx

    1. vim /usr/lib/systemd/system/nginx.service
    2. [Unit]
    3. Description=nginx
    4. After=network.target
    5. [Service]
    6. Type=forking
    7. ExecStart=/usr/local/nginx/sbin/nginx
    8. [Install]
    9. WantedBy=multi-user.target
    10. ---
    11. [Unit]
    12. Description=nginx
    13. After=network.target
    14. [Service]
    15. Type=forking
    16. ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
    17. ExecStart=/usr/local/nginx/sbin/nginx
    18. ExecReload=/usr/local/nginx/sbin/nginx -s reload
    19. ExecStop=/usr/local/nginx/sbin/nginx -s stop
    20. PrivateTmp=true
    21. [Install]
    22. WantedBy=multi-user.target

    1. systemctl daemon-reload
    2. systemctl start nginx

    PHP编译安装

    Php官网:PHP: Hypertext Preprocessor

    1、yum配置

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

    1. yum -y install epel-release
    2. 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 

    1. cd /usr/local/src/
    2. wget 'http://hk1.php.net/distributions/php-5.6.40.tar.gz'
    3. tar -zxf php-5.6.40.tar.gz
    4. cd php-5.6.40
    5. ./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来安装,简单方便,坏处是第三方源多少有中不可靠的感觉。

    解决办法一:

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

     解决办法二:

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

    1. cd /usr/local/src
    2. wget http://softlayer.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
    3. tar -zxvf libmcrypt-2.5.8.tar.gz
    4. cd /usr/local/src/libmcrypt-2.5.8
    5. ./configure --prefix=/usr/local
    6. make
    7. 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,请先清除缓存:

    1. make clean
    2. make clean all
    3. # make distclean
    4. make && make install

     7、复制配置文件

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

    8、配置环境变量:

    1. vim /etc/profile
    2. export PATH=$PATH:/usr/local/php/sbin/:/usr/local/php/bin/
    3. source /etc/profile

     9、查看php加载模块

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

     10、使用systemctl管理php-fpm

    1. vim /usr/lib/systemd/system/php-fpm.service
    2. [Unit]
    3. Description=php
    4. After=network.target
    5. [Service]
    6. Type=forking
    7. ExecStart=/usr/local/php/sbin/php-fpm
    8. ExecStop=/bin/pkill -9 php-fpm
    9. PrivateTmp=true
    10. [Install]
    11. WantedBy=multi-user.target
    12. 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配置文件:

    1. vim /usr/local/nginx/conf/nginx.conf
    2. location / {
    3. root html;
    4. index index.html index.htm index.php;
    5. }
    6. location ~ \.php$ {
    7. root html;
    8. fastcgi_pass 127.0.0.1:9000;
    9. fastcgi_index index.php;
    10. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    11. include fastcgi_params;
    12. }
    13. php -m

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

    1.   echo "taobao zabbix";
    2. ?>

    额外补充:

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

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

    php常用的配置选项:

    1. –prefix[=PREFIX]:安装路径的前缀,可以自定义,例如 /tdata/soft/php。指定prefix,可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share,很凌乱。指定 prefix,直接删掉一个文件夹就够了。
    2. –with-config-file-path=PATH:设置 php.ini 的搜索路径。默认为 PREFIX/lib。
    3. –disable-short-tags:默认禁用短形式的开始标签
    4. --prefix指定php的安装目录
    5. --with-config-file-path指定php的配置文件位置
    6. --with-mysql、--with-mysqli让php可以操作mysql
    7. --enable-fpm主要是nginx要来调用php语言得使用php-fpm

    PHP 扩展:

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

    1. –enable-mbstring:开启 mbstring 多字节扩展
    2. with-gd[=DIR]:激活 GD 支持,可以指定扩展位置。编译 GD 库需要libpng 和 libjpeg。建议通过 sudo apt-get install php7.2-gd 或 yum install php72w-gt 安装。
    3. with-pear:安装 PEAR 扩展。
    4. with-zip[=DIR]:提供 zip 支持,[DIR]是 ZZIPlib 库安装路径。建议通过 通过 PECL 安装。
    5. 进程控制扩展:
    6. –enable-pcntl:开启 PCNTL 进程控制扩展,只能编译安装。
    7. 网络相关扩展:
    8. with-openssl[=DIR]:开启 OpenSSL 扩展,可以指定扩展位置
    9. –enable-ftp:开启 FTP 扩展
    10. with-curl:支持 cURL
    11. –enable-sockets:开启 socket 扩展
    12. –enable-soap:支持 SOAP
    13. –enable-fpm:激活 FPM 支持
    14. 数据库扩展:
    15. with-mysql=mysqlnd
    16. with-mysqli=mysqlnd
    17. with-pdo-mysql=mysqlnd
    18. with-mysql=/usr/bin/mysql_config
    19. with-mysqli=mysqlnd
    20. 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用户

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

    3、编译MySQL

    1. tar -zxvf mysql-5.7.19.tar.gz
    2. cd mysql-5.7.19
    3. 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

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

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

    4、MySQL安装

    make && make install

     

     5、MySQL数据库初始化

    1. cd /usr/local/src/mysql-5.7.19 也可以是usr/local下的mysql
    2. cp support-files/mysql.server /etc/init.d/mysqld
    3. chmod a+x /etc/init.d/mysqld
    1. vim /etc/my.cnf
    2. [mysqld]
    3. bind-address=0.0.0.0
    4. port=3306
    5. datadir=/data/mysql
    6. user=mysql
    7. skip-name-resolve
    8. long_query_time=2
    9. slow_query_log_file=/data/mysql/mysql-slow.log
    10. expire_logs_days=2
    11. innodb-file-per-table=1
    12. innodb_flush_log_at_trx_commit = 2
    13. log_warnings = 1
    14. max_allowed_packet = 512M
    15. connect_timeout = 60
    16. net_read_timeout = 120
    17. [mysqld_safe]
    18. log-error=/data/mysql/mysqld.log
    19. pid-file=/data/mysql/mysqld.pid
    20. cd /usr/local/mysql/
    21. chown -R mysql:mysql /usr/local/mysql /data/mysql/
    22. ​​mysqld --initialize --user=mysql

    6、配置环境变量

    1. vim /etc/profile
    2. export PATH=$PATH:/usr/local/mysql/bin/
    3. source /etc/profile
    4. mysql --version
    5. 或者做个软链
    6. ln -s /usr/local/mysql/bin/* /usr/sbin/
    7. ln -s /usr/local/mysql/bin/* /usr/bin/

    7、systemctl管理mysql

    1. vim /usr/lib/systemd/system/mysqld.service
    2. [Unit]
    3. Description=mysqld
    4. After=network.target
    5. [Service]
    6. Type=forking
    7. ExecStart=/etc/init.d/mysqld start
    8. [Install]
    9. WantedBy=multi-user.target
    10. systemctl start mysqld

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

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

    8、验证Mysql是否启动

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

    9、mysql的安全认证

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

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

    mysql -uroot -h 127.0.0.1 -A

    mysql加密码:

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

    mysql授权某ip登录:

    1. GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.237.%' IDENTIFIED BY 'zabbixpwd' WITH GRANT OPTION;
    2. 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

    1. mysql -h 127.0.0.1 -uroot -ppwd -A
    2. //不要用这方式,直接grant all insert into mysql.user(Host,User,Password) values("127.0.0.1","ccattackuser",password("ccattackuser123"));
    3. //flush privileges;
    4. mysql -h localhost -uccattackuser -pccattackuser123 -A;
    5. mysql -h 127.0.0.1 -uccattackuser -pccattackuser123 -A;
    6. create database ccattack character set utf8 collate utf8_bin;
    7. grant all privileges on ccattack.* to ccattackuser@'127.0.0.1' identified by 'ccattackuser123';
    8. flush privileges;
    9. set names utf8;
    10. use ccattack;
    11. source /usr/local/src/zabbix-4.0.3/database/mysql/data.sql;
    12. show databases;
    13. use ccattack;
    14. show tables;
    15. show columns from users;
    16. select * from users
    17. SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
    18. source不管用直接复制CREATE TABLE `users` (
    19. `id` int(11) NOT NULL auto_increment,
    20. `name` varchar(100) NOT NULL,
    21. `age` int(3) NOT NULL,
    22. `email` varchar(100) NOT NULL,
    23. PRIMARY KEY (`id`)
    24. );
    25. 到mysql>
    1. 修改config.php
    2. $databaseHost = '127.0.0.1';
    3. $databaseName = 'ccattack';
    4. $databaseUsername = 'ccattackuser';
    5. $databasePassword = 'ccattackuser123';
    6. $mysqli = mysqli_connect($databaseHost, $databaseUsername, $databasePassword, $databaseName);
    7. http://192.73.1.47/ccattack/index.php
    8. nginx
    9. php-fpm
    10. nginx
    11. nginx -s stop
    12. php-fpm
    13. service mysqld start
    14. service mysqld stop
    15. iptables -I INPUT -p tcp --dport 80 -j ACCEPT

     

     

     11、卸载mysql

     首先需要检查MySQL的状态:

    systemctl status mysqld

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

    1. systemctl stop mysqld
    2. systemctl disable mysqld

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

    find / -name mysql

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

    删除mysql用户:

    1. id mysql
    2. userdel mysql

    二、源码编译安装LAMP

    编译安装Apache

    httpd服务主要目录和文件:

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

    httpd.conf配置文件参数:

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

    1、关闭防火墙

    1. systemctl stop firewalld
    2. systemctl disable firewalld
    3. setenforce 0

    2、安装环境依赖包

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

    3、配置软件模块

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

    4、编译安装:

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

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

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

    6、 添加httpd系统服务:

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

    7、修改httpd 服务配置文件

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

    8、浏览器访问验证

    编译安装MySQL

    1、安装环境依赖包

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

    2、配置软件模块

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

    3、编译及安装

    make -j 2 && make install

    4、创建mysql用户

    useradd -M -s /sbin/nologin  mysql

    5 修改mysql 配置文件

    1. vim /etc/my.cnf #删除原配置项,再重新添加下面内容
    2. [client] #客户端设置
    3. port = 3306
    4. socket=/usr/local/mysql/mysql.sock
    5. [mysqld] #服务全局设置
    6. user = mysql #设置管理用户
    7. basedir=/usr/local/mysql #指定数据库的安装目录
    8. datadir=/usr/local/mysql/data #指定数据库文件的存储路径
    9. port = 3306 #指定端口
    10. character-set-server=utf8 #设置服务器字符集编码格式为utf8
    11. pid-file = /usr/local/mysql/mysqld.pid #指定pid 进程文件路径
    12. socket=/usr/local/mysql/mysql.sock #指定数据库连接文件
    13. bind-address = 0.0.0.0 #设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
    14. skip-name-resolve #禁用DNS解析
    15. max_connections=2048 #设置mysql的最大连接数
    16. default-storage-engine=INNODB #指定默认存储引擎
    17. max_allowed_packet=16M #设置数据库接收的数据包大小的最大值
    18. server-id = 1 #指定服务ID号
    19. 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安装目录和配置文件的属主属组

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

    7、设置路径环境变量

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

    8、初始化数据库

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

    9、添加mysqld系统服务

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

    10、修改mysql 的登录密码

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

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

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

    编译安装PHP

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

    1. yum -y install \
    2. gd \
    3. libjpeg libjpeg-devel \
    4. libpng libpng-devel \
    5. freetype freetype-devel \
    6. libxml2 libxml2-devel \
    7. zlib zlib-devel \
    8. curl curl-devel \
    9. openssl openssl-devel

    2、配置软件模块

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

    3、 编译及安装

    make -j2 && make install

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

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

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

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

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

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

    7、验证PHP测试页

    1. rm -rf /usr/local/httpd/htdocs/index.html
    2. vim /usr/local/httpd/htdocs/index.php
    3. phpinfo();
    4. ?>
    5. systemctl restart httpd.service
    6. 浏览器访问
    7. http://192.168.119.20

    整合crud项目 

    1、创建一个数据库

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

    2、解压论坛压缩包

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

    3、上传站点更新包

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

    4、 更改论坛目录属主

    1. #切换论坛目录
    2. cd /usr/local/httpd/htdocs/bbs
    3. #更改论坛目录属主(httpd安装若改配置文件为apache,则下方命令将daemon改为apache,并创建apache用户)
    4. chown -R daemon ./config
    5. chown -R daemon ./data
    6. chown -R daemon ./uc_client
    7. 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、配置环境变量

    1. vim /etc/profile
    2. export JAVA_HOME=/usr/qinTools/jdk1.8.0_121
    3. export PATH=$JAVA_HOME/bin:$PATH
    4. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
    5. 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 , 常用查看日志:

    1. 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

    参数说明:

    1. --initialize 初始化mysql,创建mysql的root, 随机生成密码。记住密码,登录msyql使用
    2. --user 执行msyqld 命令的linux用户名
    3. --datadir : mysql数据文件的存放位置,目录位置参照本机的设置
    4. --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目录下执行命令:

    1. ./mysql -uroot -p
    2. -u 表示使用root用户登录系统,使用第8步生成的密码。
    3. -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 文件路径  快捷方式路径:

    1. ln -s  /usr/lib/libncurses.so.5
    2. Or
    3. 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 '你的密码';

    参数:

    1. 其中*.* 的第一个*表示所有数据库名,第二个*表示所有的数据库表;
    2. 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
  • 相关阅读:
    `算法竞赛题解` `LeetCode` 1044. 最长重复子串
    数据结构——看完这篇保证你学会队列
    跨境必备!WhatsApp营销——注册、养号、防封号!
    OpenCV入门5——OpenCV的算术与位运算
    19.1 STL总述、发展史、组成与数据结构谈
    win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境
    Redis之Lua脚本
    java学习记录抽象类和接口
    3.2文法与语言
    程序化交易行情接口有哪些特点?
  • 原文地址:https://blog.csdn.net/qq_35029061/article/details/126251825