当前位置:网站首页>源码编译安装LAMP和LNMP
源码编译安装LAMP和LNMP
2022-08-09 22:48:00 【wespten】
一、源码编译安装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 目录中,有大量的扩展:
[[email protected]_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
[[email protected]_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 [email protected]'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 [email protected]'%' identified by '你的密码';
参数:
其中*.* 的第一个*表示所有数据库名,第二个*表示所有的数据库表;
[email protected]'%' 中的root表示用户名,%表示ip地址,%也可以指定具体的ip地址,比如[email protected],[email protected]
① 执行授权命令
grant all privileges on *.* to [email protected]'%' 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
边栏推荐
猜你喜欢
随机推荐
JSON对象和字符串相互转化
781. 森林中的兔子
ECCV 2022 | Microsoft Open Source TinyViT: Pre-training Capabilities for Small Models
蔚来杯2022牛客暑期多校训练营7 CFGJ
The latest "Grain Academy Development Tutorial" in 2022: 10 - Front-end payment module
什么是平面文件数据库? 如何导入多种格式的文件:DSV、JSON、XML?
分布式数据库难题(二):数据复制
Digital wallets, red sea ecological rapid introduction of small programs can help capture device entry wisdom
Gold Warehouse Database KingbaseGIS User Manual (6.2. Management Functions)
金仓数据库 KingbaseGIS 使用手册(6.4. 几何对象存取函数)
KingbaseGIS Jin Cang database using manual (6.3. Geometric object creation function)
ECCV 2022 | 微软开源TinyViT :搞定小模型的预训练能力
Golden Warehouse Database KingbaseGIS User Manual (6.6. Geometric Object Verification Function, 6.7. Spatial Reference System Function)
conda新建环境时报错NotWritableError: The current user does not have write permissions
力扣:322. 零钱兑换
数据库优化 | 干货
【集训DAY3】中位数
软考 --- 软件工程(7)软件项目管理(下)
恭喜获奖得主 | 互动有礼获赠 Navicat Premium
Sqlserver restricts the ip under which accounts can access the database