经常使用命令:html
说在前面,若是不是root帐号,命令前要加sudo。python
安装软件的方法:mysql
1、安装iptableslinux
2、安装与配置VSFTPnginx
安装vsftpd:c++
配置vsftpd.confweb
#禁用匿名帐户
anonymous_enable=NOsql
#容许实体用户登陆
local_enable=YES数据库
#容许用户写入
write_enable=YESdjango
#限制用户上传文件的权限
local_umask=002
#启用用户列表
userlist_enable=YES
#在用户列表的用户将会禁止登陆(感受像是黑名单)
userlist_deny=YES
#用户列表的位置
userlist_file=/etc/vsftpd/user_list
#使用本地时间
use_localtime=YES
#若是文件夹中有.message,在该用户计入该文件夹时,将会显示其内容
dirmessage_enable=YES
#输出日志文件
xferlog_enable=YES
#输出传输端口为20
connect_from_port_20=YES
#日志格式化
xferlog_std_format=YES
#开启监听
listen=YES
#服务名称为vsftpd
pam_service_name=vsftpd
#支持TCP Wrapper
tcp_wrappers=YES
#登陆ftp时的欢迎词
banner_file=/etc/vsftpd/welcome.txt
修改新vsftpd.conf权限----(由于新建文件和原备份文件不一致)
# chmod 600 /etc/vsftpd/vsftpd.conf
建立welcome.txt欢迎词
# vi /etc/vsftpd/welcome.txt
~~~欢迎登陆WXH的FTP服务器~~~
添加和配置用户
配置chroot权限
#启用chroot。
chroot_local_user=YES
#启用chroot列表,这个列表中的用户不受chroot限制,能够进入其余目录,好比系统目录。
chroot_list_enable=YES
#列表的位置
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
#chroot_list是默认不存在的,须要本身创建。
# vi /etc/vsftpd/chroot_list
创建chroot_list文件------(能够为空,等因而chroot限制的一个白名单)
# vi /etc/vsftpd/chroot_list
测试ftp连接
# cp /etc/vsftpd/chroot_list /home/wangxihao
PS:此处只是为了增长一个标记。
# ftp localhost
输入用户名、密码,登陆成功。
ftp>ls /
此处显示的是刚才拷贝的chroot_list文件,则说明chroot限制生效。
遇到的问题
使用FileZilla,连接服务器出现如下错误“ Failed to retrieve directory listing ”
解决方法1:因我FileZilla默认是passive连接方式,修改成active便可
Site Manager>Transfer settings>Transfer mode,选Active
解决办法2:使vsftp支持passive
一、编辑vsftpd
# vi /etc/vsftpd/vsftpd.conf
加入如下4行:
#容许被动访问,端口50000--50003
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50003
port_enable=YES
二、在iptables添加50000~50003端口。
# vi /etc/sysconfig/iptables
加入如下:开放50000-50003端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 50000:50003 -j ACCEPT
三、重启vsftp和iptables
# systemctl restart vsftpd
# systemctl restart iptables
搞定!下一步是python django uwsgi nginx
3、安装Python、pip三、Django
安装Python、PIP
安装Django
要使修改生效,能够重启系统,或者执行
# source /etc/profile
# echo $PATH
建立Django项目
# cd /home/Django_Web
# django-admin startproject WXH_DJANGOWEB
修改Django项目配置
# cd WXH_DJANGOWEB\WXH_DJANGOWEB
# vi settings.py
在尾部添加一句:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
保存退出后更新应用配置,自动生成 static 目录
# ../manage.py collectstatic
运行django项目
# python /home/Django_Web/WXH_DJANGOWEB/manage.py runserver 0.0.0.0:8080
这是访问http://ip:8080 或 http://ip:8080/admin(个人8080端口是开放的),提示错误:ALLOWED_HOSTS
这里添加host白名单
# vi /home/Django_Web/WXH_DJANGOWEB/WXH_DJANGOWEB/settings.py
找到:ALLOWED_HOSTS = [ ]
修改:ALLOWED_HOSTS = ['*']
或改为:ALLOWED_HOSTS = ['你的IP']
或改为:ALLOWED_HOSTS = ['你的域名']
这样访问就没有问题了~~
存在一个小问题,当我开启runserver以后,关闭时按了CTRL+Z。当再次打开时,提示我端口占用。无奈之下,查找了一下如何解决
缘由:CTRL+C 是强制中断(关闭)。CTRL+Z 是中断,但若是任务没有结束就等因而挂起状态。
查找占用的端口:
# netstat -apn|grep 8080
显示“tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 32574/python ”
记住加粗的部分,就是进程号
杀死当前进程
# kill -9 32574
在运行runserver
# python /home/Django_Web/WXH_DJANGOWEB/manage.py runserver 0.0.0.0:8080
OK了~ 之后尽可能用CTRL+C关闭
安装uWSGI
安装nginx
#location /media {
# alias /path/to/your/mysite/media; # your Django project's media files - amend as required
#}
#location /static {
# alias /path/to/your/mysite/static; # your Django project's static files - amend as required
#}
# Finally, send all non-media requests to the Django server.
location / {
root /home/DJANGO_WEB/WXH_DJANGOWEB;
uwsgi_pass django;
include uwsgi_params; # the uwsgi_params file you installed
}
}
uwsgi 与 nginx 连接
# uwsgi --socket :8001 --wsgi-file /home/wangxihao/test/test.py
PS:test.py是以前安装uwsgi时创建的测试文件。
PS:nginx是启动状态,运行这条命令。
PS:浏览器访问80端口,显示 Hello World ,说明成功!
PS:这里socket:8001对应的是nginx配置文件中的127.0.0.1:8001。若是须要修改则一块儿修改,必须同步。
nginx 与 uwsgi 与 django 连接
# uwsgi --socket :8001 --module /home/Django_Web/WXH_DJANGOWEB/WXH_DJANGOWEB.wsgi
运行到这里,访问浏览器时,出现“Internal Server Error”--500错误
PS:推测1:是权限问题
uwsgi.ini配置
# vi django_uwsgi.ini
添加如下内容,须要的请本身修改。
# django_uwsgi.ini file
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir = /home/Django_Web/WXH_DJANGOWEB
# Django's wsgi file
module = WXH_DJANGOWEB.wsgi
# the virtualenv (full path)
# home = /path/to/virtualenv
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe)
# socket = /path/to/your/project/mysite.sock
socket = :8001
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
运行uwsgi.ini
# /usr/local/nginx/sbin/nginx -s reload
# uwsgi --ini django_uwsgi.ini
PS:到了这里“Internal Server Error”--500错误,本身消失了。
PS:访问浏览器80端口,卧槽!! 显示It worked! django 的It worked!
下一步是安装mysql
安装mysql
安装mysql
# yum install mysql mysql-devel mysql-server、
PS:CentOS7下解决yum install mysql-server没有可用包的问题
# cd /home/wangxihao
# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-server
启动mysql
# service mysqld start
# service mysqld stop
启动mysql(推荐): # systemctl start mysqld
开机启动: # systemctl enable mysqld
进入mysql配置用户密码
不要删除ROOT权限 妈蛋,初始化系统,从新再来!!
这里我删除了root帐号,请你们注意谨慎操做,必定要建立一个可用用户先。
mysql>delete from user where User!='root';
# mysql
PS:命令交行直接输入mysql,不须要密码直接进入mysql
mysql>select Host,User,Password from mysql.user;
mysql>delete from mysql.user where host!='localhost' user!='root';
mysql>UPDATE mysql.user SET Password=PASSWORD('password') where USER='root'
PS:只留下root的localhost权限
建立数据库并设置wangxihao帐号,在全部地方都而已访问指定数据库。
mysql>create database WXH_DJANGOWEB;
mysql>grant all on WXH_DJANGOWEB.* to 'wangxihao'@'%' identified by 'passw@rd';
刷新操做,当即生效。
mysql>flush privileges;
出现过的问题
在修改root密码时,输入的命令是:UPDATE mysql.user SET Password='passw@rd' where USER='root';
这样存在数据库password字段中的密码是没有加密的。而数据库读取密码时是解密读取。
因此怎么输入密码都是错误的。请你们注意。可是也有解决办法。
解决办法:
# systemctl stop mysqld
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
# mysql> UPDATE mysql.user SET Password=PASSWORD('newpassword') where USER='root';
# mysql>FLUSH PRIVILEGES;
# mysql>quit;
# systemctl start mysqld
# mysql -uroot -pnewpassword
晚上仍是还好好的,今早在登陆的时候外地客户端显示10061错误。
# systemctl stop mysqld,报错,要求看状态。
# systemctl start mysqld,也报错
# systemctl status mysqld,状态看不懂。哈哈
解决办法:
查看错误日志:
# mysql -uroot -p
# mysql> show variables like 'log_error';
PS:结果显示错误日志地址,个人是#/var/log/mysqld.log
# mysql>quit;
# vi /var/log/mysqld.log
PS,里面最后一行一直说mysqld_safe已经存在。“mysqld_safe A mysqld process already exists”
因而乎:
# ps -A|grep mysql
此时显示了3个mysql、mysqld、mysqld_safe,3个进程存在。
因而乎,我把他们3个杀死了 ……
# kill -9 XXXXX
以后,打开mysqld服务,一切正常。
# systemctl start mysqld
搞定!
连接mysql与Django
到这里基本环境就搭建好了~等写完一些功能,再传服务器,再继续更新